Binomial Tree Option Pricing › Dividends and Extensions

Michael BrenndoerferDecember 1, 20254 min read
Quantitative FinanceAll chapters
Part 6 of 15Numerical Methods for Derivative Pricing
Chapter 33Binomial Tree Option Pricing › Dividends and Extensions
Reading section 9 of 12 · Dividends and Extensions · 4 minSection 9 of 12 · 4 min

Book contents

Section 9 of 12 · 4 min read

Binomial Tree Option Pricing › Dividends and ExtensionsOne section · Sections in this chapter9 / 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

Real stocks often pay dividends, which affect option prices and early exercise decisions. The binomial framework easily accommodates dividends.

Continuous Dividend Yield

For stocks with a continuous dividend yield qq (common for index options), we modify the risk-neutral probability:

p=e(r−q)Δt−du−dp = \frac{e^{(r-q)\Delta t} - d}{u - d}

where:

  • pp: risk-neutral probability adjusted for dividends
  • rr: risk-free rate
  • qq: continuous dividend yield
  • Δt\Delta t: time step
  • u,du, d: up and down factors

The forward price grows at rate r−qr - q rather than rr, which reflects the dividend leakage. This modification accounts for the fact that holding the stock entitles you to dividends, which reduces the expected capital appreciation under the risk-neutral measure.

Discrete Dividends

For individual stocks paying discrete dividends, we adjust the stock price at dividend dates. If a dividend DD is paid at time tdt_d, the stock price drops by DD immediately after payment. This creates a tree that is not strictly recombining around dividend dates but remains computationally tractable.

In[28]:
Code
import numpy as np


def binomial_tree_dividend_yield(
    S0, K, T, r, q, sigma, N, option_type="call", american=False
):
    """
    Price an option on an asset with continuous dividend yield q.
    """
    dt = T / N
    u = np.exp(sigma * np.sqrt(dt))
    d = 1 / u

    # Modified risk-neutral probability for dividend yield
    p = (np.exp((r - q) * dt) - d) / (u - d)
    disc = np.exp(-r * dt)

    # Build stock tree
    S = np.zeros((N + 1, N + 1))
    for i in range(N + 1):
        for j in range(i + 1):
            S[i, j] = S0 * (u**j) * (d ** (i - j))

    # Initialize at maturity
    f = np.zeros((N + 1, N + 1))
    for j in range(N + 1):
        if option_type == "call":
            f[N, j] = max(S[N, j] - K, 0)
        else:
            f[N, j] = max(K - S[N, j], 0)

    # Backward induction
    for i in range(N - 1, -1, -1):
        for j in range(i + 1):
            cont = disc * (p * f[i + 1, j + 1] + (1 - p) * f[i + 1, j])

            if american:
                if option_type == "call":
                    exercise = max(S[i, j] - K, 0)
                else:
                    exercise = max(K - S[i, j], 0)
                f[i, j] = max(cont, exercise)
            else:
                f[i, j] = cont

    return f[0, 0]
In[29]:
Code
# Impact of dividend yield on American call options
S0, K, T, r, sigma = 100, 100, 1, 0.05, 0.2
N = 100

dividend_yields = [0.0, 0.02, 0.04, 0.06, 0.08]
results = []

for q in dividend_yields:
    euro = binomial_tree_dividend_yield(S0, K, T, r, q, sigma, N, "call", False)
    amer = binomial_tree_dividend_yield(S0, K, T, r, q, sigma, N, "call", True)
    results.append((q, euro, amer, amer - euro))
Out[30]:
Console
 Div Yield    Euro Call    Amer Call      Premium
------------------------------------------------------------
      0.0% $    10.4306 $    10.4306 $     0.0000
      2.0% $     9.2076 $     9.2076 $     0.0000
      4.0% $     8.0836 $     8.0991 $     0.0155
      6.0% $     7.0567 $     7.2440 $     0.1873
      8.0% $     6.1242 $     6.5327 $     0.4085

With no dividends, American calls equal European calls because early exercise is never optimal. As the dividend yield increases, early exercise becomes attractive: you want to own the stock to capture the dividend, making the American call more valuable than the European.

Out[31]:
Visualization
Line chart comparing European and American call option prices as dividend yield increases, showing the American call holding value better at higher yields.
European and American call option prices as a function of dividend yield $q$. The American call (dashed curve) maintains higher value than the European call (solid curve) as dividend yield increases.
Line chart showing the early exercise premium for American calls rising with dividend yield.
Early exercise premium for American calls rising with dividend yield, which reflects the growing incentive to exercise early and capture dividends.