Binomial trees are the most pedagogically clear pricing technique. Discretise time, model the underlying as a tree of up/down moves with risk-neutral probabilities, work backward from expiry. They handle early exercise naturally, converge to Black-Scholes as the time-step shrinks, and remain the standard reference for low-dimensional path-dependent and American options.
Cox-Ross-Rubinstein parameterisation
u = exp(σ √Δt)d = 1/u = exp(-σ √Δt)p = (exp(r Δt) - d) / (u - d)
Time step Δt = T/n. The up-move u and down-move d are chosen so that variance per step is σ² Δt (matches GBM in the limit). The risk-neutral probability p makes expected return equal r per step.
Tree construction
At step k, the stock can take any of the values S_0 · u^j · d^(k-j) for j = 0, ..., k. The tree has (n+1)(n+2)/2 nodes. Width grows as √k due to the random-walk variance scaling.
Backward induction
At t = T: V(S, T) = payoff(S). For k = n-1, n-2, ..., 0: at each node S, compute the continuation value as the discounted expected next-step value, and (for American options) compare to immediate exercise:
V(S, kΔt) = max(exercise, e^{-rΔt}[p V(S·u, (k+1)Δt) + (1-p) V(S·d, (k+1)Δt)])
Convergence
CRR converges to Black-Scholes at O(1/n). Convergence is wavy — the price oscillates around the true value as n increases. Better-convergent variants:
- Jarrow-Rudd: drift-adjusted; smoother convergence.
- Tian (1993): variance-matched; second-order accurate.
- Trinomial trees: three branches per step; smoother and more flexible.
- Leisen-Reimer: chosen so that the option terminates ITM or OTM at fixed binomial CDF points; very smooth.
Trinomial trees
Three branches per step: up, down, stay. The extra parameter allows targeting specific volatility curve features or grid-stretching toward the strike. Used for callable bonds, Bermudan swaptions, and path-dependent options where the binomial grid is too coarse.
When trees are the right tool
- American / Bermudan options on a single underlying.
- Path-dependent options with simple state-augmentation (e.g., lookback with running max).
- Pedagogical illustrations of risk-neutral pricing.
- Volatility surface fitting for vanilla options.
- Bond-option pricing under short-rate models (with extra adjustments).
When trees fail
- Multi-asset options: tree explodes exponentially (2^n in d dimensions).
- Complex stochastic-vol models: number of state variables makes trees impractical.
- Very long-maturity products: many time steps + exotic features.
- Path-dependent options with continuous lookback / barrier — need very fine grids.
Implementation
def crr_american_put(S0, K, T, r, sigma, n=200):import numpy as npdt = T/nu = np.exp(sigma*np.sqrt(dt))d = 1/up = (np.exp(r*dt) - d) / (u - d)# Terminal payoffsS = S0 * u**np.arange(n,-1,-1) * d**np.arange(0,n+1)V = np.maximum(K - S, 0)# Backward inductionfor k in range(n-1, -1, -1):S = S[1:]*d # prices at step kV = np.exp(-r*dt) * (p*V[:-1] + (1-p)*V[1:])V = np.maximum(V, K - S) # early exercisereturn V[0]
Exercise
American put: S(0) = 50, K = 50, r = 5%, σ = 30%, T = 1, n = 3 steps. (1) Compute u, d, p, Δt. (2) Build the stock tree. (3) Compute the option price by backward induction.