Binomial Tree Option Pricing › The One-Step Binomial Model

Michael BrenndoerferDecember 1, 202514 min read
Quantitative FinanceAll chapters
Part 6 of 15Numerical Methods for Derivative Pricing
Chapter 33Binomial Tree Option Pricing › The One-Step Binomial Model
Reading section 2 of 12 · The One-Step Binomial Model · 14 minSection 2 of 12 · 14 min

Book contents

Section 2 of 12 · 14 min read

Binomial Tree Option Pricing › The One-Step Binomial ModelOne section · Sections in this chapter2 / 12 ↓
Reading tools Definitions & inline links

Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.

Article links

Make inline references clickable

We begin with the simplest possible case: a single time step. This minimal setup strips away all complexity and reveals the core logic of option pricing in its purest form. By understanding how to price a derivative when there are only two possible future states of the world, we establish a foundation that extends directly to models with thousands of time steps.

Consider a stock with current price S0S_0 that, after one period, will either move up to Su=u⋅S0S_u = u \cdot S_0 or down to Sd=d⋅S0S_d = d \cdot S_0, where u>1u > 1 and d<1d < 1 are the up and down factors. The up factor exceeds one because an "up" move represents an increase in price, while the down factor falls below one because a "down" move represents a decrease. We want to price a derivative with payoff fuf_u if the stock goes up and fdf_d if it goes down. Notice that we have not specified the probability of an up move. This omission is intentional and, as we shall see, reflects a key insight in derivative pricing: the option price does not depend on the probability of the stock rising.

Out[2]:
Visualization
One-step tree with the root stock price S0 branching upward to Su=uS0 with payoff fu and downward to Sd=dS0 with payoff fd. Time labels mark t=0 at the root and t=T at the terminal nodes.
One-step binomial tree showing stock price evolution from $S_0$ to either $S_u$ (up state) or $S_d$ (down state), with corresponding option payoffs $f_u$ and $f_d$. The tree illustrates the two possible future states used to construct a replicating portfolio.

Replicating Portfolio Approach

The central idea behind option pricing in this framework is replication. Rather than trying to guess the probability of the stock going up or down, we construct a portfolio of basic assets whose payoff exactly matches the derivative's payoff in every possible future state. This replicating portfolio consists of two components: the underlying stock and a risk-free bond. If we can perfectly replicate the derivative using these tradeable instruments, then the derivative must have the same price as the portfolio, otherwise arbitrage opportunities would exist.

Suppose we hold Δ\Delta shares of stock and invest BB dollars in a risk-free bond earning rate rr over the period. The parameter Δ\Delta represents the number of shares we hold, which can be fractional, and BB represents our cash position in the risk-free bond, which can be positive (lending) or negative (borrowing). At expiration, after one time period TT, this portfolio is worth:

  • Up state: Δ⋅Su+B⋅erT=Δ⋅uS0+B⋅erT\Delta \cdot S_u + B \cdot e^{rT} = \Delta \cdot u S_0 + B \cdot e^{rT}
  • Down state: Δ⋅Sd+B⋅erT=Δ⋅dS0+B⋅erT\Delta \cdot S_d + B \cdot e^{rT} = \Delta \cdot d S_0 + B \cdot e^{rT}

For this portfolio to replicate the derivative, we need:

Δ⋅uS0+B⋅erT=fuΔ⋅dS0+B⋅erT=fd\begin{aligned} \Delta \cdot u S_0 + B \cdot e^{rT} &= f_u \\ \Delta \cdot d S_0 + B \cdot e^{rT} &= f_d \end{aligned}

where:

  • Δ\Delta: number of shares of stock in the portfolio
  • S0S_0: current stock price
  • u,du, d: up and down movement factors
  • BB: amount invested in the risk-free bond
  • rr: risk-free interest rate
  • TT: time to expiration
  • fu,fdf_u, f_d: option payoffs in the up and down states

This is a system of two linear equations in two unknowns (Δ\Delta and BB). We can solve this system using straightforward algebraic manipulation. The strategy is to first eliminate one variable to find the other, then substitute back to complete the solution.

Subtracting the second equation from the first eliminates BB, since the bond value B⋅erTB \cdot e^{rT} appears identically in both equations:

(Δ⋅uS0+B⋅erT)−(Δ⋅dS0+B⋅erT)=fu−fd(subtract down state from up state)Δ⋅S0(u−d)=fu−fd(simplify to isolate Δ)\begin{aligned} (\Delta \cdot u S_0 + B \cdot e^{rT}) - (\Delta \cdot d S_0 + B \cdot e^{rT}) &= f_u - f_d && \text{(subtract down state from up state)} \\ \Delta \cdot S_0 (u - d) &= f_u - f_d && \text{(simplify to isolate } \Delta \text{)} \end{aligned}

where:

  • Δ\Delta: number of shares in the portfolio
  • S0S_0: current stock price
  • u,du, d: up and down movement factors
  • BB: bond investment
  • rr: risk-free rate
  • TT: time to expiration
  • fu,fdf_u, f_d: option payoffs

This gives us the hedge ratio, which represents the number of shares needed to replicate the derivative:

Δ=fu−fdS0(u−d)=fu−fdSu−Sd\Delta = \frac{f_u - f_d}{S_0(u - d)} = \frac{f_u - f_d}{S_u - S_d}

where:

  • Δ\Delta: the hedge ratio (number of shares to hold)
  • fu−fdf_u - f_d: the range of option payoffs
  • Su,SdS_u, S_d: stock prices in up and down states
  • Su−SdS_u - S_d: the range of stock prices
  • S0S_0: current stock price
  • u,du, d: up and down movement factors

This formula has a beautiful interpretation: the hedge ratio equals the change in option value divided by the change in stock price. This is exactly the discrete-time analog of the delta we encountered in continuous-time option pricing. It tells us how many shares to hold to hedge the derivative, and it measures the sensitivity of the option price to movements in the underlying stock. For a call option, Δ\Delta is positive because the option gains value when the stock rises. For a put option, Δ\Delta is negative because the option loses value when the stock rises.

Once we know Δ\Delta, we can solve for BB by substituting back into either of our original equations. Using the up-state equation:

B⋅erT=fu−Δ⋅uS0(from up state equation)B=e−rT(fu−Δ⋅uS0)(solve for B)\begin{aligned} B \cdot e^{rT} &= f_u - \Delta \cdot u S_0 && \text{(from up state equation)} \\ B &= e^{-rT}(f_u - \Delta \cdot u S_0) && \text{(solve for } B \text{)} \end{aligned}

where:

  • BB: present value of the bond investment
  • e−rTe^{-rT}: discount factor
  • fu−Δ⋅uS0f_u - \Delta \cdot u S_0: portfolio cash needed to match the payoff in the up state
  • fu,fdf_u, f_d: option payoffs
  • Δ\Delta: hedge ratio
  • u,du, d: up and down factors
  • S0S_0: current stock price
  • rr: risk-free interest rate
  • TT: time to expiration

The bond position BB is typically negative for call options, meaning we borrow money to fund the stock purchase. For put options, BB is typically positive, meaning we lend money while shorting stock.

No-Arbitrage Pricing

Since the replicating portfolio has the same payoff as the derivative in both states, by the no-arbitrage principle from Part III Chapter 4, the derivative must have the same price as the portfolio:

f0=Δ⋅S0+Bf_0 = \Delta \cdot S_0 + B

where:

  • f0f_0: current option price
  • Δ\Delta: number of shares held in the replicating portfolio
  • S0S_0: current stock price
  • BB: value of the risk-free bond investment

If the derivative traded at any other price, an arbitrage opportunity would exist. If the derivative were cheaper than the replicating portfolio, we could buy the derivative, sell the portfolio, and pocket the difference while having perfectly offsetting positions. Conversely, if the derivative were more expensive, we could sell the derivative, buy the portfolio, and again lock in a risk-free profit. Market forces ensure that such opportunities are quickly eliminated, establishing the pricing relationship above.

Now we can derive an explicit formula for the option price by substituting our expressions for Δ\Delta and BB into the portfolio value equation f0=ΔS0+Bf_0 = \Delta S_0 + B:

f0=ΔS0+e−rT(fu−ΔuS0)(substitute B)=e−rTfu+ΔS0(1−ue−rT)(group terms)=e−rTfu+fu−fdu−d(1−ue−rT)(substitute Δ)=e−rT[fu+(fu−fd)(erT−u)u−d](factor out e−rT)=e−rT[erT−du−dfu+u−erTu−dfd](simplify)\begin{aligned} f_0 &= \Delta S_0 + e^{-rT}(f_u - \Delta u S_0) && \text{(substitute } B \text{)} \\ &= e^{-rT}f_u + \Delta S_0 (1 - u e^{-rT}) && \text{(group terms)} \\ &= e^{-rT}f_u + \frac{f_u - f_d}{u - d} (1 - u e^{-rT}) && \text{(substitute } \Delta \text{)} \\ &= e^{-rT}\left[f_u + \frac{(f_u - f_d)(e^{rT} - u)}{u - d}\right] && \text{(factor out } e^{-rT} \text{)} \\ &= e^{-rT}\left[\frac{e^{rT} - d}{u - d} f_u + \frac{u - e^{rT}}{u - d} f_d\right] && \text{(simplify)} \end{aligned}

where:

  • f0f_0: current option price
  • Δ\Delta: number of shares held in the replicating portfolio
  • S0S_0: current stock price
  • erT−du−d\frac{e^{rT} - d}{u - d}: weight assigned to the up payoff
  • u−erTu−d\frac{u - e^{rT}}{u - d}: weight assigned to the down payoff
  • rr: risk-free interest rate
  • TT: time to expiration
  • u,du, d: up and down factors
  • fu,fdf_u, f_d: option payoffs

This final expression is remarkable: the option price is a discounted weighted average of the two possible payoffs. The weights depend only on the up and down factors and the risk-free rate, not on any probability of the stock going up or down. This observation leads us to one of the most important concepts in derivative pricing.

The Risk-Neutral Probability

The formula above has a beautiful interpretation. Define the risk-neutral probability pp:

p=erT−du−dp = \frac{e^{rT} - d}{u - d}

where:

  • pp: risk-neutral probability of an up move
  • u,du, d: up and down factors
  • rr: risk-free rate
  • TT: time step

Then the pricing formula becomes:

f0=e−rT[p⋅fu+(1−p)⋅fd]f_0 = e^{-rT}[p \cdot f_u + (1-p) \cdot f_d]

where:

  • f0f_0: current option price
  • pp: risk-neutral probability
  • 1−p1-p: probability of a down move
  • e−rTe^{-rT}: risk-free discount factor
  • fu,fdf_u, f_d: option payoffs in up and down states
  • rr: risk-free interest rate
  • TT: time step duration

This elegant formula states that the derivative price equals the discounted expected payoff, where the expectation uses the probability pp rather than the real-world probability of an up move. The expression p⋅fu+(1−p)⋅fdp \cdot f_u + (1-p) \cdot f_d computes the expected payoff under the risk-neutral probability measure, and the factor e−rTe^{-rT} discounts this expected value back to the present. We never needed to know or estimate the actual probability of the stock rising; the risk-neutral probability emerges naturally from the no-arbitrage requirement.

Risk-Neutral Probability

The risk-neutral probability p=erT−du−dp = \frac{e^{rT} - d}{u - d} is not the actual probability of the stock going up. It's a mathematical construct that makes the expected return on the stock equal to the risk-free rate. Under this probability measure, the expected stock price is EQ[ST]=p⋅uS0+(1−p)⋅dS0=S0erTE^{\mathbb{Q}}[S_T] = p \cdot uS_0 + (1-p) \cdot dS_0 = S_0 e^{rT}.

For pp to be a valid probability (between 0 and 1), we need:

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

where:

  • dd: down movement factor
  • uu: up movement factor
  • rr: risk-free interest rate
  • TT: time step duration

This condition ensures no arbitrage and has an intuitive economic interpretation. The term erTe^{rT} represents the growth factor of a risk-free investment over the period. The condition states that this risk-free growth must fall strictly between the down move dd and the up move uu. If erT≥ue^{rT} \geq u, the risk-free bond would always outperform the stock, making the stock unattractive at any positive price. Conversely, if erT≤de^{rT} \leq d, the stock would always outperform the risk-free bond, meaning investors would borrow at the risk-free rate and invest in the stock for guaranteed profit. Either case would create an arbitrage opportunity, which cannot persist in equilibrium.

Out[3]:
Visualization
Line chart showing the risk-neutral probability increasing with the risk-free rate. A shaded valid region lies between p=0 and p=1, bounded by vertical reference lines at approximately -16.3% and 18.2%.
No-arbitrage bounds for the risk-neutral probability $p$ as a function of the risk-free rate $r$. The shaded region indicates where $0 < p < 1$, requiring the forward growth factor $e^{rT}$ to lie between the down factor $d$ and up factor $u$. Boundaries at $p=0$ and $p=1$ mark the limits where the risk-free rate makes the stock risklessly dominate or be dominated by the bond, creating arbitrage opportunities.
In[4]:
Code
import numpy as np


def one_step_binomial_price(S0, K, T, r, u, d, option_type="call"):
    """
    Price an option using a one-step binomial model.

    Parameters:
    -----------
    S0 : float - Current stock price
    K : float - Strike price
    T : float - Time to expiration (years)
    r : float - Risk-free rate (annualized)
    u : float - Up factor (u > 1)
    d : float - Down factor (d < 1)
    option_type : str - 'call' or 'put'

    Returns:
    --------
    float : Option price
    """
    # Stock prices at expiration
    Su = u * S0
    Sd = d * S0

    # Option payoffs at expiration
    if option_type == "call":
        fu = max(Su - K, 0)
        fd = max(Sd - K, 0)
    else:
        fu = max(K - Su, 0)
        fd = max(K - Sd, 0)

    # Risk-neutral probability
    p = (np.exp(r * T) - d) / (u - d)

    # Option price (discounted expected payoff)
    f0 = np.exp(-r * T) * (p * fu + (1 - p) * fd)

    return f0, p, fu, fd
In[5]:
Code
# Example: Price a call option
S0 = 100  # Current stock price
K = 100  # Strike price (at-the-money)
T = 1  # One year to expiration
r = 0.05  # 5% risk-free rate
u = 1.2  # Stock can go up 20%
d = 0.9  # Stock can go down 10%

price, p, fu, fd = one_step_binomial_price(S0, K, T, r, u, d, "call")
Su = u * S0
Sd = d * S0
Out[6]:
Console
Stock prices at expiration: Su = $120.00, Sd = $90.00
Call payoffs: fu = $20.00, fd = $0.00
Risk-neutral probability of up move: p = 0.5042
Call option price: $9.59

The calculated risk-neutral probability is close to 0.5 because with u=1.2u = 1.2 and d=0.9d = 0.9, the up and down moves are roughly symmetric around the forward price S0erTS_0 e^{rT}. The forward price represents where the stock "should" be in the risk-neutral world, and when up and down moves are symmetric around this level, the risk-neutral probabilities are approximately equal.