py_vollib.ref_python.black_scholes_merton.greeks.numerical
¶
A library for option pricing, implied volatility, and greek calculation. py_vollib is based on lets_be_rational, a Python wrapper for LetsBeRational by Peter Jaeckel as described below.
- copyright:
© 2023 Larry Richards
- license:
MIT, see LICENSE for more details.
py_vollib.ref_python is a pure python version of py_vollib without any dependence on LetsBeRational. It is provided purely as a reference implementation for sanity checking. It is not recommended for industrial use.¶
Module Contents¶
Functions¶
|
Returns the Black-Scholes-Merton delta of an option. |
|
Returns the Black-Scholes-Merton theta of an option. |
|
Returns the Black-Scholes-Merton vega of an option. |
|
Returns the Black-Scholes-Merton rho of an option. |
|
Returns the Black-Scholes-Merton gamma of an option. |
Test by comparing analytical and numerical values. |
Attributes¶
- f¶
- delta(flag, S, K, t, r, sigma, q)[source]¶
Returns the Black-Scholes-Merton delta of an option.
- Parameters:
flag (str) – ‘c’ or ‘p’ for call or put.
S (float) – underlying asset price
K (float) – strike price
t (float) – time to expiration in years
r (float) – annual risk-free interest rate
sigma (float) – volatility
q (float) – annualized continuous dividend yield
- Returns:
float
- theta(flag, S, K, t, r, sigma, q)[source]¶
Returns the Black-Scholes-Merton theta of an option.
- Parameters:
flag (str) – ‘c’ or ‘p’ for call or put.
S (float) – underlying asset price
K (float) – strike price
t (float) – time to expiration in years
r (float) – annual risk-free interest rate
sigma (float) – volatility
q (float) – annualized continuous dividend yield
- Returns:
float
- vega(flag, S, K, t, r, sigma, q)[source]¶
Returns the Black-Scholes-Merton vega of an option.
- Parameters:
flag (str) – ‘c’ or ‘p’ for call or put.
S (float) – underlying asset price
K (float) – strike price
t (float) – time to expiration in years
r (float) – annual risk-free interest rate
sigma (float) – volatility
q (float) – annualized continuous dividend yield
- Returns:
float
- rho(flag, S, K, t, r, sigma, q)[source]¶
Returns the Black-Scholes-Merton rho of an option.
- Parameters:
flag (str) – ‘c’ or ‘p’ for call or put.
S (float) – underlying asset price
K (float) – strike price
t (float) – time to expiration in years
r (float) – annual risk-free interest rate
sigma (float) – volatility
q (float) – annualized continuous dividend yield
- Returns:
float
- gamma(flag, S, K, t, r, sigma, q)[source]¶
Returns the Black-Scholes-Merton gamma of an option.
- Parameters:
flag (str) – ‘c’ or ‘p’ for call or put.
S (float) – underlying asset price
K (float) – strike price
t (float) – time to expiration in years
r (float) – annual risk-free interest rate
sigma (float) – volatility
q (float) – annualized continuous dividend yield
- Returns:
float
- test_analytical_vs_numerical()[source]¶
Test by comparing analytical and numerical values.
>>> S = 49 >>> K = 50 >>> r = .05 >>> q = .05 >>> t = 0.3846 >>> sigma = 0.2 >>> flag = 'c'
>>> epsilon = .0001
>>> v1 = delta(flag, S, K, t, r, sigma, q) >>> v2 = adelta(flag, S, K, t, r, sigma, q) >>> abs(v1-v2)<epsilon True
>>> v1 = gamma(flag, S, K, t, r, sigma, q) >>> v2 = agamma(flag, S, K, t, r, sigma, q) >>> abs(v1-v2)<epsilon True
>>> v1 = rho(flag, S, K, t, r, sigma, q) >>> v2 = arho(flag, S, K, t, r, sigma, q) >>> abs(v1-v2)<epsilon True
>>> v1 = vega(flag, S, K, t, r, sigma, q) >>> v2 = avega(flag, S, K, t, r, sigma, q) >>> abs(v1-v2)<epsilon True
>>> v1 = theta(flag, S, K, t, r, sigma, q) >>> v2 = atheta(flag, S, K, t, r, sigma, q) >>> abs(v1-v2)<epsilon True