AnalyticH1HWEngine Class Reference

Analytic Heston-Hull-White engine based on the H1-HW approximation. More...

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

Inheritance diagram for AnalyticH1HWEngine:

Public Member Functions

 AnalyticH1HWEngine (const boost::shared_ptr< HestonModel > &model, const boost::shared_ptr< HullWhite > &hullWhiteModel, Real rhoXV, Size integrationOrder=144)
 
 AnalyticH1HWEngine (const boost::shared_ptr< HestonModel > &model, const boost::shared_ptr< HullWhite > &hullWhiteModel, Real rhoSr, Real relTolerance, Size maxEvaluations)
 
- Public Member Functions inherited from AnalyticHestonHullWhiteEngine
 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)
 
Size numberOfEvaluations () const
 
- Public Member Functions inherited from GenericModelEngine< HestonModel, VanillaOption::arguments, VanillaOption::results >
 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< std::set
< boost::shared_ptr
< Observable > >::iterator,
bool > 
registerWith (const boost::shared_ptr< Observable > &)
 
Size unregisterWith (const boost::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 

Protected Member Functions

std::complex< RealaddOnTerm (Real phi, Time t, Size j) const
 
- Protected Member Functions inherited from AnalyticHestonHullWhiteEngine
std::complex< RealaddOnTerm (Real phi, Time t, Size j) const
 

Additional Inherited Members

- Public Types inherited from AnalyticHestonEngine
enum  ComplexLogFormula { Gatheral, BranchCorrection }
 
- 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)
 
- Public Attributes inherited from GenericModelEngine< HestonModel, VanillaOption::arguments, VanillaOption::results >
 __pad0__
 
- Protected Attributes inherited from AnalyticHestonHullWhiteEngine
const boost::shared_ptr
< HullWhite
hullWhiteModel_
 
- 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_
 

Detailed Description

Analytic Heston-Hull-White engine based on the H1-HW approximation.

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_{S,v} dt, \rho_{S,r} >= 0 \\ dW_1 dW_3 &=& \rho_{S.r} dt \\ dW_2 dW_3 &=& 0 dt \\ \end{array} \]

References:

Lech A. Grzelak, Cornelis W. Oosterlee, On The Heston Model with Stochastic, http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1382902

Lech A. Grzelak, Equity and Foreign Exchange Hybrid Models for Pricing Long-Maturity Financial Derivatives, http://repository.tudelft.nl/assets/uuid:a8e1a007-bd89-481a-aee3-0e22f15ade6b/PhDThesis_main.pdf

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