Skip to content
Finance Lessons

Options Pricing

The Binomial Model in Full

The full Cox–Ross–Rubinstein tree — up/down factors, the risk-neutral probability q, backward induction over many steps, calibrating u and d to volatility, convergence to Black–Scholes, and early exercise.

10 min Updated Jun 5, 2026

Last lesson you built an option out of stock and cash, watched the real-world probabilities cancel out of the algebra, and saw a strange new number — a risk-neutral probability qq — appear from nowhere to do the pricing. That was the magic trick. This lesson is the instruction manual: we’ll write qq down as a clean formula, roll it across a multi-step tree, calibrate the whole thing to a real stock’s volatility, and watch it quietly turn into Black–Scholes as we slice time finer. By the end you’ll be able to price an option with a pen, a single exponential, and some patient arithmetic.

First, a sanity check on what you carried over from lesson 1.

Before you read — take a guess

In the one-step replication argument, the real-world probability that the stock goes up turned out to:

The one-step formula, stated cleanly

Set up the simplest possible future: one period of length TT, at the end of which the stock has either gone up to S0uS_0 u or down to S0dS_0 d. Here uu is the up-factor and dd is the down-factor, with d<1<ud < 1 < u (down means shrink, up means grow). The risk-free rate over the step is rr, so a dollar in the bank becomes erTe^{rT}.

The option is worth VuV_u if the stock goes up and VdV_d if it goes down. Lesson 1’s replication argument collapses to two lines. Define the risk-neutral up-probability:

q=erTdudq = \frac{e^{rT} - d}{u - d}

Then today’s fair price of the option is the discounted, qq-weighted average of the two outcomes:

V=erT[qVu+(1q)Vd]V = e^{-rT}\,\big[\,q\,V_u + (1 - q)\,V_d\,\big]

Read each piece slowly, because every later step is just this sentence repeated:

  • qVu+(1q)Vdq\,V_u + (1-q)\,V_d is an expected payoff — but weighted by qq, not by the real odds.
  • erTe^{-rT} discounts that expected payoff back to today’s money (a dollar at expiry is worth less than a dollar now).
  • qq itself is built only from uu, dd, and the risk-free growth erTe^{rT}. Notice what’s missing: the real probability of an up-move, the stock’s expected return, your opinion. None of it is in the formula.
Info:

The whole model in one breath

Expected payoff under qq, discounted at the risk-free rate. That’s it. Everything else in this lesson — extra steps, calibration, American options — is this one rule applied more times or with one extra comparison bolted on.

The no-arbitrage bound

For qq to behave like a probability it must sit between 0 and 1, and that forces a condition on the factors:

d<erT<ud < e^{rT} < u

This isn’t a technicality — it’s the law that keeps the market honest. Suppose it broke. If erTde^{rT} \le d, then even the down outcome (S0dS_0 d) grows at least as fast as cash: the stock can only beat or tie the bank, never lose to it. Borrow money, buy the stock, and you’ve got a guaranteed free lunch — arbitrage. If erTue^{rT} \ge u, the stock can never even keep up with the bank, so you short it, park the proceeds at the risk-free rate, and again pocket a riskless profit. Only when the risk-free growth sits strictly between the down and up outcomes does the stock genuinely have an upside and a downside — and only then is qq a number between 0 and 1.

Fill in the no-arbitrage condition and what it guarantees.

Pick the right option for each blank, then check.

The factors must satisfy . If this fails, a riskless appears, and the risk-neutral probability q falls the range 0 to 1.

Why q is not the real probability

This is the idea people trip over for years, so let’s nail it. Rearrange the definition of qq and ask what it makes true. Plug qq back into the expected stock price next period:

q(S0u)+(1q)(S0d)=S0erTq\,(S_0 u) + (1 - q)\,(S_0 d) = S_0\,e^{rT}

In words: qq is precisely the probability that makes the stock’s own expected growth equal the risk-free rate. Under the real odds, a risky stock should be expected to out-grow cash (that extra return is your reward for stomaching the risk). Under qq, that risk premium is surgically removed — every asset, risky or not, is “expected” to grow at exactly rr. That’s why qq is called the risk-neutral probability: it describes a make-believe world where nobody demands extra return for taking risk.

So qq is a pricing device, not a forecast. If you genuinely believe the stock will rise 70% of the time, that’s a fine trading opinion — but it does not go into the option price. The price uses qq, and qq is fixed by uu, dd, and rr alone. The market prices the option “as if” everyone were risk-neutral, not because they are, but because that’s the only weighting under which the replicating recipe and the option must cost the same. Confuse qq with your forecast and you’ll mis-price every contract you touch.

Warning:

q ≠ your probability of an up-move

qq feels like “the chance the stock rises,” and it is not. It’s the weight that makes the stock grow at the risk-free rate on average. Two stocks with identical uu, dd, rr share the same qq even if one is a meme coin and the other a utility — because qq encodes no view at all. Keep your forecast; the price doesn’t want it.

Match each symbol to what it actually represents.

Pick a term, then click its definition.

A fully worked two-step example

Numbers make it concrete. Take a stock at S0=100S_0 = 100, with u=1.2u = 1.2 and d=0.8d = 0.8 over each step, a European call struck at K=100K = 100, and — to keep the arithmetic clean — a risk-free rate of essentially zero for now, so erT=1e^{rT} = 1. We’ll run two steps.

Step A — grow the tree forward. Each node either multiplies by 1.2 or by 0.8:

PathPrice
up, up100×1.2×1.2100 \times 1.2 \times 1.2144
up, down (= down, up)100×1.2×0.8100 \times 1.2 \times 0.896
down, down100×0.8×0.8100 \times 0.8 \times 0.864

So the three terminal prices are 144, 96, 64. The call’s payoff at expiry is max(SK,0)\max(S - K, 0) with K=100K = 100:

  • Vuu=max(144100,0)=44V_{uu} = \max(144 - 100, 0) = 44
  • Vud=max(96100,0)=0V_{ud} = \max(96 - 100, 0) = 0
  • Vdd=max(64100,0)=0V_{dd} = \max(64 - 100, 0) = 0

Step B — compute qq. With erT=1e^{rT} = 1:

q=10.81.20.8=0.20.4=0.5q = \frac{1 - 0.8}{1.2 - 0.8} = \frac{0.2}{0.4} = 0.5

A tidy fifty-fifty. (That’s a coincidence of our zero-rate, symmetric-ish factors — don’t expect 0.5 in general.)

Step C — backward-induct, node by node. Now we walk the tree backwards, applying V=erT[qVu+(1q)Vd]V = e^{-rT}[q V_u + (1-q) V_d] at every interior node. With erT=1e^{-rT} = 1 and q=0.5q = 0.5 it’s just the average of the two children.

The upper node after one up-move (stock at 120) has children 44 and 0:

Vu=0.5×44+0.5×0=22V_u = 0.5 \times 44 + 0.5 \times 0 = 22

The lower node after one down-move (stock at 80) has children 0 and 0:

Vd=0.5×0+0.5×0=0V_d = 0.5 \times 0 + 0.5 \times 0 = 0

The root (today) has children Vu=22V_u = 22 and Vd=0V_d = 0:

V0=0.5×22+0.5×0=11V_0 = 0.5 \times 22 + 0.5 \times 0 = 11

The call is worth $11 today. Not the average payoff under your gut feeling — the discounted qq-weighted roll-back of the whole tree. Every interior node is the same formula; we just applied it three times, right-to-left.

In that two-step tree, what is the value at the upper interior node (the stock at 120, one step from expiry)?

Now drive the tree yourself. This island uses the same spot and factors but a small positive rate, so qq won’t be a clean 0.5 — watch the readout. Move the sliders and the values roll back from the terminal column to the root in real time.

Two-step tree: roll the call back to today2-step
10013.7580012024.664096014444
Risk-neutral prob. (q)
0.576
Option value today
13.75

Terminal nodes pay max(S − K, 0). Every node before them is the discounted, q-weighted average of its two children. Roll back to the root and you have the fair price — with no real-world probability anywhere in sight. (This tree uses r = 3%, so q is a touch above 0.5.)

Tip:

Same machine, the other flavour

Flip the same tree to a put and only the terminal payoffs change — they become max(KS,0)\max(K - S, 0). The roll-back rule, qq, and the discounting are identical. One engine prices both; the payoff column is the only thing that knows whether it’s a call or a put.

The same tree, now pricing a put2-step
1007.938017.041201.6564369641440
Risk-neutral prob. (q)
0.576
Option value today
7.93

Identical structure and identical q — only the terminal payoffs flip to max(K − S, 0). Backward induction doesn't care which option it's pricing.

Calibrating u and d to a real stock

So far u=1.2u = 1.2 and d=0.8d = 0.8 were plucked from thin air. To price a real option you need the tree to match the real stock’s wobbliness — its volatility σ\sigma (the annualised standard deviation of its returns). The Cox–Ross–Rubinstein (CRR) recipe sets the factors directly from σ\sigma and the length of one time step Δt\Delta t:

u=eσΔt,d=1u=eσΔtu = e^{\sigma \sqrt{\Delta t}}, \qquad d = \frac{1}{u} = e^{-\sigma \sqrt{\Delta t}}

Two things to notice. First, d=1/ud = 1/u, so an up-move followed by a down-move lands you exactly back where you started — the tree recombines, which keeps the number of nodes small (a 50-step tree has 51 terminal prices, not 2502^{50}). Second, the size of each move scales with Δt\sqrt{\Delta t}: chop a year into more steps, each Δt\Delta t shrinks, and each up/down jump gets smaller. A jittery, high-σ\sigma stock gets a wide tree (big uu); a sleepy bond-like stock gets a narrow one.

Worked calibration. Say σ=20%\sigma = 20\% per year and you want monthly steps, so Δt=1/12\Delta t = 1/12. Then Δt=0.08330.2887\sqrt{\Delta t} = \sqrt{0.0833} \approx 0.2887, and

u=e0.20×0.2887=e0.05771.0594,d=1/u0.9439u = e^{0.20 \times 0.2887} = e^{0.0577} \approx 1.0594, \qquad d = 1/u \approx 0.9439

Each month the stock either rises about 5.9% or falls about 5.6% in this model — a believable monthly wobble for a 20%-vol stock. More steps means finer time slices, smaller jumps, and a more realistic spread of outcomes.

Fill in the Cox–Ross–Rubinstein calibration.

Pick the right option for each blank, then check.

To match a stock with volatility σ over a step of length Δt, set u = and d = . Using more steps makes each Δt and each up/down jump .

Why does the CRR choice d = 1/u matter in practice?

Convergence: the tree is Black–Scholes in slow motion

Here’s the payoff for all that calibration. Take a fixed option and price it with a 2-step tree, then 10 steps, then 50, then 500. The prices don’t wander off — they converge, homing in on a single limiting number. That limit is the Black–Scholes price (the subject of the next lesson). As the number of steps \to \infty, each move shrinks toward zero, the jagged binomial distribution of final prices smooths into the bell-shaped lognormal distribution Black–Scholes assumes, and the discrete roll-back becomes the continuous formula.

So the binomial model isn’t a rough cousin of Black–Scholes — it’s Black–Scholes in slow motion, frozen into discrete frames you can actually compute by hand. The convergence isn’t perfectly smooth, either: as you add steps the binomial price tends to oscillate around the limit (even step counts and odd step counts approach from slightly different sides) before settling down. Doubling the steps roughly halves the error. A few hundred steps is usually plenty for a price you’d trade on.

Match each number of steps to what it buys you.

Pick a term, then click its definition.

American options: the one thing the tree can do that the formula can’t

Everything so far priced a European option (exercise only at expiry). Trees earn their keep on American options, where the holder may exercise any time. The plain Black–Scholes formula can’t handle that early-exercise choice; the tree handles it with a one-line tweak.

At every node of the tree, instead of just taking the rolled-back continuation value, you take the larger of two things:

Vnode=max(erT[qVu+(1q)Vd]hold / continuation value, payoff(Snode)exercise now)V_{\text{node}} = \max\Big(\underbrace{e^{-rT}[q V_u + (1-q)V_d]}_{\text{hold / continuation value}},\ \underbrace{\text{payoff}(S_{\text{node}})}_{\text{exercise now}}\Big)

At each step backward you ask: is exercising right now worth more than holding on? If yes, you exercise (and the node takes the immediate payoff); if no, you hold (and it keeps the continuation value). That single max\max is the entire difference between American and European pricing in a tree — and it’s exactly why an American option is worth at least as much as its European twin: the extra right to bail early can only help.

When does that early-exercise right actually have value? Almost always for American puts: deep in the money, a put’s payoff KSK - S is capped (the stock can’t fall below zero), so it can be worth grabbing the cash now and earning interest on it rather than waiting. For American calls on a non-dividend stock, early exercise is never optimal — you’d throw away time value and the interest on the strike — so they price the same as European calls. The exception is calls on a dividend-paying stock, where exercising just before a dividend can pay off.

Worked node: when an American put exercises early

Take a node where the stock has dropped to 70, on an American put struck at 100, with q=0.5q = 0.5 and (for simplicity) no discounting. Suppose its rolled-back continuation value — the qq-weighted average of holding on — works out to 28. The immediate-exercise payoff is max(10070,0)=30\max(100 - 70, 0) = 30.

Take the max: max(28, 30)=30\max(28,\ 30) = 30. Exercise now. Holding is worth only 28, but selling at the struck 100 today nets 30, and with a positive rate you’d also start earning interest on that cash. A European put would be forced to wait and would carry the lower value of 28 at this node — which is exactly why the American put is worth more.

Sort each option by whether early exercise can ever be worth it.

Place each item in the right group.

  • Any European option
  • American put when rates are high
  • American call on a non-dividend stock
  • American call on a dividend-paying stock
  • American put, deep in the money

Which statements about pricing American options on a tree are correct? (Select all that apply.)

Putting it together

You can now price an option from scratch: grow a recombining tree with u=eσΔtu = e^{\sigma\sqrt{\Delta t}} and d=1/ud = 1/u, stamp the payoff on every terminal node, compute q=(erTd)/(ud)q = (e^{rT} - d)/(u - d), and roll backward with V=erT[qVu+(1q)Vd]V = e^{-rT}[qV_u + (1-q)V_d] — taking a max\max against immediate exercise at every node if the option is American. Add steps and the price marches toward Black–Scholes.

Big picture

The binomial model — the whole machine

  • Binomial Model
    • One-step rule
      • q = (e^{rT} − d) / (u − d)
      • V = e^{−rT}[qV_up + (1−q)V_down]
      • No-arbitrage bound d < e^{rT} < u
    • q is a pricing device
      • Makes stock grow at the risk-free rate
      • Not your forecast of an up-move
    • Multi-step tree
      • Grow prices forward
      • Stamp payoffs at terminal nodes
      • Backward-induct node by node
    • Calibration (CRR)
      • u = e^{σ√Δt}, d = 1/u
      • d = 1/u so the tree recombines
      • More steps = finer time slices
    • Convergence
      • Steps → ∞ gives Black–Scholes
      • Price oscillates then settles
    • American options
      • max(continuation, exercise now) at each node
      • American ≥ European
      • Matters mostly for puts
One rule (discounted q-weighted average) applied across a calibrated, recombining tree. Add steps to reach Black–Scholes; add a max to handle American options.

Recap: the binomial model

Question 1 of 50 correct

The risk-neutral up-probability q is defined as:

Check your answer to continue.

Next up — The Black–Scholes Formula — we let the steps go to infinity. The tree’s discrete roll-back smooths into a single closed-form equation, the lognormal bell curve replaces the jagged terminal distribution, and that mysterious qq reappears wearing a new costume: N(d2)N(d_2), a probability hiding inside the most famous formula in finance.

Mark lesson as complete