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

Analytic Heston engine incl. stochastic interest rates. More...

#include <ql/pricingengines/vanilla/analytichestonhullwhiteengine.hpp>

+ Inheritance diagram for AnalyticHestonHullWhiteEngine:

Public Member Functions

 AnalyticHestonHullWhiteEngine (const boost::shared_ptr< HestonModel > &hestonModel, const boost::shared_ptr< HullWhite > &hullWhiteModel, Size integrationOrder=144)
 
 AnalyticHestonHullWhiteEngine (const boost::shared_ptr< HestonModel > &model, const boost::shared_ptr< HullWhite > &hullWhiteModel, Real relTolerance, Size maxEvaluations)
 
void update ()
 
void calculate () const
 
- Public Member Functions inherited from AnalyticHestonEngine
 AnalyticHestonEngine (const boost::shared_ptr< HestonModel > &model, Real relTolerance, Size maxEvaluations)
 
 AnalyticHestonEngine (const boost::shared_ptr< HestonModel > &model, Size integrationOrder=144)
 
 AnalyticHestonEngine (const boost::shared_ptr< HestonModel > &model, ComplexLogFormula cpxLog, const Integration &itg, Real andersenPiterbargEpsilon=1e-8)
 
std::complex< RealchF (const std::complex< Real > &z, Time t) const
 
std::complex< ReallnChF (const std::complex< Real > &z, Time t) const
 
Size numberOfEvaluations () const
 
- Public Member Functions inherited from GenericModelEngine< HestonModel, VanillaOption::arguments, VanillaOption::results >
 GenericModelEngine (const Handle< HestonModel > &model=Handle< HestonModel >())
 
 GenericModelEngine (const boost::shared_ptr< HestonModel > &model)
 
- Public Member Functions inherited from GenericEngine< VanillaOption::arguments, VanillaOption::results >
PricingEngine::arguments * getArguments () const
 
const PricingEngine::results * getResults () const
 
void reset ()
 
void update ()
 
- Public Member Functions inherited from Observable
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
void notifyObservers ()
 
- 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 ()
 

Protected Member Functions

std::complex< RealaddOnTerm (Real phi, Time t, Size j) const
 

Protected Attributes

const boost::shared_ptr< HullWhitehullWhiteModel_
 
- Protected Attributes inherited from GenericModelEngine< HestonModel, VanillaOption::arguments, VanillaOption::results >
Handle< HestonModelmodel_
 
- Protected Attributes inherited from GenericEngine< VanillaOption::arguments, VanillaOption::results >
VanillaOption::arguments arguments_
 
VanillaOption::results results_
 

Additional Inherited Members

- Public Types inherited from AnalyticHestonEngine
enum  ComplexLogFormula { Gatheral, BranchCorrection, AndersenPiterbarg }
 
- Public Types inherited from Observer
typedef std::set< boost::shared_ptr< Observable > > set_type
 
typedef set_type::iterator iterator
 
- Static Public Member Functions inherited from AnalyticHestonEngine
static void doCalculation (Real riskFreeDiscount, Real dividendDiscount, Real spotPrice, Real strikePrice, Real term, Real kappa, Real theta, Real sigma, Real v0, Real rho, const TypePayoff &type, const Integration &integration, const ComplexLogFormula cpxLog, const AnalyticHestonEngine *const enginePtr, Real &value, Size &evaluations)
 

Detailed Description

Analytic Heston engine incl. stochastic interest rates.

This class is pricing a european option under the following process

\[ \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 \\ dr(t) &=& (\theta(t) - a r) dt + \eta dW_3 \\ dW_1 dW_2 &=& \rho dt \\ dW_1 dW_3 &=& 0 \\ dW_2 dW_3 &=& 0 \\ \end{array} \]

References:

Karel in't Hout, Joris Bierkens, Antoine von der Ploeg, Joe in't Panhuis, A Semi closed-from analytic pricing formula for call options in a hybrid Heston-Hull-White Model.

A. Sepp, Pricing European-Style Options under Jump Diffusion Processes with Stochastic Volatility: Applications of Fourier Transform (http://math.ut.ee/~spartak/papers/stochjumpvols.pdf)

Tests:
the correctness of the returned value is tested by reproducing results available in web/literature, testing against QuantLib's analytic Heston and Black-Scholes-Merton Hull-White engine

Member Function Documentation

◆ update()

void update ( )
virtual

This method must be implemented in derived classes. An instance of Observer does not call this method directly: instead, it will be called by the observables the instance registered with when they need to notify any changes.

Implements Observer.