Multiasset Models

class BsmBasket1Bm(sigma, weight=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Multiasset BSM model for pricing basket/Spread options when all asset prices are driven by a single Brownian motion (BM).

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

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

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)[source]

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

static root(fac, std, strike)[source]

Calculate the root x of f(x) = sum(fac * exp(std*x)) - strike = 0 using Newton’s method

Each fac and std should have the same signs so that f(x) is a monotonically increasing function.

fac: factor to the exponents. (n_asset, ) or (n_strike, n_asset). Asset takes the last dimension. std: total standard variance. (n_asset, ) strike: strike prices. scalar or (n_asset, )

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 BsmBasketChoi2018(sigma, cor=None, weight=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Choi (2018)’s pricing method for Basket/Spread/Asian options

References
  • Choi J (2018) Sum of all Black-Scholes-Merton models: An efficient pricing method for spread, basket, and Asian options. Journal of Futures Markets 38:627–644. https://doi.org/10.1002/fut.21909

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

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

static householder(vv0)[source]

Returns a Householder reflection (orthonormal matrix) that maps (1,0,…0) to vv0

Parameters

vv0 – vector

Returns

Reflection matrix

References
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_spread(sigma, cor=None, intr=0.0, divr=0.0, is_fwd=False)

Initalize an instance for spread option pricing. This is a special case of the initalization with weight = (1, -1)

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.NormSpread.init_spread((20, 30), cor=-0.5, intr=0.05)
>>> m.price(np.arange(-2, 3) * 10, [100, 120], 1.3)
array([17.95676186, 13.74646821, 10.26669936,  7.47098719,  5.29057157])
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)[source]

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) prices for assets. Asset dimension should be the last, e.g. (n_asset, ) or (N, n_asset)

  • 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

v1_fwd_weight(fwd, texp)[source]

Construct v1, forward array, and weights

Parameters
  • fwd – forward vector of assets

  • texp – time to expiry

Returns

(v1, f_k, ww)

v_mat(fwd)[source]

Construct the V matrix

Parameters

fwd – forward vector of assets

Returns

V matrix

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 BsmBasketJsu(sigma, cor=None, weight=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Johnson’s SU distribution approximation for Basket option pricing under the multiasset BSM model.

Note: Johnson’s SU distribution is the solution of NSVh with NSVh with lambda = 1.

References

  • Posner, S. E., & Milevsky, M. A. (1998). Valuing exotic options by approximating the SPD

with higher moments. The Journal of Financial Engineering, 7(2). https://ssrn.com/abstract=108539

  • Choi, J., Liu, C., & Seo, B. K. (2019). Hyperbolic normal stochastic volatility model.

Journal of Futures Markets, 39(2), 186–204. https://doi.org/10.1002/fut.21967

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

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_spread(sigma, cor=None, intr=0.0, divr=0.0, is_fwd=False)

Initalize an instance for spread option pricing. This is a special case of the initalization with weight = (1, -1)

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.NormSpread.init_spread((20, 30), cor=-0.5, intr=0.05)
>>> m.price(np.arange(-2, 3) * 10, [100, 120], 1.3)
array([17.95676186, 13.74646821, 10.26669936,  7.47098719,  5.29057157])
moment_vsk(fwd, texp)[source]

Return variance, skewness, kurtosis for Basket options.

Parameters
  • fwd – forward price

  • texp – time to expiry

Returns: variance, skewness, kurtosis of Basket options

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)[source]

Basket options price. :param strike: strike price :param spot: spot price :param texp: time to expiry :param cp: 1/-1 for call/put option

Returns: Basket options 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 BsmBasketLevy1992(sigma, cor=None, weight=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Basket option pricing with the log-normal approximation of Levy & Turnbull (1992)

References

  • Levy E, Turnbull S (1992) Average intelligence. Risk 1992:53–57

  • Krekel M, de Kock J, Korn R, Man T-K (2004) An analysis of pricing methods for basket options. Wilmott Magazine 2004:82–89

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> strike = np.arange(50, 151, 10)
>>> m = pf.BsmBasketLevy1992(sigma=0.4*np.ones(4), cor=0.5)
>>> m.price(strike, spot=100*np.ones(4), texp=5)
array([54.34281026, 47.521086  , 41.56701301, 36.3982413 , 31.92312156,
       28.05196621, 24.70229571, 21.800801  , 19.28360474, 17.09570196,
       15.19005654])
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

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_spread(sigma, cor=None, intr=0.0, divr=0.0, is_fwd=False)

Initalize an instance for spread option pricing. This is a special case of the initalization with weight = (1, -1)

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.NormSpread.init_spread((20, 30), cor=-0.5, intr=0.05)
>>> m.price(np.arange(-2, 3) * 10, [100, 120], 1.3)
array([17.95676186, 13.74646821, 10.26669936,  7.47098719,  5.29057157])
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)[source]

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) prices for assets. Asset dimension should be the last, e.g. (n_asset, ) or (N, n_asset)

  • 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 BsmBasketMilevsky1998(sigma, cor=None, weight=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Basket option pricing with the inverse gamma distribution of Milevsky & Posner (1998)

References

  • Milevsky MA, Posner SE (1998) A Closed-Form Approximation for Valuing Basket Options. The Journal of Derivatives 5:54–61. https://doi.org/10.3905/jod.1998.408005

  • Krekel M, de Kock J, Korn R, Man T-K (2004) An analysis of pricing methods for basket options. Wilmott Magazine 2004:82–89

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> strike = np.arange(50, 151, 10)
>>> m = pf.BsmBasketMilevsky1998(sigma=0.4*np.ones(4), cor=0.5)
>>> m.price(strike, spot=100*np.ones(4), texp=5)
array([51.93069524, 44.40986   , 38.02596564, 32.67653542, 28.21560931,
       24.49577509, 21.38543199, 18.77356434, 16.56909804, 14.69831445,
       13.10186928])
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

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_spread(sigma, cor=None, intr=0.0, divr=0.0, is_fwd=False)

Initalize an instance for spread option pricing. This is a special case of the initalization with weight = (1, -1)

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.NormSpread.init_spread((20, 30), cor=-0.5, intr=0.05)
>>> m.price(np.arange(-2, 3) * 10, [100, 120], 1.3)
array([17.95676186, 13.74646821, 10.26669936,  7.47098719,  5.29057157])
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)[source]

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) prices for assets. Asset dimension should be the last, e.g. (n_asset, ) or (N, n_asset)

  • 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 BsmMax2(sigma, cor=None, weight=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Option on the max of two assets. Payout = max( max(F_1, F_2) - K, 0 ) for all or max( K - max(F_1, F_2), 0 ) for put option

References

  • Rubinstein M (1991) Somewhere Over the Rainbow. Risk 1991:63–66

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.BsmMax2(0.2*np.ones(2), cor=0, divr=0.1, intr=0.05)
>>> m.price(strike=[90, 100, 110], spot=100*np.ones(2), texp=3)
array([15.86717049, 11.19568103,  7.71592217])
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

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

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)[source]

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) prices for assets. Asset dimension should be the last, e.g. (n_asset, ) or (N, n_asset)

  • 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 BsmSpreadBjerksund2014(sigma, cor=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Bjerksund & Stensland (2014)’s approximation for spread option.

References

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.BsmSpreadBjerksund2014((0.2, 0.3), cor=-0.5)
>>> m.price(np.arange(-2, 3) * 10, [100, 120], 1.3)
array([22.13172022, 17.18304247, 12.98974214,  9.54431944,  6.80612597])
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

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

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)[source]

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) prices for assets. Asset dimension should be the last, e.g. (n_asset, ) or (N, n_asset)

  • 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 BsmSpreadKirk(sigma, cor=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Kirk’s approximation for spread option.

References

  • Kirk E (1995) Correlation in the energy markets. In: Managing Energy Price Risk, First. Risk Publications, London, pp 71–78

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.BsmSpreadKirk((0.2, 0.3), cor=-0.5)
>>> m.price(np.arange(-2, 3) * 10, [100, 120], 1.3)
array([22.15632247, 17.18441817, 12.98974214,  9.64141666,  6.99942072])
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

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

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)[source]

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) prices for assets. Asset dimension should be the last, e.g. (n_asset, ) or (N, n_asset)

  • 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 NormBasket(sigma, cor=None, weight=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Basket option pricing under the multiasset Bachelier model

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

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_spread(sigma, cor=None, intr=0.0, divr=0.0, is_fwd=False)[source]

Initalize an instance for spread option pricing. This is a special case of the initalization with weight = (1, -1)

Examples

>>> import numpy as np
>>> import pyfeng as pf
>>> m = pf.NormSpread.init_spread((20, 30), cor=-0.5, intr=0.05)
>>> m.price(np.arange(-2, 3) * 10, [100, 120], 1.3)
array([17.95676186, 13.74646821, 10.26669936,  7.47098719,  5.29057157])
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)[source]

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) prices for assets. Asset dimension should be the last, e.g. (n_asset, ) or (N, n_asset)

  • 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 OptMaABC(sigma, cor=None, intr=0.0, divr=0.0, is_fwd=False)[source]
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

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

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)[source]

Call/put option price.

Parameters
  • strike – strike price.

  • spot – spot (or forward) prices for assets. Asset dimension should be the last, e.g. (n_asset, ) or (N, n_asset)

  • 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