QuantLib
A free/open-source library for quantitative finance
Reference manual - version 1.12
Public Types | Public Member Functions | List of all members
GJRGARCHProcess Class Reference

Stochastic-volatility GJR-GARCH(1,1) process. More...

#include <ql/processes/gjrgarchprocess.hpp>

+ Inheritance diagram for GJRGARCHProcess:

Public Types

enum  Discretization { PartialTruncation, FullTruncation, Reflection }
 
- Public Types inherited from Observer
typedef std::set< boost::shared_ptr< Observable > > set_type
 
typedef set_type::iterator iterator
 

Public Member Functions

 GJRGARCHProcess (const Handle< YieldTermStructure > &riskFreeRate, const Handle< YieldTermStructure > &dividendYield, const Handle< Quote > &s0, Real v0, Real omega, Real alpha, Real beta, Real gamma, Real lambda, Real daysPerYear=252.0, Discretization d=FullTruncation)
 
Size size () const
 returns the number of dimensions of the stochastic process
 
Disposable< ArrayinitialValues () const
 returns the initial values of the state variables
 
Disposable< Arraydrift (Time t, const Array &x) const
 returns the drift part of the equation, i.e., \( \mu(t, \mathrm{x}_t) \)
 
Disposable< Matrixdiffusion (Time t, const Array &x) const
 returns the diffusion part of the equation, i.e. \( \sigma(t, \mathrm{x}_t) \)
 
Disposable< Arrayapply (const Array &x0, const Array &dx) const
 
Disposable< Arrayevolve (Time t0, const Array &x0, Time dt, const Array &dw) const
 
Real v0 () const
 
Real lambda () const
 
Real omega () const
 
Real alpha () const
 
Real beta () const
 
Real gamma () const
 
Real daysPerYear () const
 
const Handle< Quote > & s0 () const
 
const Handle< YieldTermStructure > & dividendYield () const
 
const Handle< YieldTermStructure > & riskFreeRate () const
 
Time time (const Date &) const
 
- Public Member Functions inherited from StochasticProcess
virtual Size factors () const
 returns the number of independent factors of the process
 
virtual Disposable< Arrayexpectation (Time t0, const Array &x0, Time dt) const
 
virtual Disposable< MatrixstdDeviation (Time t0, const Array &x0, Time dt) const
 
virtual Disposable< Matrixcovariance (Time t0, const Array &x0, Time dt) const
 
void update ()
 
- Public Member Functions inherited from Observer
 Observer (const Observer &)
 
Observeroperator= (const Observer &)
 
std::pair< iterator, bool > registerWith (const boost::shared_ptr< Observable > &)
 
void registerWithObservables (const boost::shared_ptr< Observer > &)
 
Size unregisterWith (const boost::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void deepUpdate ()
 
- Public Member Functions inherited from Observable
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
void notifyObservers ()
 

Additional Inherited Members

- Protected Member Functions inherited from StochasticProcess
 StochasticProcess (const boost::shared_ptr< discretization > &)
 
- Protected Attributes inherited from StochasticProcess
boost::shared_ptr< discretizationdiscretization_
 

Detailed Description

Stochastic-volatility GJR-GARCH(1,1) process.

This class describes the stochastic volatility process governed by

\[ \begin{array}{rcl} dS(t, S) &=& \mu S dt + \sqrt{v} S dW_1 \\ dv(t, S) &=& (\omega + (\beta + \alpha * q_{2} + \gamma * q_{3} - 1) v) dt + (\alpha \sigma_{12} + \gamma \sigma_{13}) v dW_1 + \sqrt{\alpha^{2} (\sigma^{2}_{2} - \sigma^{2}_{12}) + \gamma^{2} (\sigma^{2}_{3} - \sigma^{2}_{13}) + 2 \alpha \gamma (\sigma_{23} - \sigma_{12} \sigma_{13})} v dW_2 \ \ N = normalCDF(\lambda) \\ n &=& \exp{-\lambda^{2}/2} / \sqrt{2 \pi} \\ q_{2} &=& 1 + \lambda^{2} \\ q_{3} &=& \lambda n + N + \lambda^2 N \\ \sigma^{2}_{2} = 2 + 4 \lambda^{4} \\ \sigma^{2}_{3} = \lambda^{3} n + 5 \lambda n + 3N + \lambda^{4} N + 6 \lambda^{2} N -\\lambda^{2} n^{2} - N^{2} - \lambda^{4} N^{2} - 2 \lambda n N - 2 \lambda^{3} nN - 2 \lambda^{2} N^{2} \ \ \sigma_{12} = -2 \lambda \\ \sigma_{13} = -2 n - 2 \lambda N \\ \sigma_{23} = 2N + \sigma_{12} \sigma_{13} \\ \end{array} \]

Member Function Documentation

◆ apply()

Disposable<Array> apply ( const Array x0,
const Array dx 
) const
virtual

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

Reimplemented from StochasticProcess.

◆ evolve()

Disposable<Array> evolve ( Time  t0,
const Array x0,
Time  dt,
const Array dw 
) const
virtual

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.

◆ time()

Time time ( const Date ) const
virtual

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.