Derivatives

Binomial Options Pricing

Cox-Ross-Rubinstein's 1979 lattice — the tree that prices American options Black-Scholes cannot

The Cox-Ross-Rubinstein binomial model prices options on a discrete tree of up/down stock moves, propagating value backward from terminal payoffs using risk-neutral probabilities. With 100 time steps it matches Black-Scholes to four decimal places — and unlike the closed-form formula, it handles American early exercise natively.

  • AuthorsCox, Ross, Rubinstein (1979)
  • Up factoru = e^(σ√Δt)
  • Risk-neutral p(e^(rΔt) − d) / (u − d)
  • Convergence to B-S~4 d.p. at n = 100 steps
  • Killer featureAmerican early exercise
  • CostO(n²) nodes, O(n²) work

Interactive visualization

Press play, or step through manually. The visualization is yours to drive — try it before reading on.

Open visualization fullscreen ↗

Watch the 60-second explainer

A condensed visual walkthrough — narrated, captioned, under a minute.

The tree in one paragraph

Discretize time into n steps of length Δt = T/n. At each step, the stock either rises by factor u or falls by factor d. After n steps the stock has visited n + 1 distinct terminal prices — a recombining tree, because two up-then-down moves land at the same node as down-then-up. Option payoffs are evaluated at the leaves: max(S − K, 0) for a call, max(K − S, 0) for a put. Then for each interior node, the option's value is the discounted risk-neutral expectation of its two children:

V(i, j) = e^(−r·Δt) · [ p · V(i+1, j+1) + (1 − p) · V(i+1, j) ]

u = e^(σ √Δt)
d = 1 / u
p = (e^(r·Δt) − d) / (u − d)

The root V(0, 0) is the option price today. American options add one check per node: replace V(i, j) with max(V(i, j), intrinsic) — exercise immediately if that beats continuation.

Worked example: 2-step European call

Spot S₀ = 100, strike K = 100, T = 1 year, r = 5%, σ = 30%, two time steps (Δt = 0.5):

QuantityFormulaValue
ue^(0.30 × √0.5)1.2363
d1 / u0.8089
p(e^(0.025) − 0.8089) / (1.2363 − 0.8089)0.5066
S_uu100 × u²152.85
S_ud = S_du100 × u × d100.00
S_dd100 × d²65.43
C_uumax(152.85 − 100, 0)52.85
C_udmax(100 − 100, 0)0.00
C_ddmax(65.43 − 100, 0)0.00
C_u (step 1, up)e^(−0.025)·(0.5066·52.85 + 0.4934·0)26.11
C_d (step 1, down)e^(−0.025)·(0.5066·0 + 0.4934·0)0.00
C₀ (root)e^(−0.025)·(0.5066·26.11 + 0.4934·0)$12.90

The Black-Scholes price for the same European call is $14.23 — a two-step tree is coarse. Refine to n = 100 and the binomial price converges to $14.23 within four decimal places. Refine to n = 1000 and you're at six. The lattice is asymptotically exact; the only error is discretization.

Why the formula works — the replicating portfolio

At each node, you can build a portfolio of Δ shares and B bonds that exactly replicates the option's payoff in both the up and down state. Solving the two linear equations:

Δ · S·u + B · e^(rΔt) = V_up
Δ · S·d + B · e^(rΔt) = V_down

⇒  Δ = (V_up − V_down) / (S(u − d))
   B = e^(−rΔt) · (u·V_down − d·V_up) / (u − d)

The portfolio costs Δ·S + B today, and that cost must equal the option's no-arbitrage price. Substituting yields the discounted risk-neutral expectation formula above. The drift of the stock doesn't appear — the up and down probabilities under the real-world measure cancel in the hedging argument, exactly as in Black-Scholes.

American options — where the tree shines

An American option can be exercised at any time before expiry. The pricing rule changes at every interior node: take the maximum of continuation value and immediate intrinsic value.

V(i, j) = max(
  intrinsic(S(i, j)),                          # exercise now
  e^(−r·Δt) · [ p · V_up + (1 − p) · V_down ]  # hold
)

For an American put deep in the money, intrinsic value can exceed continuation value — you collect K − S now instead of waiting for time decay to erode the optionality. The tree decides node-by-node when to exercise. Black-Scholes cannot perform this optimization; an American put has no closed-form solution. For an American call on a non-dividend stock, early exercise is never optimal (a standard result), so Black-Scholes still applies. For dividend-paying calls, early exercise can be optimal just before ex-dividend dates, and the tree captures it.

Binomial vs other option pricers

Binomial (CRR)Black-ScholesMonte CarloFinite-difference PDE
FormRecursive latticeClosed formSamplingGrid PDE solver
European optionsYes (converges)ExactYesYes
American optionsYes (natural)NoHard (Longstaff-Schwartz)Yes (explicit/implicit)
Path-dependentLimited (Asian needs extension)LimitedYes (natural fit)Hard
Discrete dividendsNatural (drop node value)AwkwardNaturalPossible
Speed (vanilla call)~ms (100 steps)MicrosecondsSeconds~ms
Convergence rateO(1/n)ExactO(1/√N)O(Δt + Δx²)
Best forAmerican, dividends, teachingVanilla European, IV quotingExotics, high-dimCalibration, smile fitting

Convergence — the famous oscillation

Plot the binomial price as a function of n and you see a characteristic damped oscillation around the Black-Scholes value. The error envelope is O(1/n), but the oscillation arises because terminal nodes shift discretely whenever n crosses a value where the strike K lies exactly on a lattice point. Smoothing tricks reduce this:

  • Black-Scholes-smoothed terminal layer. Replace the noisy max(S − K, 0) at expiry with Black-Scholes values evaluated at the penultimate layer's nodes. Removes most of the oscillation.
  • Leisen-Reimer (1996). Re-derives u, d, p from a bias-corrected inverse-binomial approximation to N(d₁) and N(d₂). Four-decimal accuracy in 20 steps versus CRR's 100.
  • Richardson extrapolation. Run the tree at n and 2n, take 2·V(2n) − V(n). Cancels the leading O(1/n) error term.

Implementation in 15 lines of Python

import numpy as np

def binomial_call(S0, K, T, r, sigma, n, american=False):
    dt = T / n
    u = np.exp(sigma * np.sqrt(dt))
    d = 1 / u
    p = (np.exp(r * dt) - d) / (u - d)
    disc = np.exp(-r * dt)
    # terminal prices and payoffs
    j = np.arange(n + 1)
    S = S0 * (u ** (n - j)) * (d ** j)
    V = np.maximum(S - K, 0)
    # backward induction
    for i in range(n - 1, -1, -1):
        V = disc * (p * V[:-1] + (1 - p) * V[1:])
        if american:
            S_i = S0 * (u ** (i - np.arange(i + 1))) * (d ** np.arange(i + 1))
            V = np.maximum(V, S_i - K)
    return V[0]

That's the entire pricer. At n = 100, it returns the Black-Scholes price for a European call to about four decimal places in roughly 200 microseconds. The American-put branch is the one-line modification that justifies the model's continued use 45 years after publication.

Historical context — three Stanford economists, one short paper

John Cox, Stephen Ross, and Mark Rubinstein published "Option pricing: A simplified approach" in the Journal of Financial Economics in September 1979, six years after Black-Scholes. Their stated goal was pedagogical — to derive Black-Scholes without stochastic calculus, using only no-arbitrage and a discrete tree. They succeeded. The paper has been cited over 11,000 times; every introductory derivatives textbook teaches Black-Scholes through CRR, not Itô's lemma. Sharpe, Hull, and McDonald all build their textbooks around the binomial as the entry point.

The model's commercial impact came from its computational tractability. Wall Street's early option-pricing systems ran on trees, not closed forms, because the lattice handled American options, dividends, and barriers — features that vanilla Black-Scholes ignored. The CBOE switched to closed-form Black-Scholes for vanilla quoting in the 1980s, but exotics desks kept the tree.

Variants and extensions

  • Jarrow-Rudd (1983). Equal-probability lattice (p = 1/2) with drift in u and d. Same convergence behavior, cleaner derivation of risk-neutral measure.
  • Trinomial tree (Boyle 1986). Three branches per node (up, middle, down). Faster convergence than binomial and more flexible for fitting market smiles.
  • Implied trees (Derman-Kani 1994, Rubinstein 1994). Fit u(i, j), d(i, j), p(i, j) from market option prices node-by-node. Reproduces the volatility smile by construction.
  • Adaptive mesh (Figlewski-Gao 1999). Fine mesh near the strike and barriers, coarse elsewhere. Speeds up barrier-option pricing dramatically.
  • Leisen-Reimer (1996). Bias-corrected u, d, p — four-decimal accuracy in 20 steps. The current state of the art for short trees.
  • Tian (1993). Three-parameter fit matching the first three moments of the log-normal distribution; smoother convergence.

Real-world applications

  • American option pricing on equities. Bloomberg's OVME and Reuters Eikon use binomial trees for American stock options on dividend-paying names. Default 100 steps.
  • Employee stock option valuation. ASC 718 expense computations under FASB allow either Black-Scholes or a tree; firms with long-vesting and early-exercise behavior prefer the tree.
  • Real options. Capital-budgeting flexibility (delay, expand, abandon) values naturally as American-style real options on project NPV — typically priced on a binomial lattice in MBA finance textbooks.
  • Convertible bond pricing. The conversion option is an American call with discrete coupon and call dates — a job for the tree, not Black-Scholes.
  • Interest-rate derivatives. Hull-White and Black-Derman-Toy short-rate models use trinomial trees to value Bermudan swaptions and callable bonds.
  • Crypto options. Deribit and CME bitcoin options markets quote in Black-Scholes IV but settlement and exotics often use lattice-based pricers because of discrete jump risk around halvings.

Common pitfalls

  • Wrong risk-neutral probability. A common bug is using p = (e^(rT) − d) / (u − d) with T instead of Δt. The probability is per-step.
  • Negative probabilities. If d > e^(rΔt) or u < e^(rΔt), p falls outside [0, 1] and the model breaks. Symptom: arbitrage in the assumed u and d. Fix: shrink Δt or recheck σ.
  • Ignoring the dividend yield. Replace r with r − q in the risk-neutral probability for continuous dividends; for discrete dividends, drop the node by the cash amount on the ex-dividend step.
  • Confusing American calls on non-dividend stocks. Early exercise of an American call on a non-dividend stock is never optimal — Black-Scholes prices it exactly. Running an American tree adds no value and burns CPU.
  • Coarse lattice for short-dated options. Five-step trees for a one-week option are wildly inaccurate near the strike. Scale steps with expiry — 50 steps per month is a sane minimum.
  • Forgetting the optimal-exercise boundary. For American puts, the early-exercise boundary is the curve S*(t) below which immediate exercise dominates. The tree finds this implicitly; closed-form analytic approximations (Bjerksund-Stensland) need explicit boundary recovery.

Frequently asked questions

What's the difference between risk-neutral and real-world probabilities?

Real-world probability is the actual chance the stock goes up. Risk-neutral probability p = (e^(rΔt) − d) / (u − d) is the fictitious probability under which the stock's expected return equals the risk-free rate. It doesn't equal anyone's actual belief — it's the probability that makes the no-arbitrage pricing equation work. Both Black-Scholes and the binomial tree price options as discounted risk-neutral expectations of payoff, because the drift of the stock cancels in the hedging argument.

How fast does the binomial tree converge to Black-Scholes?

Standard CRR convergence is O(1/n) — the error halves as you double the number of steps. With n = 100 steps a European call typically matches Black-Scholes to four decimal places. Refinements like Leisen-Reimer (1996) use bias-corrected probabilities and achieve four-decimal accuracy in 20 steps. For pricing speed alone, Black-Scholes wins for vanillas; the tree earns its keep on American options and discrete dividends.

Why is the binomial tree used for American options?

At each tree node, you compare the continuation value (risk-neutral expectation of holding) against the immediate exercise value (max(S − K, 0) for a call, max(K − S, 0) for a put) and take the larger. Black-Scholes can't do this — it solves the European PDE in one shot. The lattice's discrete time structure naturally accommodates the optimal-stopping problem that defines American-option pricing.

What are u and d typically set to?

Cox-Ross-Rubinstein parameterization sets u = e^(σ√Δt) and d = 1/u, which matches the variance of geometric Brownian motion. Jarrow-Rudd uses u = e^((r − σ²/2)Δt + σ√Δt), d = e^((r − σ²/2)Δt − σ√Δt) with p = 1/2 — equal probabilities, drift in the lattice. Both converge to the same Black-Scholes limit; CRR is simpler and more common in textbooks.

Can the binomial model price exotic options?

Yes, with limits. Barrier options, lookback options, and Bermudan options are natural on a lattice. Path-dependent options like Asian (average-price) options need extended state variables — typically you augment each node with the running average, which can blow up tree size. For full path dependence, Monte Carlo (with Longstaff-Schwartz regression for early exercise) is usually preferred.

Does the tree handle dividends?

Continuous dividend yield q is handled by replacing r with (r − q) in the risk-neutral probability: p = (e^((r−q)Δt) − d) / (u − d). Discrete dividends require dropping the tree value by the dividend amount at the ex-dividend node, which is messier — the tree no longer recombines cleanly, and you may need to use proportional approximations or escrow models. This is one place where lattices definitively beat closed-form pricing.