Main Content

roughheston

Rough Heston model

Since R2024b

Description

Creates and displays a roughheston object.

Use roughheston to create a rough Heston stochastic volatility model. Rough Heston models are bivariate composite models, composed of two coupled and dissimilar univariate models, each driven by a single Brownian motion source of risk over NPERIODS consecutive observation periods, approximating continuous-time rough Heston stochastic volatility processes.

The first univariate model is a geometric Brownian motion (GBM) model with a stochastic volatility function, and usually corresponds to a price process whose variance rate is governed by the second univariate model. The second model incorporates the fractional Brownian motion (fBm) into a Cox-Ingersoll-Ross (CIR) square root diffusion process that describes the evolution of the variance rate of the coupled GBM price process.

Creation

Description

RoughHeston = roughheston(Return,Speed,Level,Volatility,Alpha) creates a default RoughHeston object with Properties for these required arguments.

Specify the required input parameters as one of the following types:

  • A MATLAB® array. Specifying an array indicates a static (non-time-varying) parametric specification. This array fully captures all implementation details, which are clearly associated with a parametric form.

  • A MATLAB function. Specifying a function provides indirect support for virtually any static, dynamic, linear, or nonlinear model. This parameter is supported through 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.

example

RoughHeston = roughheston(___,Name=Value) creates a RoughHeston object with additional options specified by one or more name-value arguments to set the properties.

example

Input Arguments

expand all

Expected (mean) instantaneous rate of return of the GBM price process, specified as an array, a numeric scalar, or a deterministic function of time as a function handle accepting scalar time t or as a function of time and state as scalar time t followed by a 2-by-1 bivariate state vector X(t).

Data Types: double | function_handle

Mean-reversion speed of the stochastic variance process, specified as an array or deterministic function of time.

If you specify Speed as an array, it must be a scalar value.

As a deterministic function of time, when Speed is called with a real-valued scalar time t as its only input, Speed must produce a scalar value.

Note

Although roughheston enforces no restrictions, the mean-reversion speed is usually nonnegative such that the underlying process reverts to some stable level.

Data Types: double | function_handle

Reversion level or long-run average of the stochastic variance process, specified as an array or deterministic function of time.

If you specify Level as an array, it must be a scalar value

As a deterministic function of time, when Level is called with a real-valued scalar time t as its only input, Speed must produce a scalar value.

Note

Although roughheston enforces no restrictions, the mean-reversion level is usually positive.

Data Types: double | function_handle

Instantaneous volatility of the stochastic variance process (often called the volatility of volatility or volatility of variance), specified as a scalar, or deterministic function of time.

If you specify Volatility as an array, it must be a scalar value.

As a deterministic function of time, when Volatility is called with a real-valued scalar time t as its only input, Volatility must produce a scalar.

Note

Although roughheston enforces no restrictions, the Volatility is usually nonnegative.

Data Types: double | function_handle

Kernel function parameter representing the roughness index, specified as numeric scalar. The value of Alpha must be in the range (-0.5 to 0). The corresponding fractional Brownian motion (fBm) is defined with Hurst index H = Alpha + 0.5.

Data Types: double

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: RoughHeston = roughheston(Return,Speed,Level,Volatility,Alpha,Correlation=0.02)

Starting time of the first observation, applied to all state variables, specified as a scalar.

Data Types: double

Initial values of the state variables on all trials, specified as a scalar, column vector, or matrix.

  • If StartState is a scalar, roughheston applies the same initial value to all state variables on all trials.

  • If StartState is a 2-by-1 column vector, roughheston applies a unique initial value to each state variable on all trials.

  • If StartState is a 2-by-NTRIALS matrix, roughheston applies a unique initial value to each state variable on each NTRIALS trials.

Data Types: double

Correlation between Gaussian random variates drawn to generate the bivariate Brownian motion vector (Wiener processes), specified as numeric scalar, a 2-by-2 positive semidefinite matrix, or a deterministic function C(t) that accepts the current time t and returns a 2-by-2 positive semidefinite correlation matrix. If Correlation is not a symmetric positive semidefinite matrix, use nearcorr to create a positive semidefinite matrix for a correlation matrix.

A Correlation matrix represents a static condition.

As a deterministic function of time, Correlation allows you to specify a dynamic correlation structure.

Data Types: double

User-defined simulation function or SDE simulation method, specified as a function or SDE simulation method. The default is an Euler approximation (simByEuler).

Data Types: function_handle

Properties

expand all

Starting time of the first observation, applied to all state variables, returned as a scalar.

Data Types: double

Initial values of the state variables, returned as a scalar, column vector, or matrix.

Data Types: double

Correlation between Gaussian random variates drawn to generate the Brownian motion vector (Wiener processes), returned as a scalar or positive semidefinite matrix.

Data Types: double

Expected (mean) instantaneous rate of return of the GBM price process, returned as an array, a numeric scalar, or a deterministic function of time as a function handle, or as a function of time and state.

Data Types: double | function_handle

Mean-reversion speed of the stochastic variance process, returned as an array or deterministic function of time.

Data Types: double | function_handle

Reversion level or long-run average of the stochastic variance process, returned as an array or deterministic function of time.

Data Types: double | function_handle

Instantaneous volatility of the stochastic variance process (often called the volatility of volatility or volatility of variance), returned as a scalar or deterministic function of time.

Data Types: double | function_handle

Kernel function parameter representing the roughness index, returned as a numeric scalar.

Data Types: double

Object Functions

simByEulerSimulate RVM, roughbergomi, or roughheston sample paths by Euler approximation

Examples

collapse all

The roughheston object is a bivariate composite model, composed of two coupled and dissimilar univariate models, each driven by a single Brownian motion source of risk over NPERIODS consecutive observation periods, approximating continuous-time rough Heston stochastic volatility processes.

Create a roughheston object.

Return = 0.1;
Speed = 0.2;
Level = 0.1;
Volatility = 0.05;
Alpha = -0.03;

roughHestonObj = roughheston(Return,Speed,Level,Volatility,Alpha)
roughHestonObj = 
   Class ROUGHHESTON: Rough Heston Stochastic Volatility
   -----------------------------------------------------
     Dimensions: State = 2, Brownian = 2
   -----------------------------------------------------
      StartTime: 0
     StartState: 1 (2x1 double array) 
    Correlation: 2x2 diagonal double array 
         Return: 0.1
          Speed: 0.2
          Level: 0.1
     Volatility: 0.05
          Alpha: -0.03

More About

expand all

Algorithms

The rough Heston model is a type of stochastic volatility model, which means it assumes that the volatility of the underlying asset is not constant but varies over time and is not necessarily correlated with the asset price.

dXt=B(t)Xtdt+YtXtdWtYt=Y0+1Γ(α+1)0t(ts)ακ(θYs)ds+1Γ(α+1)0t(ts)ασYsdWs

where ɑ = – ½ and H is the Hurst exponent.

The first equation is a geometric Brownian motion model with a stochastic volatility function. By adding the Volterra kernel, the Heston stochastic volatility model allows for a rough behavior of the volatility.

The Brownian semistationary process (Yt in the general rough volatility model) has W as a two-sided Brownian motion providing the fundamental noise innovations where the amplitude is modulated by a stochastic volatility process that depends on W. This driving noise is then convolved with a deterministic kernel function g that specifies the dependence structure of Yt. The process Yt is also viewed as a moving average of volatility modulated Brownian noise and, when setting the volatility of volatility = 1, the stationary Brownian moving averages are nested in this class of processes.

References

[1] Euch, O. E. and M. Rosenbaum. “The Characteristic Function of Rough Heston.” Mathematical Finance. Vol. 29, No. 1 , 2019, pp. 3–38.

Version History

Introduced in R2024b