py_vollib.ref_python.black_scholes_merton
¶
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.¶
Subpackages¶
Submodules¶
Package Contents¶
Functions¶
|
Calculate the d1 component of the Black-Scholes-Merton PDE. |
|
Calculate the d2 component of the Black-Scholes-Merton PDE. |
|
Return the Black-Scholes-Merton call price |
|
Return the Black-Scholes-Merton put price |
|
Return the Black-Scholes-Merton call price implemented in |
Attributes¶
- N¶
- d1(S, K, t, r, sigma, q)[source]¶
Calculate the d1 component of the Black-Scholes-Merton PDE.
- Parameters:
S (float) – underlying asset price
K (float) – strike price
sigma (float) – annualized standard deviation, or volatility
t (float) – time to expiration in years
r (float) – risk-free interest rate
q (float) – annualized continuous dividend rate
From Espen Haug, The Complete Guide To Option Pricing Formulas Page 4
>>> S=100 >>> K=95 >>> q=.05 >>> t = 0.5 >>> r = 0.1 >>> sigma = 0.2
>>> d1_published_value = 0.6102 >>> d1_calc = d1(S,K,t,r,sigma,q) >>> abs(d1_published_value - d1_calc) < 0.0001 True
- d2(S, K, t, r, sigma, q)[source]¶
Calculate the d2 component of the Black-Scholes-Merton PDE.
- Parameters:
S (float) – underlying asset price
K (float) – strike price
sigma (float) – annualized standard deviation, or volatility
t (float) – time to expiration in years
r (float) – risk-free interest rate
q (float) – annualized continuous dividend rate
From Espen Haug, The Complete Guide To Option Pricing Formulas Page 4
>>> S=100 >>> K=95 >>> q=.05 >>> t = 0.5 >>> r = 0.1 >>> sigma = 0.2
>>> d2_published_value = 0.4688 >>> d2_calc = d2(S,K,t,r,sigma,q) >>> abs(d2_published_value - d2_calc) < 0.0001 True
- bsm_call(S, K, t, r, sigma, q)[source]¶
Return the Black-Scholes-Merton call price implemented in python (for reference).
- Parameters:
S (float) – underlying asset price
K (float) – strike price
sigma (float) – annualized standard deviation, or volatility
t (float) – time to expiration in years
r (float) – risk-free interest rate
q (float) – annualized continuous dividend rate
- bsm_put(S, K, t, r, sigma, q)[source]¶
Return the Black-Scholes-Merton put price implemented in python (for reference).
- Parameters:
S (float) – underlying asset price
K (float) – strike price
sigma (float) – annualized standard deviation, or volatility
t (float) – time to expiration in years
r (float) – risk-free interest rate
q (float) – annualized continuous dividend rate
From Espen Haug, The Complete Guide To Option Pricing Formulas Page 4
>>> S=100 >>> K=95 >>> q=.05 >>> t = 0.5 >>> r = 0.1 >>> sigma = 0.2
>>> p_published_value = 2.4648 >>> p_calc = bsm_put(S, K, t, r, sigma, q) >>> abs(p_published_value - p_calc) < 0.0001 True
- black_scholes_merton(flag, S, K, t, r, sigma, q)[source]¶
Return the Black-Scholes-Merton call price implemented in python (for reference).
- Parameters:
S (float) – underlying asset price
K (float) – strike price
sigma (float) – annualized standard deviation, or volatility
t (float) – time to expiration in years
r (float) – risk-free interest rate
q (float) – annualized continuous dividend rate
flag (str) – ‘c’ or ‘p’ for call or put.
From Espen Haug, The Complete Guide To Option Pricing Formulas Page 4
>>> S=100 >>> K=95 >>> q=.05 >>> t = 0.5 >>> r = 0.1 >>> sigma = 0.2
>>> p_published_value = 2.4648 >>> p_calc = black_scholes_merton('p', S, K, t, r, sigma, q) >>> abs(p_published_value - p_calc) < 0.0001 True