Main Content

Bates stochastic volatility model

The `bates`

function creates a `bates`

object, which represents a Bates model.

The Bates model is a bivariate composite model that derives from the `heston`

object. The Bates model is composed of two coupled and dissimilar
univariate models, each driven by a single Brownian motion source of risk and a single
compound Poisson process representing the arrivals of important events over
`NPeriods`

consecutive observation periods. The Bates model
approximates continuous-time Bates stochastic volatility processes.

The first univariate model is a `GBM`

model with a stochastic
volatility function and a stochastic jump process, and usually corresponds to a price
process whose variance rate is governed by the second univariate model. The second model
is a Cox-Ingersoll-Ross (`CIR`

) square root diffusion model that
describes the evolution of the variance rate of the coupled `GBM`

price
process.

Bates models are bivariate composite models. Each Bates model consists of two coupled univariate models:

A geometric Brownian motion (

`gbm`

) model with a stochastic volatility function and jumps.$$d{X}_{1t}=B(t){X}_{1t}dt+\sqrt{{X}_{2t}}{X}_{1t}d{W}_{1t}+Y(t){X}_{1t}d{N}_{t}$$

This model usually corresponds to a price process whose volatility (variance rate) is governed by the second univariate model.

A Cox-Ingersoll-Ross (

`cir`

) square root diffusion model.$$d{X}_{2t}=S(t)[L(t)-{X}_{2t}]dt+V(t)\sqrt{{X}_{2t}}d{W}_{2t}$$

This model describes the evolution of the variance rate of the coupled Bates price process.

create a `Bates`

= bates(`Return`

,`Speed`

,`Level`

,`Volatility`

,`JumpFreq`

,`JumpMean`

,`JumpVol`

)`bates`

object with the default options.

Since Bates models are bivariate models composed of coupled univariate models, all required inputs correspond to scalar parameters. Specify required inputs as one of two types:

MATLAB

^{®}array. Specify an array to indicate a static (non-time-varying) parametric specification. This array fully captures all implementation details, which are clearly associated with a parametric form.MATLAB function. Specify a function to provide indirect support for virtually any static, dynamic, linear, or nonlinear model. This parameter is supported by an interface because all implementation details are hidden and fully encapsulated by the function.

**Note**

You can specify combinations of array and function input
parameters as needed. Moreover, a parameter is identified as a
deterministic function of time if the function accepts a scalar time
`t`

as its only input argument. Otherwise, a
parameter is assumed to be a function of time *t*
and state
*X*_{t}
and is invoked with both input arguments.

sets Properties using name-value pair arguments in
addition to the input arguments in the preceding syntax. Enclose each
property name in quotes.`Bates`

= bates(___,`Name,Value`

)

The `bates`

object has the following Properties:

`StartTime`

— Initial observation time`StartState`

— Initial state at time`StartTime`

`Correlation`

— Access function for the`Correlation`

input argument`Drift`

— Composite drift-rate function`Diffusion`

— Composite diffusion-rate function`Simulation`

— A simulation function or method

`simByEuler` | Simulate Bates sample paths by Euler approximation |

`simByQuadExp` | Simulate Bates, Heston, and CIR sample paths by quadratic-exponential discretization scheme |

`simulate` | Simulate multivariate stochastic differential equations (SDEs) |

`simByTransition` | Simulate Bates sample paths with transition density |

The Bates model (Bates 1996) is an extension of the Heston model and adds not only stochastic volatility, but also the jump diffusion parameters as in Merton (1976) were also added to model sudden asset price movements.

Under the risk-neutral measure the model is expressed as follows

$$\begin{array}{l}d{S}_{t}=(\gamma -q-{\lambda}_{p}{\mu}_{j}){S}_{t}dt+\sqrt{{\upsilon}_{t}}{S}_{t}d{W}_{t}+J{S}_{t}d{P}_{t}\\ d{\upsilon}_{t}=\kappa (\theta -{\upsilon}_{t})dt+{\sigma}_{\upsilon}\sqrt{{\upsilon}_{t}}d{W}_{t}^{\upsilon}\\ \text{E}\left[d{W}_{t}d{W}_{t}^{\upsilon}\right]=pdt\\ \text{prob}(d{P}_{t}=1)={\lambda}_{p}dt\end{array}$$

Here:

ᵞ is the continuous risk-free rate.

*q* is the continuous dividend yield.

*J* is the random percentage jump size conditional on the jump
occurring, where

$$\mathrm{ln}(1+J)~N(\text{ln(1+}{u}_{j})-\frac{{\delta}^{2}}{2},{\delta}^{2}$$

(1+*J*) has a lognormal distribution:

$$\frac{1}{(1+J)\delta \sqrt{2\pi}}\text{exp}\left\{\frac{-{\left[\mathrm{ln}(1+J)-(\text{ln(1+}{\mu}_{j})-\frac{{\delta}^{2}}{2}\right]}^{2}}{2{\delta}^{2}}\right\}$$

Here:

μ_{j} is the mean of
*J*(μ_{j} > -1).

ƛ_{p} is the annual frequency (intensity) of
the Poisson process *P*_{t}
(ƛ_{p} ≥ 0).

υ is the initial variance of the underlying asset (υ_{0} >
0).

θ is the long-term variance level (θ > 0).

κ is the mean reversion speed for the variance (κ > 0).

σ_{υ} is the volatility of volatility
(σ_{υ} > 0).

*p* is the correlation between the Weiner processes
*W*_{t} and
*W*_{t}^{υ}
(-1 ≤ *p* ≤ 1).

The "Feller condition" ensures positive variance: (2κθ >
σ_{υ}^{2}).

The stochastic volatility along with the jump help better model the asymmetric leptokurtic features, the volatility smile, and the large random fluctuations such as crashes and rallies.

[1] Aït-Sahalia, Yacine. “Testing
Continuous-Time Models of the Spot Interest Rate.” *Review of Financial
Studies* 9, no. 2 ( Apr. 1996): 385–426.

[2] Aït-Sahalia, Yacine.
“Transition Densities for Interest Rate and Other Nonlinear Diffusions.” *The
Journal of Finance* 54, no. 4 (Aug. 1999): 1361–95.

[3] Glasserman, Paul.
*Monte Carlo Methods in Financial Engineering*. New York:
Springer-Verlag, 2004.

[4] Hull, John C.
*Options, Futures and Other Derivatives*. 7th ed, Prentice
Hall, 2009.

[5] Johnson, Norman Lloyd, Samuel
Kotz, and Narayanaswamy Balakrishnan. *Continuous Univariate
Distributions*. 2nd ed. Wiley Series in Probability and Mathematical
Statistics. New York: Wiley, 1995.

[6] Shreve, Steven E.
*Stochastic Calculus for Finance*. New York: Springer-Verlag,
2004.

`simByEuler`

| `merton`

| `simulate`