QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
HestonProcess Class Reference

Square-root stochastic-volatility Heston process. More...

#include <hestonprocess.hpp>

+ Inheritance diagram for HestonProcess:
+ Collaboration diagram for HestonProcess:

Public Types

enum  Discretization {
  PartialTruncation , FullTruncation , Reflection , NonCentralChiSquareVariance ,
  QuadraticExponential , QuadraticExponentialMartingale , BroadieKayaExactSchemeLobatto , BroadieKayaExactSchemeLaguerre ,
  BroadieKayaExactSchemeTrapezoidal
}
 
- Public Types inherited from Observer
typedef set_type::iterator iterator
 

Public Member Functions

 HestonProcess (Handle< YieldTermStructure > riskFreeRate, Handle< YieldTermStructure > dividendYield, Handle< Quote > s0, Real v0, Real kappa, Real theta, Real sigma, Real rho, Discretization d=QuadraticExponentialMartingale)
 
Size size () const override
 returns the number of dimensions of the stochastic process More...
 
Size factors () const override
 returns the number of independent factors of the process More...
 
Array initialValues () const override
 returns the initial values of the state variables More...
 
Array drift (Time t, const Array &x) const override
 returns the drift part of the equation, i.e., \( \mu(t, \mathrm{x}_t) \) More...
 
Matrix diffusion (Time t, const Array &x) const override
 returns the diffusion part of the equation, i.e. \( \sigma(t, \mathrm{x}_t) \) More...
 
Array apply (const Array &x0, const Array &dx) const override
 
Array evolve (Time t0, const Array &x0, Time dt, const Array &dw) const override
 
Real v0 () const
 
Real rho () const
 
Real kappa () const
 
Real theta () const
 
Real sigma () const
 
const Handle< Quote > & s0 () const
 
const Handle< YieldTermStructure > & dividendYield () const
 
const Handle< YieldTermStructure > & riskFreeRate () const
 
Time time (const Date &) const override
 
Real pdf (Real x, Real v, Time t, Real eps=1e-3) const
 
- Public Member Functions inherited from StochasticProcess
 ~StochasticProcess () override=default
 
virtual Array expectation (Time t0, const Array &x0, Time dt) const
 
virtual Matrix stdDeviation (Time t0, const Array &x0, Time dt) const
 
virtual Matrix covariance (Time t0, const Array &x0, Time dt) const
 
void update () override
 
- Public Member Functions inherited from Observer
 Observer ()=default
 
 Observer (const Observer &)
 
Observeroperator= (const Observer &)
 
virtual ~Observer ()
 
std::pair< iterator, boolregisterWith (const ext::shared_ptr< Observable > &)
 
void registerWithObservables (const ext::shared_ptr< Observer > &)
 
Size unregisterWith (const ext::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void update ()=0
 
virtual void deepUpdate ()
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 

Private Member Functions

Real varianceDistribution (Real v, Real dw, Time dt) const
 

Private Attributes

Handle< YieldTermStructureriskFreeRate_
 
Handle< YieldTermStructuredividendYield_
 
Handle< Quotes0_
 
Real v0_
 
Real kappa_
 
Real theta_
 
Real sigma_
 
Real rho_
 
Discretization discretization_
 

Additional Inherited Members

- Protected Member Functions inherited from StochasticProcess
 StochasticProcess ()=default
 
 StochasticProcess (ext::shared_ptr< discretization >)
 
- Protected Attributes inherited from StochasticProcess
ext::shared_ptr< discretizationdiscretization_
 

Detailed Description

Square-root stochastic-volatility Heston process.

This class describes the square root stochastic volatility process governed by

\[ \begin{array}{rcl} dS(t, S) &=& \mu S dt + \sqrt{v} S dW_1 \\ dv(t, S) &=& \kappa (\theta - v) dt + \sigma \sqrt{v} dW_2 \\ dW_1 dW_2 &=& \rho dt \end{array} \]

Definition at line 46 of file hestonprocess.hpp.

Member Enumeration Documentation

◆ Discretization

Enumerator
PartialTruncation 
FullTruncation 
Reflection 
NonCentralChiSquareVariance 
QuadraticExponential 
QuadraticExponentialMartingale 
BroadieKayaExactSchemeLobatto 
BroadieKayaExactSchemeLaguerre 
BroadieKayaExactSchemeTrapezoidal 

Definition at line 48 of file hestonprocess.hpp.

Constructor & Destructor Documentation

◆ HestonProcess()

HestonProcess ( Handle< YieldTermStructure riskFreeRate,
Handle< YieldTermStructure dividendYield,
Handle< Quote s0,
Real  v0,
Real  kappa,
Real  theta,
Real  sigma,
Real  rho,
Discretization  d = QuadraticExponentialMartingale 
)

Definition at line 37 of file hestonprocess.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ size()

Size size ( ) const
overridevirtual

returns the number of dimensions of the stochastic process

Implements StochasticProcess.

Definition at line 56 of file hestonprocess.cpp.

◆ factors()

Size factors ( ) const
overridevirtual

returns the number of independent factors of the process

Reimplemented from StochasticProcess.

Definition at line 60 of file hestonprocess.cpp.

+ Here is the caller graph for this function:

◆ initialValues()

Array initialValues ( ) const
overridevirtual

returns the initial values of the state variables

Implements StochasticProcess.

Definition at line 66 of file hestonprocess.cpp.

◆ drift()

Array drift ( Time  t,
const Array x 
) const
overridevirtual

returns the drift part of the equation, i.e., \( \mu(t, \mathrm{x}_t) \)

Implements StochasticProcess.

Definition at line 70 of file hestonprocess.cpp.

+ Here is the caller graph for this function:

◆ diffusion()

Matrix diffusion ( Time  t,
const Array x 
) const
overridevirtual

returns the diffusion part of the equation, i.e. \( \sigma(t, \mathrm{x}_t) \)

Implements StochasticProcess.

Definition at line 83 of file hestonprocess.cpp.

◆ apply()

Array apply ( const Array x0,
const Array dx 
) const
overridevirtual

applies a change to the asset value. By default, it returns \( \mathrm{x} + \Delta \mathrm{x} \).

Reimplemented from StochasticProcess.

Definition at line 104 of file hestonprocess.cpp.

◆ evolve()

Array evolve ( Time  t0,
const Array x0,
Time  dt,
const Array dw 
) const
overridevirtual

returns the asset value after a time interval \( \Delta t \) according to the given discretization. By default, it returns

\[ E(\mathrm{x}_0,t_0,\Delta t) + S(\mathrm{x}_0,t_0,\Delta t) \cdot \Delta \mathrm{w} \]

where \( E \) is the expectation and \( S \) the standard deviation.

Reimplemented from StochasticProcess.

Definition at line 396 of file hestonprocess.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ v0()

Real v0 ( ) const

Definition at line 77 of file hestonprocess.hpp.

◆ rho()

Real rho ( ) const

Definition at line 78 of file hestonprocess.hpp.

◆ kappa()

Real kappa ( ) const

Definition at line 79 of file hestonprocess.hpp.

◆ theta()

Real theta ( ) const

Definition at line 80 of file hestonprocess.hpp.

◆ sigma()

Real sigma ( ) const

Definition at line 81 of file hestonprocess.hpp.

◆ s0()

const Handle< Quote > & s0 ( ) const

Definition at line 552 of file hestonprocess.cpp.

+ Here is the caller graph for this function:

◆ dividendYield()

const Handle< YieldTermStructure > & dividendYield ( ) const

Definition at line 556 of file hestonprocess.cpp.

◆ riskFreeRate()

const Handle< YieldTermStructure > & riskFreeRate ( ) const

Definition at line 560 of file hestonprocess.cpp.

◆ time()

Time time ( const Date ) const
overridevirtual

returns the time value corresponding to the given date in the reference system of the stochastic process.

Note
As a number of processes might not need this functionality, a default implementation is given which raises an exception.

Reimplemented from StochasticProcess.

Definition at line 564 of file hestonprocess.cpp.

◆ pdf()

Real pdf ( Real  x,
Real  v,
Time  t,
Real  eps = 1e-3 
) const

Definition at line 360 of file hestonprocess.cpp.

+ Here is the call graph for this function:

◆ varianceDistribution()

Real varianceDistribution ( Real  v,
Real  dw,
Time  dt 
) const
private

Definition at line 569 of file hestonprocess.cpp.

+ Here is the caller graph for this function:

Member Data Documentation

◆ riskFreeRate_

Handle<YieldTermStructure> riskFreeRate_
private

Definition at line 96 of file hestonprocess.hpp.

◆ dividendYield_

Handle<YieldTermStructure> dividendYield_
private

Definition at line 96 of file hestonprocess.hpp.

◆ s0_

Handle<Quote> s0_
private

Definition at line 97 of file hestonprocess.hpp.

◆ v0_

Real v0_
private

Definition at line 98 of file hestonprocess.hpp.

◆ kappa_

Real kappa_
private

Definition at line 98 of file hestonprocess.hpp.

◆ theta_

Real theta_
private

Definition at line 98 of file hestonprocess.hpp.

◆ sigma_

Real sigma_
private

Definition at line 98 of file hestonprocess.hpp.

◆ rho_

Real rho_
private

Definition at line 98 of file hestonprocess.hpp.

◆ discretization_

Discretization discretization_
private

Definition at line 99 of file hestonprocess.hpp.