How to value a Call Option with Python

Luiggi Trejo
3 min readFeb 22
Photo by Daniel Dan on Unsplash

The value of a call option on a stock is based on several factors, including the current stock price, the exercise price of the option, the time remaining until expiration, the expected volatility of the stock, and the risk-free interest rate.

One common way to calculate the value of a call option is to use the Black-Scholes option pricing model, which provides an estimate of the fair value of the option.

The Black-Scholes model takes the following inputs:

  1. Current stock price (S)
  2. Exercise price (X)
  3. Time until expiration (T)
  4. Risk-free interest rate (r)
  5. Expected volatility of the stock (σ)

Using these inputs, the Black-Scholes model calculates the theoretical value of the call option as follows:

C = SN(d1) — Xexp(-r*T)*N(d2)

where C is the value of the call option, N is the cumulative standard normal distribution function, and d1 and d2 are calculated as follows:

d1 = [ln(S/X) + (r + σ²/2)T] / (σsqrt(T))

d2 = d1 — σ*sqrt(T)

In this equation, ln denotes the natural logarithm, and sqrt denotes the square root. The variables r and σ represent the risk-free interest rate and the expected volatility of the stock, respectively.

Calculating the value of a call with Python

We will use the Black-Scholes model and Python. It is a popular programming language for data analysis and finance and is widely used by professionals in these fields.

import math

def black_scholes_call(S, X, T, r, sigma):
d1 = (math.log(S / X) + (r + (sigma ** 2) / 2) * T) / (sigma * math.sqrt(T))
d2 = d1 - sigma * math.sqrt(T)
N_d1 = norm_cdf(d1)
N_d2 = norm_cdf(d2)
call_value = S * N_d1 - X * math.exp(-r * T) * N_d2
return call_value

def norm_cdf(x):
"""Cumulative distribution function for the standard normal distribution."""
return (1.0 + math.erf(x / math.sqrt(2.0))) / 2.0

The black_scholes_call() function takes five inputs:

  • S: The current stock price.
  • X: The exercise price of…
Luiggi Trejo

I raise my (coffe) cup to you