Options
All
  • Public
  • Public/Protected
  • All
Menu

Bates model engines based on Fourier transform

this classes price european options under the following processes

  1. Jump-Diffusion with Stochastic Volatility

$$ \begin{array}{rcl} dS(t, S) &=& (r-d-\lambda m) S dt +\sqrt{v} S dW_1 + (e^J - 1) S dN \ dv(t, S) &=& \kappa (\theta - v) dt + \sigma \sqrt{v} dW_2 \ dW_1 dW_2 &=& \rho dt \end{array} $$

N is a Poisson process with the intensity $ \lambda $. When a jump occurs the magnitude J has the probability density function $ \omega(J) $.

1.1 Log-Normal Jump Diffusion: BatesEngine

Logarithm of the jump size J is normally distributed $$ \omega(J) = \frac{1}{\sqrt{2\pi \delta^2}} \exp\left[-\frac{(J-\nu)^2}{2\delta^2}\right] $$

1.2 Double-Exponential Jump Diffusion: BatesDoubleExpEngine

The jump size has an asymmetric double exponential distribution $$ \begin{array}{rcl} \omega(J)&=& p\frac{1}{\eta_u}e^{-\frac{1}{\eta_u}J} 1_{J>0} + q\frac{1}{\eta_d}e^{\frac{1}{\eta_d}J} 1_{J<0} \ p + q &=& 1 \end{array} $$

  1. Stochastic Volatility with Jump Diffusion and Deterministic Jump Intensity

$$ \begin{array}{rcl} dS(t, S) &=& (r-d-\lambda m) S dt +\sqrt{v} S dW_1 + (e^J - 1) S dN \ dv(t, S) &=& \kappa (\theta - v) dt + \sigma \sqrt{v} dW_2 \ d\lambda(t) &=& \kappa_\lambda(\theta_\lambda-\lambda) dt \ dW_1 dW_2 &=& \rho dt \end{array} $$

2.1 Log-Normal Jump Diffusion with Deterministic Jump Intensity BatesDetJumpEngine

2.2 Double-Exponential Jump Diffusion with Deterministic Jump Intensity BatesDoubleExpDetJumpEngine

References:

D. Bates, Jumps and stochastic volatility: exchange rate processes implicit in Deutsche mark options, Review of Financial Sudies 9, 69-107.

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)

test

the correctness of the returned value is tested by reproducing results available in web/literature, testing against QuantLib's jump diffusion engine and comparison with Black pricing.

Hierarchy

Implements

Index

Constructors

constructor

Properties

_arguments

_arguments: Arguments

_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

aheInit1

aheInit2

aheInit3

beInit1

  • Parameters

    Returns BatesEngine

beInit2

  • Parameters

    Returns BatesEngine

calculate

  • calculate(): void

chF

getArguments

getResults

init1

init2

lnChF

numberOfEvaluations

  • numberOfEvaluations(): Size

reset

  • reset(): void

update

  • update(): void

Static doCalculation