QuantLib
A free/open-source library for quantitative finance
Reference manual - version 1.20
Public Member Functions | Protected Member Functions | List of all members
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 ext::shared_ptr< HestonModel > &model, const ext::shared_ptr< HullWhite > &hullWhiteModel, Real rhoXV, Size integrationOrder=144)
 
 AnalyticH1HWEngine (const ext::shared_ptr< HestonModel > &model, const ext::shared_ptr< HullWhite > &hullWhiteModel, Real rhoSr, Real relTolerance, Size maxEvaluations)
 
- Public Member Functions inherited from AnalyticHestonHullWhiteEngine
 AnalyticHestonHullWhiteEngine (const ext::shared_ptr< HestonModel > &hestonModel, const ext::shared_ptr< HullWhite > &hullWhiteModel, Size integrationOrder=144)
 
 AnalyticHestonHullWhiteEngine (const ext::shared_ptr< HestonModel > &model, const ext::shared_ptr< HullWhite > &hullWhiteModel, Real relTolerance, Size maxEvaluations)
 
void update ()
 
void calculate () const
 
- Public Member Functions inherited from AnalyticHestonEngine
 AnalyticHestonEngine (const ext::shared_ptr< HestonModel > &model, Real relTolerance, Size maxEvaluations)
 
 AnalyticHestonEngine (const ext::shared_ptr< HestonModel > &model, Size integrationOrder=144)
 
 AnalyticHestonEngine (const ext::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 ext::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 PricingEngine
virtual arguments * getArguments () const =0
 
virtual const results * getResults () const =0
 
- 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 ext::shared_ptr< Observable > &)
 
void registerWithObservables (const ext::shared_ptr< Observer > &)
 
Size unregisterWith (const ext::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void deepUpdate ()
 

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, AndersenPiterbarg, AndersenPiterbargOptCV,
  AsymptoticChF, OptimalCV
}
 
- Public Types inherited from Observer
typedef boost::unordered_set< ext::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, ComplexLogFormula cpxLog, const AnalyticHestonEngine *enginePtr, Real &value, Size &evaluations)
 
static ComplexLogFormula optimalControlVariate (Time t, Real v0, Real kappa, Real theta, Real sigma, Real rho)
 
- Protected Attributes inherited from AnalyticHestonHullWhiteEngine
const ext::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_
 

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