Option Prices#


European option values from Black-Scholes model, allowing dividends.

(1)#\[\begin{split}\begin{align} C &= S \times e^{-q \times T} \times N(d1) - K \times e^{-r \times T} \times N(d2) \\\\ P &= K \times e^{-r \times T} \times N(-d2) - S \times e^{-q \times T} \times N(-d1) \end{align}\end{split}\]

of which,

(2)#\[\begin{split}\begin{align} d1 &= \frac{\ln\left(\frac{S}{K}\right) + \left(r - q + \frac{\sigma^2}{2}\right) \times T}{\sigma \sqrt{T}} \\\\ d2 &= d1 - \sigma \sqrt{T} \end{align}\end{split}\]


  • \(C\) = Call option price

  • \(P\) = Put option price

  • \(S\) = Current stock price

  • \(K\) = Strike price

  • \(T\) = Time to expiration (in years)

  • \(r\) = Risk-free interest rate (annualized)

  • \(q\) = Dividend yield (annualized)

  • \(N(\cdot)\) = Cumulative distribution function of the standard normal distribution

  • \(\sigma\) = Volatility of the underlying asset (annualized)


  • Black and Scholes (1972), The Valuation of Option Contracts and a Test of Market Efficiency, The Journal of Finance, 27(2), 399–417.


frds.measures.blsprice(S: float, K: float, r: float, T: float, sigma: float, q=0.0) Tuple[float, float][source]#

European option values from Black-Scholes model. See Option Prices.

  • S (float) – Current price of the underlying asset.

  • K (float) – Strike (exercise) price of the option.

  • r (float) – Annualized continuously compounded risk-free rate of return over the life of the option, expressed as a positive decimal number

  • T (float) – Time to expiration of the option, expressed in years.

  • sigma (float) – Annualized asset price volatility (i.e., annualized standard deviation of the continuously compounded asset return), expressed as a positive decimal number.

  • q (float, optional) – Annualized continuously compounded yield of the underlying asset over the life of the option, expressed as a decimal number. Defaults to 0.0.


Prices of European call and put options

Return type:

Tuple[float, float]


>>> from frds.measures import blsprice
>>> blsprice(0.67, 0.7, 0.01, 5.0, 0.33, 0.002)
(0.19003370474049647, 0.1925609132790535)