Category Archives: SV Models

Introducing XGBM — a new solvable stochastic volatility model having a stationary distribution

I have posted a new research paper to the arXiv titled “Exact Solutions for a GBM-type Stochastic Volatility Model having a Stationary Distribution”. The article may be found here.

Let me explain the title and motivation. The most popular stochastic volatility model is certainly the Heston ’93 model. Its virtues are that it is exactly solvable and it has some very nice features: a mean-reverting, stochastic volatility process  that can be negatively correlated with equity returns. This process has the well-known “square-root model” form

\displaystyle \mbox{Heston:} \quad d v_t = (\omega - \theta v_t) \, dt + \xi \,\sqrt{ v_t} \, dW_t,


where  v_t is the instantaneous variance rate of the asset in question. We could also write this evolution in terms of the instantaneous volatility \sigma_t = \sqrt{v_t}. However, time series analysis of the volatility of broad-based indices, such as the S&P500 index, suggests that a better specification would have  d \sigma_t \sim \xi \sigma_t dW_t, which is a geometric Brownian motion (GBM)-type volatility. Taking  d \sigma_t = \xi \sigma_t dW_t is the well-known SABR model. The problem with that one is that the volatility is not mean-reverting and does not admit a stationary density \psi(\sigma). To get a stationary density, you need a mean-reverting drift term. Also, it would be very nice to also have a model that has exact solutions. The XGBM model may be the first to combine all these properties. It is a standard bivariate model for the pair (S_t,\sigma_t), but here I’m just going to write the volatility evolution, which is

\displaystyle \mbox{XGBM:} \quad d \sigma_t = \sigma_t (\omega - \theta \sigma_t) \, dt + \xi \, \sigma_t \, dW_t.


To see how this model is closer to the “real-world” than the Heston ’93 model, take a look at the figures at the end, which show Maximum Likelihood fits to a proxy series for \{\sigma_t\}. The proxy is the daily (annualized) volatility for the S&P500 taken from the Oxford-Man Institutes “realized library”. They maintain a number of estimators — I am using a basic one (rv5) which is simply the daily (intraday) volatility using 5-minute log-return observations. I am using all the data available at the time of this study, which is January 3, 2000 – September 28, 2018 (4705 volatility observations). The first figure shows this volatility time series. You can see there is a maximum of around 140% which is the annualized volatility at the height of the 2007-2008 Financial Crisis.

The next figures show the stationary volatility fits. For these histograms, I am using the annualized volatility in decimal (not percent), so the time series maximum is a histogram entry at \sigma \approx 1.4. That small bump is not really visible, but you can see it is accounted for by the axis extension out to that value.

As one can see, the visual fit is better for XGBM vs. Heston, with corresponding log-likelihoods:  5356 (Heston) vs 5920 (XGBM). In fact, the fit is even better (LL = 6055) for the figure labeled “GARCH -3/2 model”, which is the stationary density corresponding to both the GARCH diffusion model and the 3/2-model. In any event, the point of the exercise is to motivate my new paper and interested readers may find it at the link above.

Stationary volatility density fits for three models

Calibration of the GARCH Diffusion Model

The GARCH diffusion model  is one of the running examples of bivariate stochastic volatility models in my first book. (Others include the well-known Heston ’93 model and the so-called 3/2-model). As with most finance models, it comes in two versions: a real-world (aka P-measure) version and a risk-neutral (aka Q-measure) version. The latter is used to value options.

For equity applications, the stochastic process pair is \{S_t,v_t\}. Here  S_t \ge 0 is a stock price and v_t = \sigma_t^2 > 0 is the associated stochastic variance rate. Then, the risk-neutral version, as an SDE (stochastic differential equation) system, reads

\displaystyle \left \{ \begin{array}{l}dS_t = (r-q) S_t dt + \sigma_t S_t dB_t,  \\d v_t = \kappa (\bar{v} - v_t) + \xi \, v_t \, dW_t, \quad dB_t \, dW_t = \rho \, dt. \end{array}\right. \quad\quad\quad\quad\quad (1)

It’s a very simple and natural model which, unfortunately, lacks  exact solutions for option values or transition densities. To determine the unknown parameters in (1), one needs to calculate option prices (numerically) and fit the model to option chains, a procedure generally called “calibration”. To do this efficiently and accurately for this model (and many others) requires a PDE approach. (There have been some earlier calibrations of this model via Monte Carlo).

The lack of an efficient — or, apparently, any — PDE calibration for this model prompted Yiannis Papadopoulos and me to perform one. Our methods and first results were recently posted on the arXiv:

A First Option Calibration of the GARCH Diffusion Model by a PDE Method

Yiannis’ own announcement may be found in his blog here. You will also find at that link a free downloadable GARCH diffusion calibrator demo that Yiannis has developed. (Windows executable). You can run it on a sample option chain that he supplies, and see a calibration in well under a minute (11 seconds on my desktop). Or you can run it on your own data, simply by imitating the provided data file format.