Stochastic volatility with Fourier inversion

class BsmFft(sigma, intr=0.0, divr=0.0, is_fwd=False)[source]

Option pricing under Black-Scholes-Merton (BSM) model using fast fourier transform (FFT).

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.BsmFft(sigma=0.2, intr=0.05, divr=0.1)
>>> m.price(np.arange(80, 121, 10), 100, 1.2)
array([15.71362027,  9.69251556,  5.52948647,  2.94558375,  1.4813909 ])
charfunc_logprice(x, texp)

Characteristic function of log price

Parameters
  • x

  • texp

Returns:

delta(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

delta_numeric(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

fft_interp(texp, *args, **kwargs)

FFT method based on the Lewis expression

References

https://github.com/cantaro86/Financial-Models-Numerical-Methods/blob/master/1.3%20Fourier%20transform%20methods.ipynb

forward(spot, texp)

Forward price

Parameters
  • spot – spot price

  • texp – time to expiry

Returns

forward price

gamma(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

gamma_numeric(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

impvol(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

impvol_brentq(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

mgf_logprice(uu, texp)[source]

Moment generating function (MGF) of log price. (forward = 1)

Parameters
  • xx – dummy variable

  • texp – time to expiry

Returns

MGF value at xx

params_kw()

Model parameters in dictionary

pdf_numeric(strike, spot, texp, cp=- 1, h=0.001)

Probability density functin (PDF) at strike

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

probability densitiy

price(strike, spot, texp, cp=1)

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) price.

  • texp – time to expiry.

  • cp – 1/-1 for call/put option.

Returns

option price

theta(strike, spot, texp, cp=1)

Option model thegta (sensitivity to time-to-maturity) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

theta value

theta_numeric(strike, spot, texp, cp=1)

Option model thegta (sensitivity to time-to-maturity) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

theta value

vanna(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

vanna_numeric(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

vega(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vega_numeric(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

volga(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

volga_numeric(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

class ExpNigFft(sigma, vov=0.01, rho=0.0, mr=0.01, theta=None, intr=0.0, divr=0.0, is_fwd=False)[source]
charfunc_logprice(x, texp)

Characteristic function of log price

Parameters
  • x

  • texp

Returns:

delta(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

delta_numeric(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

fft_interp(texp, *args, **kwargs)

FFT method based on the Lewis expression

References

https://github.com/cantaro86/Financial-Models-Numerical-Methods/blob/master/1.3%20Fourier%20transform%20methods.ipynb

forward(spot, texp)

Forward price

Parameters
  • spot – spot price

  • texp – time to expiry

Returns

forward price

gamma(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

gamma_numeric(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

impvol(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

impvol_brentq(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

classmethod init_benchmark(set_no=None)

Initiate an SV model with stored benchmark parameter sets

Parameters

set_no – set number

Returns

Dataframe of all test cases if set_no = None (model, Dataframe of result, params) if set_no is specified

References:

mgf_logprice(uu, texp)[source]
Parameters
  • uu

  • texp

Returns:

model_type

alias of NotImplementedError

params_kw()

Model parameters in dictionary

pdf_numeric(strike, spot, texp, cp=- 1, h=0.001)

Probability density functin (PDF) at strike

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

probability densitiy

price(strike, spot, texp, cp=1)

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) price.

  • texp – time to expiry.

  • cp – 1/-1 for call/put option.

Returns

option price

theta_numeric(strike, spot, texp, cp=1)

Option model thegta (sensitivity to time-to-maturity) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

theta value

vanna(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

vanna_numeric(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

var_process

alias of NotImplementedError

vega(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vega_numeric(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vol_smile(strike, spot, texp, cp=1, model='bsm')

Equivalent volatility smile for a given model

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

  • model – {‘bsm’, ‘norm’} ‘bsm’ (by default) for Black-Scholes-Merton, ‘norm’ for Bachelier

Returns

volatility smile under the specified model

volga(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

volga_numeric(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

class HestonFft(sigma, vov=0.01, rho=0.0, mr=0.01, theta=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Heston model option pricing with FFT

References

  • Lewis AL (2000) Option valuation under stochastic volatility: with Mathematica code. Finance Press

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> strike = np.array([60, 70, 100, 140])
>>> sigma, vov, mr, rho, texp, spot = 0.04, 1, 0.5, -0.9, 10, 100
>>> m = pf.HestonFft(sigma, vov=vov, mr=mr, rho=rho)
>>> m.price(strike, spot, texp)
>>> # true price: 44.32997507, 35.8497697, 13.08467014, 0.29577444
array([44.32997507, 35.8497697 , 13.08467014,  0.29577444])
charfunc_logprice(x, texp)

Characteristic function of log price

Parameters
  • x

  • texp

Returns:

delta(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

delta_numeric(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

fft_interp(texp, *args, **kwargs)

FFT method based on the Lewis expression

References

https://github.com/cantaro86/Financial-Models-Numerical-Methods/blob/master/1.3%20Fourier%20transform%20methods.ipynb

forward(spot, texp)

Forward price

Parameters
  • spot – spot price

  • texp – time to expiry

Returns

forward price

gamma(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

gamma_numeric(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

impvol(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

impvol_brentq(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

classmethod init_benchmark(set_no=None)

Initiate an SV model with stored benchmark parameter sets

Parameters

set_no – set number

Returns

Dataframe of all test cases if set_no = None (model, Dataframe of result, params) if set_no is specified

References:

mgf_logprice(uu, texp)[source]

Log price MGF under the Heston model. We use the characteristic function in Eq (2.8) of Lord & Kahl (2010) that is continuous in branch cut when complex log is evaluated.

References

params_kw()

Model parameters in dictionary

pdf_numeric(strike, spot, texp, cp=- 1, h=0.001)

Probability density functin (PDF) at strike

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

probability densitiy

price(strike, spot, texp, cp=1)

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) price.

  • texp – time to expiry.

  • cp – 1/-1 for call/put option.

Returns

option price

theta_numeric(strike, spot, texp, cp=1)

Option model thegta (sensitivity to time-to-maturity) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

theta value

vanna(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

vanna_numeric(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

var_process

alias of NotImplementedError

vega(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vega_numeric(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vol_smile(strike, spot, texp, cp=1, model='bsm')

Equivalent volatility smile for a given model

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

  • model – {‘bsm’, ‘norm’} ‘bsm’ (by default) for Black-Scholes-Merton, ‘norm’ for Bachelier

Returns

volatility smile under the specified model

volga(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

volga_numeric(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

class OusvFft(sigma, vov=0.01, rho=0.0, mr=0.01, theta=None, intr=0.0, divr=0.0, is_fwd=False)[source]

OUSV model option pricing with FFT

charfunc_logprice(x, texp)

Characteristic function of log price

Parameters
  • x

  • texp

Returns:

delta(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

delta_numeric(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

fft_interp(texp, *args, **kwargs)

FFT method based on the Lewis expression

References

https://github.com/cantaro86/Financial-Models-Numerical-Methods/blob/master/1.3%20Fourier%20transform%20methods.ipynb

forward(spot, texp)

Forward price

Parameters
  • spot – spot price

  • texp – time to expiry

Returns

forward price

gamma(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

gamma_numeric(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

impvol(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

impvol_brentq(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

classmethod init_benchmark(set_no=None)

Initiate an SV model with stored benchmark parameter sets

Parameters

set_no – set number

Returns

Dataframe of all test cases if set_no = None (model, Dataframe of result, params) if set_no is specified

References:

mgf_logprice(uu, texp)[source]

Log price MGF under the OUSV model. We use the characteristic function in Eq (4.14) of Lord & Kahl (2010) that is continuous in branch cut when complex log is evaluated.

Returns

MGF value at uu

References

mgf_logprice_schobelzhu1998(uu, texp)[source]

MGF from Eq. (13) in Schobel & Zhu (1998). This form suffers discontinuity in complex log branch cut. Should not be used for pricing.

Parameters
  • uu – dummy variable

  • texp – time to expiry

Returns

MGF value at uu

References

params_kw()

Model parameters in dictionary

pdf_numeric(strike, spot, texp, cp=- 1, h=0.001)

Probability density functin (PDF) at strike

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

probability densitiy

price(strike, spot, texp, cp=1)

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) price.

  • texp – time to expiry.

  • cp – 1/-1 for call/put option.

Returns

option price

theta_numeric(strike, spot, texp, cp=1)

Option model thegta (sensitivity to time-to-maturity) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

theta value

vanna(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

vanna_numeric(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

var_process

alias of NotImplementedError

vega(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vega_numeric(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vol_smile(strike, spot, texp, cp=1, model='bsm')

Equivalent volatility smile for a given model

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

  • model – {‘bsm’, ‘norm’} ‘bsm’ (by default) for Black-Scholes-Merton, ‘norm’ for Bachelier

Returns

volatility smile under the specified model

volga(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

volga_numeric(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

class VarGammaFft(sigma, vov=0.01, rho=0.0, mr=0.01, theta=None, intr=0.0, divr=0.0, is_fwd=False)[source]
charfunc_logprice(x, texp)

Characteristic function of log price

Parameters
  • x

  • texp

Returns:

delta(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

delta_numeric(strike, spot, texp, cp=1)

Option model delta (sensitivity to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

delta value

fft_interp(texp, *args, **kwargs)

FFT method based on the Lewis expression

References

https://github.com/cantaro86/Financial-Models-Numerical-Methods/blob/master/1.3%20Fourier%20transform%20methods.ipynb

forward(spot, texp)

Forward price

Parameters
  • spot – spot price

  • texp – time to expiry

Returns

forward price

gamma(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

gamma_numeric(strike, spot, texp, cp=1)

Option model gamma (2nd derivative to price) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

Delta with numerical derivative

impvol(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

impvol_brentq(price, strike, spot, texp, cp=1, setval=False)

Implied volatility using Brent’s method. Slow but robust implementation.

Parameters
  • price – option price

  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put

  • setval – if True, sigma is set with the solved implied volatility

Returns

implied volatility

classmethod init_benchmark(set_no=None)

Initiate an SV model with stored benchmark parameter sets

Parameters

set_no – set number

Returns

Dataframe of all test cases if set_no = None (model, Dataframe of result, params) if set_no is specified

References:

mgf_logprice(uu, texp)[source]

Moment generating function (MGF) of log price. (forward = 1)

Parameters
  • xx – dummy variable

  • texp – time to expiry

Returns

MGF value at xx

model_type

alias of NotImplementedError

params_kw()

Model parameters in dictionary

pdf_numeric(strike, spot, texp, cp=- 1, h=0.001)

Probability density functin (PDF) at strike

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

probability densitiy

price(strike, spot, texp, cp=1)

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) price.

  • texp – time to expiry.

  • cp – 1/-1 for call/put option.

Returns

option price

theta_numeric(strike, spot, texp, cp=1)

Option model thegta (sensitivity to time-to-maturity) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

theta value

vanna(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

vanna_numeric(strike, spot, texp, cp=1)

Option model vanna (cross-derivative to price and volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

vanna value

var_process

alias of NotImplementedError

vega(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vega_numeric(strike, spot, texp, cp=1)

Option model vega (sensitivity to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot (or forward) price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

Returns

vega value

vol_smile(strike, spot, texp, cp=1, model='bsm')

Equivalent volatility smile for a given model

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put option

  • model – {‘bsm’, ‘norm’} ‘bsm’ (by default) for Black-Scholes-Merton, ‘norm’ for Bachelier

Returns

volatility smile under the specified model

volga(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value

volga_numeric(strike, spot, texp, cp=1)

Option model volga (2nd derivative to volatility) by finite difference

Parameters
  • strike – strike price

  • spot – spot price

  • texp – time to expiry

  • cp – 1/-1 for call/put

Returns

volga value