QuantLib: a free/open-source library for quantitative finance
Fully annotated sources - version 1.32
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
AnalyticDiscreteGeometricAveragePriceAsianHestonEngine Class Reference

Pricing engine for European discrete geometric average price Asian. More...

#include <ql/experimental/asian/analytic_discr_geom_av_price_heston.hpp>

+ Inheritance diagram for AnalyticDiscreteGeometricAveragePriceAsianHestonEngine:
+ Collaboration diagram for AnalyticDiscreteGeometricAveragePriceAsianHestonEngine:

Public Member Functions

 AnalyticDiscreteGeometricAveragePriceAsianHestonEngine (ext::shared_ptr< HestonProcess > process, Real xiRightLimit=100.0)
 
void calculate () const override
 
std::complex< RealPhi (std::complex< Real > s, std::complex< Real > w, Time t, Time T, Size kStar, const std::vector< Time > &t_n, const std::vector< Time > &tauK) const
 
- Public Member Functions inherited from GenericEngine< DiscreteAveragingAsianOption::arguments, DiscreteAveragingAsianOption::results >
PricingEngine::argumentsgetArguments () const override
 
const PricingEngine::resultsgetResults () const override
 
void reset () override
 
void update () override
 
- Public Member Functions inherited from PricingEngine
 ~PricingEngine () override=default
 
virtual argumentsgetArguments () const =0
 
virtual const resultsgetResults () const =0
 
virtual void reset ()=0
 
virtual void calculate () const =0
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 
- 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 ()
 

Private Member Functions

std::complex< RealF (const std::complex< Real > &z1, const std::complex< Real > &z2, Time tau) const
 
std::complex< RealF_tilde (const std::complex< Real > &z1, const std::complex< Real > &z2, Time tau) const
 
std::complex< Realz (const std::complex< Real > &s, const std::complex< Real > &w, Size k, Size n) const
 
std::complex< Realomega (const std::complex< Real > &s, const std::complex< Real > &w, Size k, Size kStar, Size n) const
 
std::complex< Reala (const std::complex< Real > &s, const std::complex< Real > &w, Time t, Time T, Size kStar, const std::vector< Time > &t_n) const
 
std::complex< Realomega_tilde (const std::complex< Real > &s, const std::complex< Real > &w, Size k, Size kStar, Size n, const std::vector< Time > &tauK) const
 

Private Attributes

Real v0_
 
Real rho_
 
Real kappa_
 
Real theta_
 
Real sigma_
 
Real logS0_
 
Handle< YieldTermStructuredividendYield_
 
Handle< YieldTermStructureriskFreeRate_
 
Handle< Quotes0_
 
ext::shared_ptr< HestonProcessprocess_
 
std::map< Size, std::complex< Real > > omegaTildeLookupTable_
 
Real xiRightLimit_
 
GaussLegendreIntegration integrator_
 
Real tr_t_
 
Real Tr_T_
 
std::vector< Realtkr_tk_
 

Additional Inherited Members

- Public Types inherited from Observer
typedef set_type::iterator iterator
 
- Protected Attributes inherited from GenericEngine< DiscreteAveragingAsianOption::arguments, DiscreteAveragingAsianOption::results >
DiscreteAveragingAsianOption::arguments arguments_
 
DiscreteAveragingAsianOption::results results_
 

Detailed Description

Pricing engine for European discrete geometric average price Asian.

This class implements a discrete geometric average price Asian option with European exercise under the Heston stochastic vol model where spot and variance follow the processes

\[ \begin{array}{rcl} dS(t, S) &=& (r-d) 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} \]

References:

Implements the analytical solution for continuous geometric Asian options developed in "A Recursive Method for Discretely Monitored Geometric Asian Option Prices", B. Kim, J. Kim, J. Kim & I. S. Wee, Bull. Korean Math. Soc. 53, 733-749 (2016)

Tests:
  • the correctness of the returned value is tested by reproducing results in Tables 1, 2 and 3 of the paper

Definition at line 64 of file analytic_discr_geom_av_price_heston.hpp.

Constructor & Destructor Documentation

◆ AnalyticDiscreteGeometricAveragePriceAsianHestonEngine()

AnalyticDiscreteGeometricAveragePriceAsianHestonEngine ( ext::shared_ptr< HestonProcess process,
Real  xiRightLimit = 100.0 
)
explicit

Definition at line 59 of file analytic_discr_geom_av_price_heston.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ calculate()

void calculate ( ) const
overridevirtual

Implements PricingEngine.

Definition at line 202 of file analytic_discr_geom_av_price_heston.cpp.

+ Here is the call graph for this function:

◆ Phi()

std::complex< Real > Phi ( std::complex< Real s,
std::complex< Real w,
Time  t,
Time  T,
Size  kStar,
const std::vector< Time > &  t_n,
const std::vector< Time > &  tauK 
) const

Definition at line 174 of file analytic_discr_geom_av_price_heston.cpp.

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

◆ F()

std::complex< Real > F ( const std::complex< Real > &  z1,
const std::complex< Real > &  z2,
Time  tau 
) const
private

Definition at line 77 of file analytic_discr_geom_av_price_heston.cpp.

+ Here is the caller graph for this function:

◆ F_tilde()

std::complex< Real > F_tilde ( const std::complex< Real > &  z1,
const std::complex< Real > &  z2,
Time  tau 
) const
private

Definition at line 89 of file analytic_discr_geom_av_price_heston.cpp.

+ Here is the caller graph for this function:

◆ z()

std::complex< Real > z ( const std::complex< Real > &  s,
const std::complex< Real > &  w,
Size  k,
Size  n 
) const
private

Definition at line 97 of file analytic_discr_geom_av_price_heston.cpp.

+ Here is the caller graph for this function:

◆ omega()

std::complex< Real > omega ( const std::complex< Real > &  s,
const std::complex< Real > &  w,
Size  k,
Size  kStar,
Size  n 
) const
private

Definition at line 107 of file analytic_discr_geom_av_price_heston.cpp.

+ Here is the caller graph for this function:

◆ a()

std::complex< Real > a ( const std::complex< Real > &  s,
const std::complex< Real > &  w,
Time  t,
Time  T,
Size  kStar,
const std::vector< Time > &  t_n 
) const
private

Definition at line 118 of file analytic_discr_geom_av_price_heston.cpp.

+ Here is the caller graph for this function:

◆ omega_tilde()

std::complex< Real > omega_tilde ( const std::complex< Real > &  s,
const std::complex< Real > &  w,
Size  k,
Size  kStar,
Size  n,
const std::vector< Time > &  tauK 
) const
private

Definition at line 140 of file analytic_discr_geom_av_price_heston.cpp.

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

Member Data Documentation

◆ v0_

Real v0_
private

Definition at line 82 of file analytic_discr_geom_av_price_heston.hpp.

◆ rho_

Real rho_
private

Definition at line 82 of file analytic_discr_geom_av_price_heston.hpp.

◆ kappa_

Real kappa_
private

Definition at line 82 of file analytic_discr_geom_av_price_heston.hpp.

◆ theta_

Real theta_
private

Definition at line 82 of file analytic_discr_geom_av_price_heston.hpp.

◆ sigma_

Real sigma_
private

Definition at line 82 of file analytic_discr_geom_av_price_heston.hpp.

◆ logS0_

Real logS0_
private

Definition at line 82 of file analytic_discr_geom_av_price_heston.hpp.

◆ dividendYield_

Handle<YieldTermStructure> dividendYield_
private

Definition at line 83 of file analytic_discr_geom_av_price_heston.hpp.

◆ riskFreeRate_

Handle<YieldTermStructure> riskFreeRate_
private

Definition at line 84 of file analytic_discr_geom_av_price_heston.hpp.

◆ s0_

Handle<Quote> s0_
private

Definition at line 85 of file analytic_discr_geom_av_price_heston.hpp.

◆ process_

ext::shared_ptr<HestonProcess> process_
private

Definition at line 87 of file analytic_discr_geom_av_price_heston.hpp.

◆ omegaTildeLookupTable_

std::map<Size, std::complex<Real> > omegaTildeLookupTable_
mutableprivate

Definition at line 90 of file analytic_discr_geom_av_price_heston.hpp.

◆ xiRightLimit_

Real xiRightLimit_
private

Definition at line 93 of file analytic_discr_geom_av_price_heston.hpp.

◆ integrator_

GaussLegendreIntegration integrator_
private

Definition at line 96 of file analytic_discr_geom_av_price_heston.hpp.

◆ tr_t_

Real tr_t_
mutableprivate

Definition at line 104 of file analytic_discr_geom_av_price_heston.hpp.

◆ Tr_T_

Real Tr_T_
mutableprivate

Definition at line 105 of file analytic_discr_geom_av_price_heston.hpp.

◆ tkr_tk_

std::vector<Real> tkr_tk_
mutableprivate

Definition at line 106 of file analytic_discr_geom_av_price_heston.hpp.