Options
All
  • Public
  • Public/Protected
  • All
Menu

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

F. Le Floc'h, Fourier Integration and Stochastic Volatility Calibration, https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2362968

L. Andersen, and V. Piterbarg, 2010, Interest Rate Modeling, Volume I: Foundations and Vanilla Models, Atlantic Financial Press London.

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

Hierarchy

Implements

Index

Constructors

constructor

Properties

Private _andersenPiterbargEpsilon

_andersenPiterbargEpsilon: Real

_arguments

_arguments: Arguments

Private _cpxLog

Private _evaluations

_evaluations: Size

Private _integration

_integration: Integration

_isDisposed

_isDisposed: boolean = false

_model

_observables

_observables: Set<Observable> = new Set()

_observers

_observers: Set<Observer> = new Set()

_results

_results: Results

deepUpdate

deepUpdate: () => void

Type declaration

    • (): void
    • Returns void

dispose

dispose: () => void

Type declaration

    • (): void
    • Returns void

isDisposed

isDisposed: boolean

notifyObservers

notifyObservers: () => void

Type declaration

    • (): void
    • Returns void

registerObserver

registerObserver: (o: Observer) => void

Type declaration

registerWith

registerWith: (h: Observable) => void

Type declaration

registerWithObservables

registerWithObservables: (o: Observer) => void

Type declaration

unregisterObserver

unregisterObserver: (o: Observer) => void

Type declaration

unregisterWith

unregisterWith: (h: Observable) => Size

Type declaration

unregisterWithAll

unregisterWithAll: () => void

Type declaration

    • (): void
    • Returns void

Methods

addOnTerm

  • Parameters

    Returns Complex

aheInit1

aheInit2

aheInit3

calculate

  • calculate(): void

chF

  • Parameters

    Returns Complex

getArguments

getResults

init1

init2

lnChF

  • Parameters

    Returns Complex

numberOfEvaluations

  • numberOfEvaluations(): Size
  • Returns Size

reset

  • reset(): void

update

  • update(): void

Static doCalculation