AnalyticHestonEngine Class Reference
Pricing engines » Vanilla option engines

analytic Heston-model engine based on Fourier transform More...

`#include <ql/pricingengines/vanilla/analytichestonengine.hpp>`

Inheritance diagram for AnalyticHestonEngine:
[legend]

## Public Types

enum | ComplexLogFormula { Gatheral, BranchCorrection }

## Public Member Functions

| 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)
void | calculate () 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 &)
Observable & | operator= (const Observable &)
void | notifyObservers ()
Public Member Functions inherited from Observer
| Observer (const Observer &)
Observer & | operator= (const Observer &)
std::pair< std::set< boost::shared_ptr< Observable > >::iterator, bool > | registerWith (const boost::shared_ptr< Observable > &)
void | registerWithObservables (const boost::shared_ptr< Observer > &)
Size | unregisterWith (const boost::shared_ptr< Observable > &)
void | unregisterWithAll ()

## Static Public Member Functions

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)

## Protected Member Functions

virtual std::complex< Real > | addOnTerm (Real phi, Time t, Size j) const

## Additional Inherited Members

Protected Attributes inherited from GenericModelEngine< HestonModel, VanillaOption::arguments, VanillaOption::results >
Handle< HestonModel > | model_
Protected Attributes inherited from GenericEngine< VanillaOption::arguments, VanillaOption::results >
VanillaOption::arguments | arguments_
VanillaOption::results | results_

## Detailed Description

analytic Heston-model engine based on Fourier transform

Integration detail: Two algebraically equivalent formulations of the complex logarithm of the Heston model exist. Gatherals [2005] (also Duffie, Pan and Singleton [2000], and Schoutens, Simons and Tistaert[2004]) version does not cause discoutinuities whereas the original version (e.g. Heston [1993]) needs some sort of "branch correction" to work properly. Gatheral's version does also work with adaptive integration routines and should be preferred over the original Heston version.

References:

Heston, Steven L., 1993. A Closed-Form Solution for Options with Stochastic Volatility with Applications to Bond and Currency Options. The review of Financial Studies, Volume 6, Issue 2, 327-343.

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)

R. Lord and C. Kahl, Why the rotation count algorithm works, http://papers.ssrn.com/sol3/papers.cfm?abstract_id=921335

H. Albrecher, P. Mayer, W.Schoutens and J. Tistaert, The Little Heston Trap, http://www.schoutens.be/HestonTrap.pdf

J. Gatheral, The Volatility Surface: A Practitioner's Guide, Wiley Finance

Tests:
  the correctness of the returned value is tested by reproducing results available in web/literature and comparison with Black pricing.

Examples:
  EquityOption.cpp.