What Is the Black-Scholes Model?
The Black-Scholes model is the foundational framework for pricing European options, published by Fischer Black and Myron Scholes in 1973 (with key contributions from Robert Merton). It gives a closed-form price from spot, strike, time, rate, and volatility — and earned Scholes and Merton the 1997 Nobel Prize in Economics.
- What it solved: rigorous option prices instead of ad-hoc rules of thumb
- What it still is: the starting point for options desks, implied volatility, and the Greeks
- What it is not: a perfect description of real markets (see assumptions below)
Black-Scholes Formula
The Black-Scholes formula for a European call and put is:
European Call Option
European Put Option
Where:
And:
- S₀ = current stock price
- K = strike price
- T = time to expiration (in years)
- r = risk-free interest rate
- σ = volatility of the underlying asset
- N(·) = cumulative standard normal distribution function
Note: the same model is often described as the "Black-Scholes equation" when referring to its PDE form (derived later in this article), as distinct from the closed-form call/put formula above.
Black-Scholes Equation
The Black-Scholes equation is the PDE that a European option price V(S,t) must satisfy under the model assumptions:
- Formula vs equation: the formula is the closed-form call/put solution; the equation is the PDE
- Boundary condition: at expiry, V equals the payoff max(S−K,0) or max(K−S,0)
- Link to practice: solving/calibrating this (or extensions) is core derivatives pricing work
Assumptions of the Black-Scholes Model
Assumptions of the Black-Scholes model include geometric Brownian motion with constant volatility, no dividends (in the basic form), constant rates, no transaction costs or taxes, continuous trading, and no arbitrage. Real markets violate several of these — which is why smiles, stochastic vol, and local vol models exist.
- GBM / lognormal prices: ignores fat tails and jumps
- Constant σ: contradicts volatility smiles and clustering
- Frictionless market: ignores spreads, gaps, and discrete hedging
Understanding where assumptions break is essential for quant practitioners.
Intuition Behind Each Component
Understanding the formula intuitively is more valuable than memorising it.
The Call Formula: C = S₀N(d₁) - Ke⁻ʳᵀN(d₂)
Think of this as two parts:
S₀N(d₁) — The expected value of receiving the stock, weighted by the probability that the option finishes in the money (under the stock-price measure). N(d₁) is also the option's delta — how much the option price changes per £1 change in the stock.
Ke⁻ʳᵀN(d₂) — The present value of paying the strike price, weighted by the probability the option finishes in the money (under the risk-neutral measure). N(d₂) is the risk-neutral probability of exercise.
The call price is the difference: what you expect to receive minus what you expect to pay, discounted to the present.
Understanding d₁ and d₂
d₂ captures how far the stock is from the strike, adjusted for drift and time:
- If the stock is well above the strike, d₂ is large and positive → N(d₂) ≈ 1 → the option will almost certainly be exercised
- If the stock is well below the strike, d₂ is large and negative → N(d₂) ≈ 0 → the option will almost certainly expire worthless
d₁ = d₂ + σ√T adds a volatility adjustment. The difference between d₁ and d₂ reflects the asymmetry between the stock-price measure and the risk-neutral measure.
The Assumptions
The detailed breakdown of each Black-Scholes assumption (GBM, constant vol, rates, dividends, frictions) is summarised above; the sections below expand where the model breaks in practice.
1. Geometric Brownian Motion
The stock price follows:
where W is a Brownian motion. This means:
- Returns are normally distributed
- The stock price is log-normally distributed
- Volatility is constant over time
In reality: Returns have fat tails (more extreme moves than a normal distribution predicts), volatility changes over time, and there are occasional jumps (flash crashes, earnings surprises).
2. Constant Volatility
The model assumes σ is known and constant. In practice, implied volatility varies by strike (the volatility smile/skew) and by maturity (the term structure of volatility).
In reality: Volatility is itself stochastic. This is why models like Heston and SABR were developed.
3. No Dividends
The basic formula assumes the stock pays no dividends during the option's life.
Extension: The model can be adjusted for continuous dividend yields by replacing S₀ with S₀·e^(-qT), where q is the continuous dividend yield.
4. Risk-Free Rate Is Constant
The interest rate r is assumed constant and known.
In reality: Interest rates fluctuate, though for short-dated options this assumption is usually reasonable.
5. No Transaction Costs
The model assumes frictionless trading — no spreads, commissions, or market impact.
In reality: Transaction costs are significant and affect hedging strategies.
6. Continuous Trading
The derivation assumes you can trade continuously to maintain a perfect hedge.
In reality: Trading is discrete, and each rebalance incurs costs. This creates hedging error.
7. European Exercise Only
The basic formula prices European options (exercisable only at expiry). It does not directly apply to American options (exercisable any time).
Deriving Black-Scholes
The derivation uses several key ideas from stochastic calculus:
Step 1: Model the Stock
Assume the stock follows geometric Brownian motion: dS = μS dt + σS dW
Step 2: Apply Itô's Lemma
For any function V(S, t) of the stock price:
Step 3: Construct a Risk-Free Portfolio
Create a portfolio Π = V - (∂V/∂S)·S (the option minus delta shares). This eliminates the random dW term, making the portfolio instantaneously risk-free.
Step 4: No-Arbitrage Condition
A risk-free portfolio must earn the risk-free rate:
Step 5: The Black-Scholes PDE
Combining steps 2-4 yields the Black-Scholes partial differential equation:
Step 6: Solve with Boundary Conditions
For a European call with terminal condition V(S, T) = max(S - K, 0), solving this PDE gives the Black-Scholes formula.
Python Implementation
Here is a complete implementation:
import numpy as np from scipy.stats import norm class BlackScholes: """Black-Scholes European option pricing model.""" def __init__(self, S, K, T, r, sigma): self.S = S # Current stock price self.K = K # Strike price self.T = T # Time to expiry (years) self.r = r # Risk-free rate self.sigma = sigma # Volatility self.d1 = (np.log(S/K) + (r + sigma**2/2)*T) / (sigma*np.sqrt(T)) self.d2 = self.d1 - sigma*np.sqrt(T) def call_price(self): return (self.S * norm.cdf(self.d1) - self.K * np.exp(-self.r * self.T) * norm.cdf(self.d2)) def put_price(self): return (self.K * np.exp(-self.r * self.T) * norm.cdf(-self.d2) - self.S * norm.cdf(-self.d1)) def call_delta(self): return norm.cdf(self.d1) def put_delta(self): return norm.cdf(self.d1) - 1 def gamma(self): return norm.pdf(self.d1) / (self.S * self.sigma * np.sqrt(self.T)) def vega(self): return self.S * norm.pdf(self.d1) * np.sqrt(self.T) / 100 def call_theta(self): term1 = -(self.S * norm.pdf(self.d1) * self.sigma) / (2 * np.sqrt(self.T)) term2 = -self.r * self.K * np.exp(-self.r*self.T) * norm.cdf(self.d2) return (term1 + term2) / 365 def call_rho(self): return self.K * self.T * np.exp(-self.r*self.T) * norm.cdf(self.d2) / 100 def implied_volatility(self, market_price, option_type='call', tol=1e-8): """Newton-Raphson method to find implied vol.""" sigma = 0.2 # Initial guess for _ in range(100): bs = BlackScholes(self.S, self.K, self.T, self.r, sigma) price = bs.call_price() if option_type == 'call' else bs.put_price() vega = bs.vega() * 100 if abs(vega) < 1e-12: break sigma -= (price - market_price) / vega if abs(price - market_price) < tol: return sigma return sigma # Example usage option = BlackScholes(S=100, K=105, T=0.5, r=0.05, sigma=0.2) print(f"Call price: £{option.call_price():.4f}") print(f"Put price: £{option.put_price():.4f}") print(f"Delta: {option.call_delta():.4f}") print(f"Gamma: {option.gamma():.4f}") print(f"Vega: {option.vega():.4f}") print(f"Theta: {option.call_theta():.4f}")
Try this interactively with our free Black Scholes calculator, or explore charts in the options pricing playground.
The Greeks
The Greeks are partial derivatives of the option price with respect to model inputs. They quantify sensitivities:
| Greek | Measures | Formula (Call) |
|---|---|---|
| Delta (Δ) | Price sensitivity to stock | N(d₁) |
| Gamma (Γ) | Rate of change of delta | N'(d₁) / (Sσ√T) |
| Theta (Θ) | Time decay | -(Sσ N'(d₁))/(2√T) - rKe⁻ʳᵀN(d₂) |
| Vega (ν) | Sensitivity to volatility | S√T N'(d₁) |
| Rho (ρ) | Sensitivity to interest rate | KTe⁻ʳᵀN(d₂) |
These are not just theoretical — traders use Greeks daily to manage their positions. Delta hedging, gamma scalping, and vega trading are all fundamental trading strategies.
Extensions and Modern Usage
While the original model has limitations, it spawned an entire family of models:
Local Volatility (Dupire)
Makes volatility a function of stock price and time: σ(S, t). Can match any observed volatility surface exactly.
Stochastic Volatility (Heston)
Volatility itself follows a stochastic process. Captures the dynamics of volatility more realistically.
Jump-Diffusion (Merton)
Adds occasional jumps to the stock price process, capturing crash risk and sudden moves.
SABR Model
Stochastic Alpha Beta Rho — widely used in interest rate markets for its ability to capture smile dynamics.
Modern Practice
In practice, quant analysts at banks calibrate sophisticated models to market prices, but they often convert results back to Black-Scholes implied volatility for communication. The Black-Scholes framework remains the common language of options markets.
Frequently Asked Questions
Why is Black-Scholes still taught if the assumptions are wrong?
Because it provides the correct conceptual framework. The ideas — risk-neutral pricing, dynamic hedging, no-arbitrage — underpin all modern derivatives pricing. More advanced models are extensions of Black-Scholes, not replacements.
Can I use Black-Scholes for American options?
Not directly, since it prices European options only. For American calls on non-dividend-paying stocks, early exercise is never optimal, so Black-Scholes gives the correct price. For American puts and dividend-paying stocks, you need alternative methods (binomial trees, finite differences).
What is implied volatility?
The volatility σ that, when plugged into Black-Scholes, produces the market-observed option price. It is "implied" by the market and is the standard way options are quoted. When traders say volatility is "high" or "low," they mean implied volatility.
How accurate is Black-Scholes in practice?
For at-the-money, short-dated options on liquid stocks, it is reasonably accurate. For deep out-of-the-money options, long-dated options, or during market stress, the model's assumptions break down significantly and more sophisticated models are needed.
Want to go deeper on The Black-Scholes Model Explained: Formula?
This article covers the essentials — next, open your free Quantt prep workspace: a real course lesson, interview practice, and a preview of your personalised plan.
Free lesson + interview practice · Or code in the browser with no signup