Binomial Options-Pricing Model

I present a simple yet useful model for pricing European-style options, called the binomial options-pricing model. It provides good intuition into pricing options without any advanced mathematics.

The goal of this post is to present a simple formula for fairly pricing options, called the binomial options pricing model (Cox et al., 1979; Rendleman, 1979). This is sometimes called the Cox-Ross-Rubinstein model (CRR) after the authors’ surnames in (Cox et al., 1979). I like this model because it is a simple, discrete-time model that captures much of the intuition behind how to price options, while avoiding much of the mathematical machinery needed for a continuous-time treatment or Black–Scholes (Black & Scholes, 1973). Learning the binomial model is like climbing a smaller, easier mountain that gives views that are almost as good as its larger, more intimidating neighbor. As we will see, despite its simplicity this model introduces many important concepts from the options-pricing literature such as the no-arbitrage condition, pricing via replication, and the risk-neutral measure. And it does so without any advanced mathematics.

For brevity, I will assume the reader understands options at a high level, and I will only discuss European-style call options. We are going to trade completeness and generality for concision and intuition.

Binomial random walk

We want to establish a fair price for a European-style call option. Here, “fair” means that an options dealer makes no money on average from mispricing the option, but instead only makes money on a transaction fee or premium. To derive an exact formula, we need a model for how the option’s underlying stock behaves in discrete time. We are going to assume the stock follows a multiplicative random walk. Let S>0S \gt 0 denote the stock’s price. After each discrete time interval, we flip a coin with bias pp. If the coin is heads, the stock changes by a factor uu to uSu S. If the coin is tails with probability 1p1-p, the stock changes by a factor dd to dSd S (Figure 11).

Figure 1. Model of the underlying stock SS, which moves up by uu or down by dd with probabilities pp and 1p1-p respectively.

Thus, the price of the stock is a random process, and we say that it follows a multiplicative random walk because the value of the stock at time nn is the previous value multiplied by a factor XnX_n,

Sn=XnSn1,(1) S_{n} = X_n S_{n-1}, \tag{1}

where XnX_n is drawn i.i.d. based on our coin toss, or

P(Xn=u)=p,P(Xn=d)=1p.(2) \mathbb{P}(X_n = u) = p, \qquad \mathbb{P}(X_n = d) = 1-p. \tag{2}

We can take the logarithm of both sides of Equation 11 to see that a multiplicative random walk is an additive random walk on a logarithmic scale. In fact, it might be easier to think about these factors in log space. For example, if we have logd=logu\log d = -\log u, then one up move and one down move results in the stock ending up in its original position. See Figure 22 for examples of random walks that follow the binomial model.

Figure 2. Examples of a multiplicative random walk for different pairs of multiplicative factors. These factors are presented in log space to more easily check for symmetry.

We will refer to uu as the up factor and dd as the down factor. Our only constraint on these factors is that

0<d<r0<u,(3) 0 \lt d \lt r_0 \lt u, \tag{3}

where r0r_0 is the risk-free interest rate plus one in a single time period, e.g. 1.051.05 for 5%5\% interest. The plus-one convention is so that we do not have to write (1+r0)(1+r_0) everywhere in this post. So uu is an “up factor” in the sense that it beats the risk-free rate of return, while dd is a “down factor” in the sense that it loses to the risk-free rate of return.

The constraint in Equation 33 is called the no-arbitrage condition. This name is because if the constraint did not hold, one could make money risk-free. For example, if u<r0u \lt r_0, we could sell a stock short and then use the proceeds of that sale to invest in a money market fund. In the worst case (for us), the stock could go up to uSu S, which would be less than our money in the fund, r0Sr_0 S. I won’t belabor this point, because I think it is fairly intuitive and the details are not critical. However, if you would like, see this post for a more detailed treatment. In the finance literature, when authors assume a no-arbitrage condition, they mean that the relationships between various assets is such that one cannot make risk-free money.

To illustrate this model, consider the binomial tree in Figure 33. The root node represents the value of the stock at time n=0n=0. Each subsequent node (read left-to-right) is a possible stock value given our simple coin-flipping model. So after two coin flips, the stock is worth u2Su^2 S, udSu d S, or d2Sd^2 S. A path from left-to-right in this tree would be one possible realization of coin flips and thus one possible trajectory our stock could take.

Figure 3. A binomial tree for a stock worth SS. At each time point (vertical set of nodes), the stock can either move up by or down by factors uu or dd respectively. Here the stock's value is set to S=1S=1 for notational brevity.

This diagram is called a binomial tree because the number of paths to the jj-th row (number of heads or successes) in the nn-th column (time point) is the binomial coefficient

(nj)=n!j!(nj)!,(4) {n \choose j} = \frac{n!}{j! (n-j)!}, \tag{4}

and the distribution of outcomes at a given time point is binomially distributed. For example, the probability of arriving at the du3du^3 node in Figure 33 is the probability of three heads (up moves) and one tail (down move). That probability is p3qp^3 q adjusted by the number of ways to flip three heads in four coin tosses or (43){4 \choose 3}. So the probability of the stock having jj up moves in nn coin tosses is

(nj)  pj(1p)nj.(5) {n \choose j} \; p^j (1-p)^{n-j}. \tag{5}

This explains the name for both the tree and the pricing model.

Replicating portfolio

Recall that our goal is to establish a fair price for a call option. But so far, we have just discussed a model for how underlying stocks behave. How to do we move from this simple model of a stock to the fair price of an option on it?

A key idea in the options-pricing literature is valuation through replication. In other words, we can define the fair price of an option as the cost of constructing a portfolio that replicates its value over time. This means that a dealer can sell a call option, use the proceeds to construct a replicating portfolio, and collect a transaction fee in the form of a premium between the cost of the replicating portfolio and the price of the option. What does the replicating portfolio contain? For sure, it contains some of the underlying stock.

This should make sense. Strip away all the mathematical machinery, and just imagine that you’re an unsophisticated options dealer. What is the simplest thing you could do to hedge your risk if you sold a call option? Well, you could buy some amount of the underlying stock such that, on average, you neither make nor lose money on the call. This is precisely what options dealers have tried to do for many years, even before Black–Scholes (Haug & Taleb, 2011).

To summarize, we want to build a replicating portfolio that is a basket of both some amount of the underlying stock and some amount of risk-free or cash-like assets such as bonds. We’ll then model how our replicating portfolio changes as the underlying stock changes according to our binomial model above. This in turn tells us how the fair price of our option changes, leading to an exact formula for the fair price of the option today.

One-period model

Let’s first focus on a single discrete-time period.

Since a call option’s value is a function of its underlying stock’s value, we can model how the call option changes after we flip our coin once. I’ll use CC to denote the value of the call at the same time point as SS, and I’ll use CuC_u and CdC_d to denote the value of the call after a heads or tails respectively (Figure 44). For example, if the call is in-the-money after a heads (up move), then it is worth uSKuS-K. Figure 44 is the call option’s analog to the stock price in Figure 11.

Figure 4. One-period binomial tree of the call option CC, which is a function of the underlying stock SS at strike KK.

Now let Δ\Delta denote the number of shares of the stock SS in our replicating portfolio, and let BB denote an amount of cash or bonds, subject to the interest rate r0r_0. Then the value of our portfolio is initially

SΔ+B.(6) S \Delta + B. \tag{6}

Clearly, this portfolio also changes with the coin flip. After one flip, the value of the portfolio will either go up or down (Figure 55). For example, after we flip heads, the stock’s value goes up by uu and the bonds increase in value by r0r_0, giving us uSΔ+r0Bu S \Delta + r_0 B.

Figure 5. One-period binomial tree of the replicating portfolio with Δ\Delta shares of stock SS and BB risk-less bonds or cash-like assets.

Now let’s pick Δ\Delta and BB. Don’t let the mathematical abstractions obfuscate the key point: if we are an options dealer, then Δ\Delta is just how much stock we want to buy in order to hedge a call option that we just sold. As discussed above, we would like to pick them such as that the value of our portfolio perfectly replicates the value of option. Mathematically, this means that we want this linear system of equations to hold:

Cu=ΔuS+r0B,Cd=ΔdS+r0B.(7) \begin{aligned} C_u &= \Delta u S + r_0 B, \\ C_d &= \Delta d S + r_0 B. \end{aligned} \tag{7}

Solving this system is easy and gives us Δ\Delta and BB:

Δ=CuCd(ud)S,B=uCddCur0(ud).(8) \Delta = \frac{C_u - C_d}{(u-d)S}, \qquad B = \frac{u C_d - d C_u}{r_0 (u - d)}. \tag{8}

See A1 for a derivation. This allows us to write the value of a call option in terms of its future value, depending on whether or not the coin toss is heads or tails (so in terms of CuC_u and CdC_d):

C=ΔS+B=1r0[(r0dud)Cu+(ur0ud)Cd].(9) C = \Delta S + B = \frac{1}{r_0} \left[ \left( \frac{r_0 - d}{u - d} \right) C_u + \left( \frac{u - r_0}{u - d} \right) C_d \right]. \tag{9}

See A2 for a derivation. This is cool! The first equality in Equation 99 is simply an accounting identity. We want this to hold in order to hedge the call option we sold. But the second equality says that our replicating portfolio can be expressed in terms of the option’s possible values after a coin flip, CuC_u and CdC_d, weighted by factors (r0d)/(ud)(r_0 - d)/(u - d) and (ur0)/(ud)(u - r_0)/(u - d). We divide by r0r_0 to account for the time value of money.

Risk-neutral probabilities

So what are the “weights” (r0d)/(ud)(r_0-d)/(u-d) and (ur0)/(ud)(u-r_0)/(u-d) in the previous section? A possibly surprising point is that these can be thought of as probabilities! To see this, let π\pi denote the left weight, so

π=r0dud.(10) \pi = \frac{r_0 - d}{u - d}. \tag{10}

Then observe that

0π1,and1π=ur0ud.(11) 0 \leq \pi \leq 1, \quad \text{and} \quad 1-\pi = \frac{u - r_0}{u - d}. \tag{11}

Thus, we can express the value of our call option as an expectation with respect to these pseudo-probabilities π\pi and 1π1-\pi:

C=1r0[πCu+(1π)Cd].(12) C = \frac{1}{r_0} \Big[ \pi C_u + (1-\pi)C_d \Big]. \tag{12}

This is surprising and really interesting! Here, Equation 1212 states the our call option is equal to the time-discounted expectated value of our call option. The expectation is with respect to these pseudo-probabilities π\pi and 1π1-\pi.

These are pseudo-probabilities are called the risk-neutral probabilities. They are so-named because they make Equation 1212 an equality rather than an inequality. In the real world, we assume that investors demand more profit for bearing more risk. Put differently, the price of a risky asset today should be less than its expected value tomorrow. In the context of this post, we would expect the equals sign in Equation 1212 to be a less-than sign if we replaced the risk neutral probability π\pi with the true probability pp.

This idea of a risk-neutral probability measure is widely used in the options-pricing literature. It is critical for pricing options precisely because it allows for an equality rather than inequality.

Multi-period model

Now let’s generalize. Our goal is to find an equation similar to Equation 1212 which generalizes to multiple time periods (to arbitrary nn).

To start, let’s focus on the behavior of our stock after two time periods. Here, the stock price has either gone up twice by a factor u2u^2, down twice by a factor d2d^2, or up and down by a factor udud (Figure 66). Recall that since the stock can move up and then down or down and then up, there are two ways for the stock to “arrive” at the value udSu d S.

Figure 6. Two-period binomial tree for the underlying stock.

And as before, the value of the call changes as a function of the underlying stock (Figure 77).

Figure 7. Two-period binomial tree for the call option.

Now imagine that our first coin flip was heads, and thus the option’s value is CuC_u before the second coin flip. At this point, all of the logic from the previous section holds. This is because the coin flips are independent. (If you are unconvinced, simply repeat the logic of the previous section while swapping variable names. Alternatively, observe that the initial time point n=0n=0 is relative.) So we can quickly conclude that the value of CuC_u is equal to its time-discounted, risk-neutral expected value over the next coin toss, just as in Equation 1212. This gives us

Cu=1r0[πCuu+(1π)Cud].(13) C_u = \frac{1}{r_0} \Big[ \pi C_{uu} + (1-\pi) C_{ud} \Big]. \tag{13}

Hopefully the notation CuuC_{uu} and CudC_{ud} is clear: these are the values of the call option after two up moves and after one up move and one down move, respectively. And of course, we could imagine that we flipped a tails on the first coin flip and then repeat our reasoning as before, giving us

Cd=1r0[πCud+(1π)Cdd].(14) C_d = \frac{1}{r_0} \Big[ \pi C_{ud} + (1-\pi) C_{dd} \Big]. \tag{14}

And now we can plug CuC_u and CdC_d in Equations 1313 and 1414 into Equation 1212! This will give us the value of the call option at time zero in terms of its possible values after two periods:

C=1r0[πCu+(1π)Cd]=1r0[π(1r0(πCuu+(1π)Cud))+1π(1r0(πCud+(1π)Cdd))]=1r02[π2Cuu+2π(1π)Cud+(1π)2Cdd].(15) \begin{aligned} C &= \frac{1}{r_0} \big[ \pi C_u + (1-\pi) C_d \big] \\ &= \frac{1}{r_0} \left[ \pi \left( \frac{1}{r_0} \left( \pi C_{uu} + (1-\pi) C_{ud} \right)\right) + 1-\pi \left( \frac{1}{r_0} \left( \pi C_{ud} + (1-\pi) C_{dd} \right)\right) \right] \\ &= \frac{1}{r_0^2} \Big[\pi^2 C_{uu} + 2 \pi (1-\pi) C_{ud} + (1-\pi)^2 C_{dd}\Big]. \end{aligned} \tag{15}

So again we can express the call option today in terms of its risk-neutral expected value! And this looks suspiciously like a binomial expansion for n=2n=2.

Now let’s repeat this logic for n=3n=3. Again, we can say that the value of a call option at time n=2n=2 can be expressed in terms of its risk-neutral expected value over the next period. This gives us

Cuu=1r0[πCuuu+(1π)Cuud],Cud=1r0[πCuud+(1π)Cddu],Cdd=1r0[πCddu+(1π)Cddd].(16) \begin{aligned} C_{uu} &= \frac{1}{r_0} \Big[ \pi C_{uuu} + (1-\pi) C_{uud} \Big], \\ C_{ud} &= \frac{1}{r_0} \Big[ \pi C_{uud} + (1-\pi) C_{ddu} \Big], \\ C_{dd} &= \frac{1}{r_0} \Big[ \pi C_{ddu} + (1-\pi) C_{ddd} \Big]. \end{aligned} \tag{16}

Hopefully the notation CuuuC_{uuu}, etc. is clear in meaning by now. And we can again write the value of the call option at n=0n=0 in terms of the call at time n=3n=3:

C=1r02[π2Cuu+2π(1π)Cud+(1π)2Cdd]=1r03[π3Cuuu+3π3(1π)Cuud+3q2πCddu+(1π)3Cddd].(17) \begin{aligned} C &= \frac{1}{r_0^2} \Big[ \pi^2 C_{uu} + 2 \pi (1-\pi) C_{ud} + (1-\pi)^2 C_{dd} \Big] \\ &= \frac{1}{r_0^3} \Big[ \pi^3 C_{uuu} + 3\pi^3 (1-\pi) C_{uud} + 3q^2 \pi C_{ddu} + (1-\pi)^3 C_{ddd} \Big]. \end{aligned} \tag{17}

Again, we see the call option is proportional to a binomial expansion.

At this point, I don’t think it takes a great mathematical leap of intuition to see what is happening. The general formula for the value of the call option CC at time n=0n=0, in terms of the possible values of the call option at time nn, is the following:

C=1r0n[j=0n(nj)πj(1π)njmax[0,ujdnjSk]].(18) C = \frac{1}{r_0^n} \left[ \sum_{j=0}^n {n \choose j} \pi^j (1-\pi)^{n-j} \max[0, u^j d^{n-j} S - k] \right]. \tag{18}

Note that we are expressing the value of the call option with jj heads in nn trials directly in terms of the stock price and strike:

call after j heads in n trials=max[0,ujdnjSK].(19) \text{call after $j$ heads in $n$ trials} = \max[0, u^j d^{n-j} S - K]. \tag{19}

I won’t prove Equation 1818, but one easily could using induction. The key point is that the value of the option today is equal to an interest rate-discounted expected value of the call option in the future, under the risk-neutral probability measure. This expectation is a binomial expansion, where each possible call value is weighted by the probability that the stock takes the associated value ujdnjSu^j d^{n-j} S. Notice that the true or physical parameter pp is not in the price! We do not care how likely an up or down move is. We are only interested in the risk-neutral probability π\pi.

An example

At this point, we have everything we need to price an option using Equation 1818, so let’s pause and look at a complete example. Here is a Python function to do so.

import numpy as np
from   scipy.special import comb as choose

def bopm(S, K, u, d, r0, n):
    """Compute value of a European call option price using the binomial-options
    pricing model.

    S : stock (float)
    K : strike (float)
    u : up factor (float)
    d : down factor (float)
    r0: one-period interest rate (float)
    n : number of time points (int)
    """
    r0 = 1+r0
    assert d <= r0 <= u, "No arbitrage condition not met."
    pi = (r0-d) / (u-d)
    discount = 1/r0**n
    C = 0
    for j in range(0, n+1):
        S_n = u**j * d**(n-j) * S
        p_j = choose(n, j) * pi**j * (1-pi)**(n-j)
        C += p_j * max(0, S_n - K)
    return discount * C

Suppose the values in our model are:

S=100,K=100,u=1.5,d=0.5,r0=1.1,n=3.(20) S = 100, \quad K = 100, \quad u = 1.5, \quad d = 0.5, \quad r_0 = 1.1, \quad n = 3. \tag{20}

This in turn fixes the value of π\pi:

π=0.6.(21) \pi = 0.6. \tag{21}

Again, note that we do not even need to know the true parameter pp to price the option fairly.

We can plot the value of the stock and call on a binomial tree, alongside the risk-neutral probabilities of the stock reaching each node (Figure 88). As a sanity check, the sum of each column should equal unity. What Equation 1818 says is that the value of the call option CC is the dot product of call values and risk-neutral probabilities at the leaf nodes, adjusted by the interest rate after three time periods.

Figure 8. Binomial tree labeled with the value of the stock SS, call CC, and risk-neutral probability π\pi in parentheses.

In other words, the call is

C=11.13[237.5(0.22)+12.5(0.43)]42.6.(22) C = \frac{1}{1.1^{3}} \Big[ 237.5 (0.22) + 12.5 (0.43) \Big] \approx 42.6. \tag{22}

This might seem pricey, but the risk-neutral probabilities are rather skewed. Under the risk-neutral measure, the stock is more likely to go up than down. The option should be priced accordingly. As a gut check, what do we expect to happen if the up factor were to decrease, say from 1.51.5 to 1.21.2? We would expect the option value to decrease, since the risk-neutral probability π\pi decreases. That’s precisely what happens (C34.44C \approx 34.44).

Binomial option-pricing formula

Equation 1818 is an exact formula for pricing an option under the assumptions of our model. In principle, we’re done. However, with a little algebra, we can represent the value of the call CC in a form that is quite instructive.

To start, let aa denote the minimum number of upward moves the stock must take over nn time periods for the call option to end in-the-money:

a=min{0xn    :    uxdnxS>K}.(23) a = \min\left\{ 0 \leq x \leq n \;\; : \;\; u^x d^{n-x} S \gt K \right\}. \tag{23}

For example, in Figure 88, we can see that the call is out-of-the-money for two out of four of the leaf nodes in the binomial tree. Here, aa is just notation to select the in-the-money leaves. We introduce aa because it allows us to eliminate the max[,]\max[\cdot, \cdot] function in the value of the option, since

max[0,ujdnjSK]={0j<a,ujdnjSKja.(24) \max[0,\, u^j d^{n-j} S - K] = \begin{cases} 0 & j \lt a, \\ u^j d^{n-j} S - K & j \geq a. \end{cases} \tag{24}

In words, it allows us to eliminate terms in the summation that are guaranteed to be zero. So we can rewrite the call option’s value CC starting at j=aj=a as

C=1r0n[j=an(nj)πj(1π)nj[ujdnjSK]].(25) C = \frac{1}{r_0^n} \left[ \sum_{j=a}^n {n \choose j} \pi^{\,j} (1-\pi)^{\,n-j} \left[u^j d^{\,n-j} S - K \right] \right]. \tag{25}

Here, we can see that we can represent the call as the difference between the stock price and the strike. So let’s distribute and group terms based on their exponents:

C=1r0n[S{j=an(nj)(πu)j(1πd)nj}K{j=an(nj)jπj(1π)nj}](26) C = \frac{1}{r_0^n} \left[ S \left\{ \sum_{j=a}^n {n \choose j} (\pi u)^j (1-\pi d)^{n-j} \right\} -K \left\{ \sum_{j=a}^n {n \choose j} j \pi^{\,j} (1-\pi)^{\,n-j} \right\} \right] \tag{26}

Equation 2626 says that the call option’s fair price CC is equal the difference between the stock price SS and the strike price KK, both time-discounted by r0nr_0^n and weighted by the risk-neutral probability π\pi. In my mind, the right term is fairly intuitive. It’s simply the strike multiplied by the probability that the option ends in-the-money. The left term is a little trickier since the risk-neutral probabilities are adjusted by the up and down factors. The key is to think about the value of the stock in a risk-neutral world.

In a risk-neutral world, the value of the stock invested in a risk-free asset is equivalent to the value of the stock invested in the market. Formally, this is

r0S=πuS+(1π)dS.(27) r_0 S = \pi u S + (1-\pi) d S. \tag{27}

This falls out of the definition of π\pi (Equation 1010), and it is completely analogous to how we priced the call in Equation 1212. Again, in the real world, we expect this equality to be an inequality. Investors get paid to take risks. But we price options in a risk-neutral world, and the definition of π\pi implies that

πur0+(1π)dr0=1.(28) \frac{\pi u}{r_0} + \frac{(1-\pi) d}{r_0} = 1. \tag{28}

In other words, (πu)/r0(\pi u) / r_0 and (1πd)/r0(1-\pi d) / r_0 are more pseudo-probabilities! They are just the return-adjusted risk-neutral probabilities. Let’s name them:

ρ=uπr0,1ρ=d(1π)r0.(29) \rho = \frac{u \pi}{r_0}, \qquad 1-\rho = \frac{d (1-\pi)}{r_0}. \tag{29}

So we can express the expected value of our stock SS, after one period, under these adjusted risk-neutral probabilities as

S=ρS+(1ρ)S.(30) S = \rho S + (1 - \rho) S. \tag{30}

As an aside, note that the logic here implies that the stock price is a martingale under the risk-neutral probabilities. At a high level, a martingale is a stochastic process in which the expected value of the process, conditional on available information, is equal to its present value. And that is essentially what Equations 1212 and 2727 represent.

Now that we understand these new pseudo-probabilities, we can rewrite Equation 2626 in terms of them:

C=S{j=an(nj)ρj(1ρ)nj}Kr0n{j=an(nj)πj(1π)nj}.(31) C = S \left\{ \sum_{j=a}^n {n \choose j} \rho^j (1-\rho)^{n-j} \right\} - K r_0^{-n} \left\{ \sum_{j=a}^n {n \choose j} \pi^{\,j} (1-\pi)^{\,n-j} \right\}. \tag{31}

And as a final step, observe that each summation is really a survival probability or the probability that a random variable takes a value at least as great as a given value. This can be viewed as one minus the cumulative distribution function (CDF). (See A3 for a bit more discussion of the binomial survival function.) To see this, let B(x;n,p)B(x; n, p) be a function denoting the probability that a binomial random variable Xbinom(n,p)X \sim \text{binom}(n, p) “survives” to xx:

B(x;n,p)=P(Xx).(32) B(x; n, p) = \mathbb{P}(X \geq x). \tag{32}

Since the CDF of the binomial distribution is

P(Xx)=j=0x(nj)pj(1p)nj(33) \mathbb{P}(X \leq x) = \sum_{j=0}^x {n \choose j} p^j (1-p)^{n-j} \tag{33}

then BB can be written as

B(x;n,p)=1P(Xx)=j=xn(ni)pj(1p)nj(34) B(x; n, p) = 1-\mathbb{P}(X \leq x) = \sum_{j=x}^n {n \choose i} p^j (1-p)^{n-j} \tag{34}

So we can rewrite Equation 3434 in terms of binomial survival probabilities. Note that (Cox et al., 1979) refers to BB as the “complementary binomial distribution function”, but I think that calling it a “survival function” is a bit more clear that we are computing the probability that the option “survives” in the sense that it has a sufficient number of up-moves to end in-the-money.

Taken together, we can write down the binomial options-pricing formula:

C=SB(a;n,ρ)Kr0nB(a;n,π),whereB(x;n,p)=j=xn(nj)pj(1p)n1,a=min{0xn:uxdnxS>k},π=(r0d)/(ud),ρ=(u/r0)π.(35) \begin{aligned} C &= S B(a; n, \rho) - K r_0^{-n} B(a; n, \pi), \\ &\text{where} \\ B(x; n, p) &= \sum_{j=x}^n {n \choose j} p^j (1 - p)^{n-1}, \\ a &= \min\{0 \leq x \leq n : u^x d^{n-x} S \gt k \}, \\ \pi &= (r_0-d)/(u-d), \\ \rho &= (u/r_0) \pi. \\ \end{aligned} \tag{35}

At least for me, seeing this formula without context was not be particularly instructive. But now we have the mental model to interpret it. The value of the call option is the difference between the probability-weighted stock price and the probability-weighted strike. Both probabilities capture the likelihood that the option ends in the money, but their terms are slightly different because the stock’s weight also captures the changing value of the stock, via the up and down factors.

Limiting stochastic process

We now have a simple mathematical model for pricing options, but it is not clear how to use it in practice. For example, how do we pick uu and dd? How do these parameters map to the more common notion of a stock’s volatility? How do we pick r0r_0 and nn, and how do they relate to physical time?

To answer these questions, we need to think about the continuous-time process that is implied by our discrete-time model. What is the limiting stochastic process if we imagine fixing physical time and then letting nn \rightarrow \infty. Without an answer to this question, it is difficult to argue for any particular choice of uu or dd. Thus, before discussing fitting our model to data, we need to understand this continuous-time process.

We’ll do this in two steps. First, I’ll provide some intuition here for what that continuous-time process might look like. I think this exercise is useful towards making the answer less abstract. As we’ll see, our simple binomial model suggests that the true stochastic process for stock prices is geometric Brownian motion. We’ll define what this means.

Second, in the next section, I’ll discuss the Black–Scholes formula, which is an options-pricing formula that assumes the stock price follows geometric Brownian motion. And I’ll prove (in a companion post) that the binomial options-pricing formula converges to Black–Scholes as nn \rightarrow \infty. And finally, we will be ready to pick values of uu and dd, with the criteria that we pick values such that our binomial model converges to Black–Scholes.

Geometric Brownian motion

First, let’s get some intuition for our simple binomial model as nn becomes large. We assumed that stock prices follow a multiplicative random walk or

Sn=SX1X2Xn.(36) S_n = S X_1 X_2 \cdots X_n. \tag{36}

But now we’d like to model this as a continuous-time process over physical time tt. So rather than modeling the random process via a countable set of random variables, we would like to model the process as a real-valued function S(t)S(t). But what function makes sense?

Let me suggest the following intuition. A multiplicative random walk is just an additive random walk in log space. And an additive random walk converges to Brownian motion in the limit (as the time intervals between data points goes to zero). The normal distribution in Brownian motion arises via the sum of i.i.d. random variables, through the central limit theorem. This reasoning suggests that a multiplicative random walk should converge to a non-negative or exponentiated Brownian motion. While this reasoning is not formal, I hope it gives some color for how we might have arrived at this idea ourselves, given more time than this blog post allows.

Thus, in the options-pricing literature, the stock price S(t)S(t) is often defined as geometric Brownian motion, which is non-negative Brownian motion. This is defined as

S(t)=SeY(t),Y(t)=σB(t)+μt,(37) S(t) = S e^{Y(t)}, \qquad Y(t) = \sigma B(t) + \mu t, \tag{37}

where B(t)B(t) is Brownian motion, and thus Y(t)Y(t) is Brownian motion with drift:

Y(t)N(μt,σ2t),B(t)N(0,t).(38) Y(t) \sim \mathcal{N}(\mu t, \sigma^2 t), \qquad B(t) \sim \mathcal{N}(0, t). \tag{38}

If we take the log of both sides of Equation 3838, we can reconstruct the underlying Brownian motion

logS(t)=logS+Y(t),(39) \log S(t) = \log S + Y(t), \tag{39}

and this implies that logS(t)\log S(t) and log(S(t)/S)\log(S(t)/S) are both lognormally distributed,

log(S(t)/S)N(μt,σ2t).(40) \log(S(t)/S) \sim \mathcal{N}(\mu t, \sigma^2 t). \tag{40}

Mapping this notation onto our intuition above, I argued that exponentiated Brownian motion makes sense because our simple binomial model well-approximates it when nn is large, i.e.

log(X1X2,Xn)=i=1nlog(Xi)Y(t).(41) \log(X_1 X_2, \cdots X_n) = \sum_{i=1}^n \log (X_i) \approx Y(t). \tag{41}

(Historically speaking, the causality is backwards; the continuous-time process was already understood, and the binomial model was constructed to converge to it in the limit.)

We can visualize this connection by imagining the time to expiry tt being fixed, and then increasing nn. The effect on our binomial tree is that the “mesh” becomes finer and finer. And the distribution of outcomes (where the stock price ends up after tt) converges from a binomial distribution to a normal distribution (Figure 99). The lognormal distribution arises because it is the log of the stock price that is binomially distributed. This is a deep idea that is worth its own post, but I felt it was unreasonable to discuss this topic without at least some mention of the underlying continuous-time process. Much of the mathematical complexity underpinning Black–Scholes is simply making the intuitions in this section rigorous.

Figure 9. (Left) Two binomial trees for the same fixed time tt but with varying nn. The tree with larger nn (bottom) is "finer" in the sense that the stock moves more within the same physical time. (Right) The binomial distribution associated with the leaf nodes for each respective tree. As nn increases (provided pp is fixed), the binomial distribution converges to the normal distribution.

Now that we better understand the continuous-time process, let’s revisit a few details of our discrete-time model. First, let’s think about time. We are concerned with modeling physical time (0,t](0, t] using nn time points. A natural way to think about our model is to split up our total interval into nn sub-intervals of length hh, where

h=t/n.(42) h = t/n. \tag{42}

Writing these sub-intervals out explicitly, we have

(0,h],(h,2h],(2h,3h],,((n1)h,t].(43) (0, h], (h, 2h], (2h, 3h], \dots, ((n-1)h, t]. \tag{43}

Now we can re-define XnX_n to denote the stock move between two sub-intervals:

Xn=S(nh)/S((n1)h)(44) X_n = S(nh) / S((n-1)h) \tag{44}

Hopefully it makes sense that in the limit h0h \rightarrow 0, these sub-intervals become smaller and smaller, and the discrete-time process XnX_n converges to the continuous-time process X(t)X(t), where

X(t)=exp{Y(t)}.(45) X(t) = \exp\{Y(t)\}. \tag{45}

Second, let’s think about our interest rate r0r_0 in terms of physical time. Given the definitions above, we want an interest rate rr such that

r0n=rt.(46) r_0^n = r^t. \tag{46}

In words, r0r_0 is one plus the riskless interest rate over an interval of length h=t/nh=t/n, while rr is one plus the riskless interest rate for a fixed amount of calendar time tt. That said, in practice, we compound interest continuously using erhe^{rh} in place of r0r_0 and erte^{rt} in place of rtr^t. In the exponentiated form, we drop the plus-one convention.

Convergence to Black–Scholes

We are now finally ready for a peak at the famous Black–Scholes equation. We do not have all the mathematical machinery needed to make perfect sense of it from the perspectives of differential equations (PDEs, etc.) or stochastic calculus (Itô-Doeblin’s lemma, etc.), but with a little bit of work, we can show that the model we have constructed so far (Equation 3535) is just the discrete-time analog of Black–Scholes. My goal here is to make Black–Scholes more intuitive by mapping it onto this much simpler binomial model.

First, let’s just state the Black–Scholes model. Using our notation, the price of a European-style call is:

C=SN(d1)KrtN(d2),whereN(x)=x(1/2π)ez2/2dz,d1=[log(S/K)+[logr+(1/2)σ2]t]σt,d2=d1σt.(47) \begin{aligned} C &= S N (d_1) - K r^{-t} N(d_2), \\ &\text{where} \\ N(x) &= \int_{-\infty}^x (1 / \sqrt{2 \pi}) e^{-z^2 / 2} dz, \\ d_1 &= \frac{\left[ \log(S/K) + \left[ \log r + (1/2) \sigma^2 \right] t\right]}{\sigma \sqrt{t}}, \\ d_2 &= d_1 - \sigma \sqrt{t}. \end{aligned} \tag{47}

Without context, this might feel pretty opaque. But with the context of the binomial model, it looks familiar! Just compare the two models:

binomial model:C=SB(a;n,ρ)KrtB(a;n,π),Black–Scholes:C=SN(d1)KrtN(d2).(48) \begin{aligned} \text{binomial model:} &\qquad& C &= S B (a; n, \rho) - K r^{-t} B(a; n, \pi), \\ \text{Black--Scholes:} &\qquad& C &= S N (d_1) - K r^{-t} N(d_2). \end{aligned} \tag{48}

We can see that both B()B(\cdot) and N()N(\cdot) are survival or complementary distribution functions. In fact, it should be clear from Equation 4848 that all we have to do to prove convergence from one equation to the other is to prove that as nn \rightarrow \infty,

B(a;n,ρ)N(d1),B(a;n,π)N(d2).(49) \begin{aligned} B (a; n, \rho) &\rightarrow N (d_1), \\ B(a; n, \pi) &\rightarrow N(d_2). \end{aligned} \tag{49}

See this companion post for a proof, which follows the logic in (Hsia, 1983).

An important observation about that proof, which we will use in the next section, is that we did not need to specify the risk-neutral probability π\pi in order to prove convergence. Nor did we need to make any assumptions about the true probability pp. The condition that must hold, however, is the no-arbitrage condition, and this condition relates the stock’s volatility (through uu and dd) to the market rate of return rr.

Fitting the model parameters

Now that we understand the continuous-time process, we can finally address the question: how do we pick the model parameters uu, dd, and pp? We’ll assume rr is known and fixed, given to us by the market.

This is actually a tricky question, and there are have been many proposals. Perhaps the most popular choice that I have seen is using the values proposed by (Cox et al., 1979):

u=exp ⁣(σh),d=exp ⁣(σh),p=12+12σ2.(50) u = \exp\!\left(\sigma \sqrt{h}\right), \quad d = \exp\!\left(-\sigma \sqrt{h}\right), \quad p = \frac{1}{2} + \frac{1}{2} \sigma^2. \tag{50}

CRR prove that these choices mean the induced binomial model converges to Black–Scholes in the limit. And the values are appealing because they are simple and interpretable. In particular, we can see that if we additively aggregate nn shocks of size logu=σt/n\log u = \sigma \sqrt{t/n}, we recover the stochastic process’s true volatility σt\sigma t (Equation 3737).

However, (Chance, 2007) argues that while CRR prove their binomial model conveges to Black–Scholes in the limit, they do not assume the no-arbitrage condition when specifying uu and dd. Thus, these values admit arbitrage in finite nn! How meaningful this is in practice is a separate and harder question.

Understanding Chance’s argument is instructive and will help us pick uu and dd in a different way. For either CRR or Chance, the initial argument is the same. The continuous-time process is geometric Brownian motion, since the log prices are normally distributed. And the normal distribution is fully characterized by its mean and variance. So our strategy for choosing a sensible uu and dd is to first solve for these moments in terms of uu, dd, and pp, and then to judiciously define these parameters such the finite-nn moments converge to true normal distribution’s moments, μ\mu and σ2\sigma^2 (the values in Equation 4040). We don’t know the true μ\mu and σ2\sigma^2, of course, but we can estimate them from data.

That’s a lot, so let’s break it down. Let’s first write the log price at time point nn as a log return (or as SnS_n normalized by SS):

log(Sn/S)=jlog(u/d)+nlog(d).(51) \log(S_n/S) = j \log(u/d) + n\log(d). \tag{51}

First, CRR compute the mean and variance of this log return:

E[log(Sn/S)]=μ^n=[plog(u/d)+logd]n,V[log(Sn/S)]=σ^2n=p(1p)[log(u/d)]2n.(52) \begin{aligned} \mathbb{E}[\log(S_n / S)] &= \hat{\mu}n = \left[p \log(u/d) + \log d\right]n, \\ \mathbb{V}[\log(S_n / S)] &= \hat{\sigma}^2 n = p (1-p) \left[\log(u/d)\right]^2 n. \end{aligned} \tag{52}

See A3 in the companion post for a derivation. They then show that the parameter values in Equation 5252 allow for these moments converge to the true moments in the limit:

as nμ^nμt,σ^nσt.(53) \text{as $n \rightarrow \infty$} \qquad \hat{\mu} n \rightarrow \mu t, \quad \hat{\sigma} n \rightarrow \sigma t. \tag{53}

See A4 for a derivation. The problem, as mentioned above, is that nothing in this specification ensures that uu, dd, and rr are related in a way that avoids arbitrage.

Thus, Chance proposes a different approach and thus a different set of values for uu and dd. First, he observes that nothing in Hsia’s proof (again, see the companion post for this proof) relies on specifying the risk-neutral probability π\pi. This means that any choice of π\pi admits convergence to Black–Scholes. What is required by that proof, however, is the no-arbitrage condition. For example, it is invoked in Equation 2121 of the companion post. Thus, while π\pi might seem like another free parameter, it is not. And if π\pi is fixed by fiat, we then have two equations and two unknowns. The first equation is the definition of the π\pi in terms of uu and dd, a consequence of the no-arbitrage condition, and the second is a moment-matching equation with σ2\sigma^2:

πu+(1π)d=erh,[log(u/d)]2π(1π)=σ2h.(54) \begin{aligned} \pi u + (1-\pi) d &= e^{r h}, \\ \left[ \log(u/d) \right]^2 \pi (1-\pi) &= \sigma^2 h. \end{aligned} \tag{54}

The only two unknowns in Equation 5454 are uu and dd. Solving for these values gives us

u=exp(rh+σh/π(1π))πexp(σh/π(1π))+(1π),d=exp(rh)πexp(σh/π(1π))+(1π)..(55) \begin{aligned} u &= \frac{\exp(rh + \sigma \sqrt{h} / \sqrt{\pi(1-\pi)})}{\pi \exp(\sigma \sqrt{h} / \sqrt{\pi(1-\pi)}) + (1-\pi)}, \\ d &= \frac{\exp(rh)}{\pi \exp(\sigma \sqrt{h} / \sqrt{\pi(1-\pi)}) + (1-\pi)}. \end{aligned}. \tag{55}

See A5 for a derivation. If we use π=1/2\pi = 1/2, these are the values proposed in (Chriss, 1996), yet another proposal for choosing uu and dd.

To summarize this section, we want to solve for model parameters uu and dd. Because our proof does not rely on the specific value of π\pi, we can fix it to any value we’d like. The real conditions we want to hold are Equations 5454 above. This matches the volatility of our model to the volatility of the underlying geometric Brownian motion, and the risk-neutral mean to the risk-free interest rate.

What does this convergence look like in practice? I’ve replicated Chance’s Figure 11 in my Figure 1010. Here, I compare the call price CC using my implementations of Black–Scholes and my implementation of the binomial options-pricing model using both CRR and Chance’s values for uu and dd. The stock and strike are both S=K=100S=K=100, the risk-free rate is 0.050.05, and the volatility is σ=0.3\sigma=0.3.

Figure 10. A call option's price CC using Black--Scholes (BS), CRR's parameters (Equation 5050), and Chance's parameters (Equation 5555). The stock and strike prices are both S=K=100S=K=100. The risk-free interest rate is 0.050.05. And the volatility is σ=0.3\sigma=0.3.

I’ve also computed the average relative error between the Black–Scholes price and the price from the various configurations at play. These errors are

CRR      CRR Chance
0.32%    0.63% (pi = 0.25)
         0.24% (pi = 0.5)
         0.42% (pi = 0.75)

As we can see, Chance’s choices of uu and dd result in value CC that is closer to Black–Scholes when π=0.5\pi=0.5, and slightly worse for other values. While we know all choices of uu and dd converge to the Black–Scholes price in the limit, “in the limit” can be a long time. Chance recommends choosing π=1/2\pi=1/2. However, this reasoning is not formal, and it’s not obvious to me that π=1/2\pi=1/2 is the best choice for all particular sets of inputs.

For completeness, here are my two Python implementations of the binomial models:

B = lambda x, n, p: 1 - binom(n, p).cdf(x-1)

def bopm_crr(S, K, vlt, r, t, n):
    h = t/n
    u = np.exp(vlt * np.sqrt(h))
    d = 1/u
    r0 = np.exp(r * h)
    pi = (r0 - d) / (u - d)
    a = np.ceil((np.log(S/K) - n * np.log(d)) / (np.log(u/d)))
    rho = (u/r0) * pi
    return S * B(a, n, rho) - K * np.exp(-r * t) * B(a, n, pi)

def bopm_chance(S, K, vlt, r, t, n, pi):
    h = t/n
    g = np.sqrt(h / (pi * (1 - pi)))
    denom = pi * np.exp(vlt * g) + (1 - pi)
    u = np.exp(r*h + vlt * g) / denom
    d = np.exp(r * h) / denom
    r0 = np.exp(r * h)
    a = np.ceil((np.log(S/K) - n * np.log(d)) / (np.log(u/d)))
    rho = (u/r0) * pi
    return S * B(a, n, rho) - K * np.exp(-r * t) * B(a, n, pi)

And here is my Python implementation of Black–Scholes:

N = lambda x: norm(0, 1).cdf(x)

def black_scholes(S, K, vlt, r, t):
    x = (r + 0.5 * vlt**2) * t
    d1 = (np.log(S/K) + x) / (vlt * np.sqrt(t))
    d2 = d1 - vlt * np.sqrt(t)
    return S * N(d1) - K * np.exp(-r * t) * N(d2)

Note that I use rr rather than logr\log r in the Black–Scholes implementation, because I use a continuously compounding interest rate erte^{rt} rather than rtr^t.

A complete example

To wrap up this post, let’s work through a complete example of pricing a call option using the binomial options-pricing model. This will be fun to see and instructive for various details, such as thinking a bit more carefully about tt, rr, and σ\sigma. We’ll use Chance’s equations for uu and dd (Equation 5555) and π=1/2\pi=1/2. So that we can compare our price to a market price, we’ll compute the price a real Apple call option, contract AAPL230609C00180000, which has a strike price of K=180K=180.

First, let’s compute our market values. Let’s follow the convention of thinking of the time to expiry tt in years. Thus t=1t=1 is one year. The call option currently expires on 9 July 2023, which is in roughly 55 physical days, so let’s use t=5/365t=5/365. The interest rate rr should be annualized, since we want rt=1r^{t=1} to be the annual interest rate. The current annual federal funds rate is roughly 5%5\%, so r=0.05r=0.05. (Note that we are now dropping the plus one convention since we use compound interest in our implementation.) And Apple’s stock price is trading at roughly $181$181. I say “roughly” because I am computing these values on a weekend and using Yahoo! Finance as sourcing.

The last thing we need to do is estimate Apple’s volatility. By “Apple’s volatility”, I mean that we want to compute σ\sigma of the either the log return or the log price. It does not matter which since the variance is invariant under the transformation between the two. To estimate σ\sigma, I downloaded 10 years of Apple stock price data and then loaded it into a Pandas data frame df:

>>> df = pd.read_csv("aapl_historical_prices.csv", index_col=0)
>>> px = df["close"]
>>> px
Date
2013-05-20     15.8189
2013-05-21     15.7021
2013-05-22     15.7626
2013-05-23     15.7907
2013-05-24     15.8982
                ...
2023-05-15    172.0700
2023-05-16    172.0700
2023-05-17    172.6900
2023-05-18    175.0500
2023-05-19    175.1600

I then computed the log return as

>>> ret = np.log(px) - np.log(px.shift(1))

Notice that the return is a daily return, and therefore the volatility

>>> vlt_daily = ret.std()
0.018026484931514885

is a daily volatility. However, we want σ2t\sigma^2 t to be the annual variance when t=1t=1, so let’s convert the daily volatility to annual volatility by multiplying by the square root of 365. This gives us

>>> vlt_yearly = vlt_daily * np.sqrt(365)
>>> vlt_yearly
0.34439551104789184

And finally, let’s set n=100n=100. This is arbitrary. Bigger nn means a better approximation to Black–Scholes. Now we can compute the call CC, using our Python functions above:

>>> C = bopm_chance(S=181, K=180, vlt=vlt_yearly, r=0.05, t=5/365, n=100, pi=0.5)
>>> C
3.4253338645901863

For context, the Black–Scholes price using my function above is 3.497536243693304. And as of this writing, the bid and ask prices of the Apple call option are

Bid     Ask
3.10	3.25

If the “true price” is around 3.173.17 or 3.183.18, then our price is off from this market price by roughly 10%10\%. This sanity-check tells us that we probably haven’t done anything too stupid in our naive implementations. Of course, there are many things we could do differently in practice. To a first order, we should take a lot more care in estimating all the inputs to the model.

But my point is that the binomial model produces a fair call option price is that is close to the Black–Scholes price. The difference between these prices and the market price could, in theory, be an arbitrage opportunity—a bad options dealer selling at a bad price—but obviously here the discrepancy is due to both our inputs and the simplicity of our model.

Conclusion

The binomial options pricing model is a simple, discrete-time model for pricing options. In my mind, it is particularly valuable because it provides economic intuition for how to price options without any sophisticated mathematics. We did not need to discuss continous-time martingales or stochastic integrals or Itô-Doeblin’s lemma in order to make real progress. And we covered some pretty fundamental ideas from the options-pricing literature, such as the no-arbitrage condition, replicating portfolio, and risk-neutral measure. And since the binomial model converges to Black–Scholes, we can be confident that the prices from this simple model well-approximate prices from Black–Scholes when nn is large.

 

Appendix

A1. Solving for Δ\Delta and BB

We want to solve for Δ\Delta and BB in

Cu=ΔuS+r0B,Cd=ΔdS+r0B.(A1.1) \begin{aligned} C_u &= \Delta u S + r_0 B, \\ C_d &= \Delta d S + r_0 B. \end{aligned} \tag{A1.1}

To solve for Δ\Delta, let’s subtract the bottom line from the top line:

CuCd=Δ(uSdS)Δ=CuCdS(ud).(A1.2) \begin{aligned} C_u - C_d &= \Delta (u S - d S) \\ &\Downarrow \\ \Delta &= \frac{C_u - C_d}{S (u - d)}. \end{aligned} \tag{A1.2}

We can then plug this into either line in equation A1.1A1.1 to solve for BB,

B=1r0(CuΔuS)=1r0[Cu(CuCdS(ud))uS)]=1r0[Cu(ud)uCu+uCdud]=1r0[uCudCuuCu+uCdud]=uCddCur0(ud),(A1.3) \begin{aligned} B &= \frac{1}{r_0} (C_u - \Delta u S) \\ &= \frac{1}{r_0} \left[ C_u - \left( \frac{C_u - C_d}{S (u - d)} \right) u S) \right] \\ &= \frac{1}{r_0} \left[ \frac{C_u (u - d) - u C_u + u C_d}{u - d} \right] \\ &= \frac{1}{r_0} \left[ \frac{u C_u - d C_u - u C_u + u C_d}{u - d} \right] \\ &= \frac{u C_d - d C_u}{r_0(u - d)}, \end{aligned} \tag{A1.3}

as desired.

 

A2. Writing CC in terms of risk-neutral probabilities

Let’s write the call option CC in terms of its risk-neutral expected value after one period:

C=ΔS+B=(CuCd(ud)S)S+(uCddCur0(ud))=1r0[(r0Cur0Cdud)+(uCddCuud)]=1r0[(r0Cur0Cd+uCddCuud)]=1r0[(r0d)Cu+(ur0)Cdud]=1r0[(r0dud)Cu+(ur0ud)Cd](A2.1) \begin{aligned} C &= \Delta S + B \\ &= \left( \frac{C_u - C_d}{(u-d)S} \right) S + \left( \frac{u C_d - d C_u}{r_0(u - d)} \right) \\ &= \frac{1}{r_0} \left[ \left( \frac{r_0 C_u - r_0 C_d}{u-d} \right) + \left( \frac{u C_d - d C_u}{u - d} \right) \right] \\ &= \frac{1}{r_0} \left[ \left( \frac{r_0 C_u - r_0 C_d + u C_d - d C_u}{u - d} \right) \right] \\ &= \frac{1}{r_0} \left[ \frac{(r_0 - d) C_u + (u - r_0) C_d}{u - d} \right] \\ &= \frac{1}{r_0} \left[ \left( \frac{r_0 - d}{u - d} \right) C_u + \left( \frac{u - r_0}{u - d} \right) C_d \right] \end{aligned} \tag{A2.1}

Here the factors (r0d)/(ud)(r_0 - d)/(u - d) and (ur0)/(ud)(u - r_0)/(u - d) are the risk-neutral probabilities.

 

A3. Understanding the binomial survival function

The survival (sometimes lifetime) function LL of a probability distribution is the probability that a random variable takes a value greater than the function argument or

L(x)=P(X>x).(A3.1) L(x) = \mathbb{P}(X \gt x). \tag{A3.1}

Now if FF denotes the random variable’s CDF,

F(x)=P(Xx),(A3.2) F(x) = \mathbb{P}(X \leq x), \tag{A3.2}

then we can write the survival function as the complement of the CDF,

L(x)=1F(x1).(A3.3) L(x) = 1 - F(x-1).\tag{A3.3}

We use x1x-1 instead of xx as the argument to the CDF because the CDF gives the probability of xx or fewer successes, whereas we want to find the probability of xx or more successes. Now what is the CDF of the binomial distribution with the usual parameterization pp and nn and for x1x-1? It is

F(x1)=P(Xx1)=j=0x1(nj)pj(1p)nj.(A3.4) F(x-1) = \mathbb{P}(X \leq x-1) = \sum_{j=0}^{x-1} {n \choose j} p^j (1-p)^{n-j}. \tag{A3.4}

This is just the summation of disjoint events, that XX is a success for trials i{0,1,,x1}i \in \{0,1,\dots,x-1\}. And since the binomial distribution must normalize,

1=j=0n(nx)pj(1p)nj(A3.5) 1 = \sum_{j=0}^n {n \choose x} p^j (1-p)^{n-j} \tag{A3.5}

then clearly

L(x)=j=xn(ni)pj(1p)nj.(A3.6) L(x) = \sum_{j=x}^n {n \choose i} p^j (1-p)^{n-j}. \tag{A3.6}

So concretely, the survival function for the binomial distribution is the probability of jj heads or j+1j+1 heads or j+2j+2 heads and so on, starting j=xj=x.

 

A4. Solving for μ^n\hat{\mu}n and σ^n\hat{\sigma}n in the limit

We want to show that CRR’s parameters induce μ^n\hat{\mu}n and σ^n\hat{\sigma}n to convert to the moments of the continuous-time process in the limit.

Observe a few useful facts. First, CRR’s definitions of uu and dd imply that ud=1ud = 1, and therefore

log(u/d)=log(u2)=2log(u)=2σt/n,log(d)=log(u1)=log(u)=σt/n.(A4.1) \begin{aligned} \log(u/d) &= \log(u^2) = 2 \log(u) = 2 \sigma \sqrt{t/n}, \\ \log(d) &= \log(u^{-1}) = -\log(u) = -\sigma \sqrt{t/n}. \end{aligned} \tag{A4.1}

We can write the log return from zero to nn as

μ^n=[plog(u/d)+log(d)]n=[(12+12(μ/σ)t/n)2σt/nσt/n]n=[σt/n+μ(t/n)σt/n]n=μt(A4.2) \begin{aligned} \hat{\mu} n &= \left[ p \log(u/d) + \log(d) \right] n \\ &= \left[ \left( \frac{1}{2} + \frac{1}{2}(\mu / \sigma) \sqrt{t/n} \right) 2 \sigma \sqrt{t/n} - \sigma \sqrt{t/n} \right] n \\ &= \left[ \sigma \sqrt{t/n} + \mu (t/n) - \sigma \sqrt{t/n} \right] n \\ &= \mu t \end{aligned} \tag{A4.2}

And we can write the variance of that return as

σ^2n=p(1p)(log(u/d))2n=[(12+12(μ/σ)t/n)(1(12+12(μ/σ)t/n))(2σt/n)2]n=[(12+12(μ/σ)t/n)(1212(μ/σ)t/n)4σ2(t/n)]n=[(1+(μ/σ)t/n)(1(μ/σ)t/n)σ2(t/n)]n=[(1μ2σ2tn)σ2(t/n)]n=[σ2(t/n)μ2t2n2]n=σ2tμ2t2n(A4.3) \begin{aligned} \hat{\sigma}^2 n &= p(1-p)\left( \log(u/d) \right)^2 n \\ &= \left[ \left( \frac{1}{2} + \frac{1}{2}(\mu / \sigma) \sqrt{t/n} \right) \left( 1 - \left( \frac{1}{2} + \frac{1}{2}(\mu / \sigma) \sqrt{t/n} \right) \right) \left( 2 \sigma \sqrt{t/n} \right)^2 \right] n \\ &= \left[ \left( \frac{1}{2} + \frac{1}{2}(\mu / \sigma) \sqrt{t/n} \right) \left( \frac{1}{2} - \frac{1}{2}(\mu / \sigma) \sqrt{t/n} \right) 4 \sigma^2 (t/n) \right] n \\ &= \left[ \left( 1 + (\mu / \sigma) \sqrt{t/n} \right) \left( 1 - (\mu / \sigma) \sqrt{t/n} \right) \sigma^2 (t/n) \right] n \\ &= \left[ \left( 1 - \frac{\mu^2}{\sigma^2}\frac{t}{n} \right) \sigma^2 (t/n) \right] n \\ &= \left[ \sigma^2 (t/n) - \mu^2\frac{t^2}{n^2} \right] n \\ &= \sigma^2 t - \frac{\mu^2 t^2}{n} \end{aligned} \tag{A4.3}

This converges to σ2t\sigma^2 t as nn \rightarrow \infty.

A5. Solving for Chance’s uu and dd

In this section, the term h/π(1π)\sqrt{h} / \sqrt{\pi(1-\pi)} is tedious to write, so let’s call it gg:

g=h/π(1π).(A5.1) g = \sqrt{h} / \sqrt{\pi(1-\pi)}. \tag{A5.1}

We have two equations and two unknowns:

πu+(1π)d=erh,log(u/d)2π(1π)=σ2h.(A5.2) \begin{aligned} \pi u + (1 - \pi) d = e^{r h}, \\ \log(u/d)^2 \pi(1-\pi) = \sigma^2 h. \end{aligned} \tag{A5.2}

Let’s solve for uu, which is

u=erh(1π)dπ,(A5.3) u = \frac{e^{rh} - (1 - \pi)d}{\pi}, \tag{A5.3}

and then plug this value into the other equation to get

σ2h=[log(erh(1π)ddπ)]2π(1π)σ2hπ(1π)=log(erh(1π)ddπ)eσg=erh(1π)ddππeσg=erhd(1π)erhd=eσgπ+(1π)1d=eσgπ+(1π)erhd=erhπeσg+(1π).(A5.4) \begin{aligned} \sigma^2 h &= \left[\log\left( \frac{e^{rh} - (1 - \pi)d}{d \pi}\right)\right]^2 \pi (1 - \pi) \\ \sqrt{\frac{\sigma^2 h}{\pi (1-\pi)}} &= \log\left( \frac{e^{rh} - (1 - \pi)d}{d \pi}\right) \\ e^{\sigma g} &= \frac{e^{rh} - (1 - \pi)d}{d \pi} \\ \pi e^{\sigma g} &= \frac{e^{rh}}{d} - (1 - \pi) \\ \frac{e^{rh}}{d} &= e^{\sigma g} \pi + (1 - \pi) \\ \frac{1}{d} &= \frac{e^{\sigma g} \pi + (1 - \pi)}{e^{rh}} \\ d &= \frac{e^{rh}}{\pi e^{\sigma g} + (1 - \pi)}. \end{aligned} \tag{A5.4}

Now let’s plug this value back into the equation for uu (Equation A9.2\text{A}9.2):

u=erh(1π)dπ=erhπ(1π)π(erhπeσg+(1π))=erh(πeσg+(1π))(1π)erhπ2(πeσg+(1π))=erheσgπ2+erhπerhπ2πerh+π2erhπ2(πeσg+(1π))=π2erh+σgπ2(πeσg+(1π))=erh+σgπeσg+(1π).(A5.5) \begin{aligned} u &= \frac{e^{rh} - (1 - \pi)d}{\pi} \\ &= \frac{e^{rh}}{\pi} - \frac{(1 - \pi)}{\pi} \left( \frac{e^{rh}}{\pi e^{\sigma g} + (1 - \pi)} \right) \\ &= \frac{e^{rh}(\pi e^{\sigma g} + (1 - \pi)) - (1-\pi)e^{rh}}{\pi^2 (\pi e^{\sigma g} + (1 - \pi)) } \\ &= \frac{e^{rh} e^{\sigma g} \pi^2 + e^{rh} \pi - e^{r h} \pi^2 - \pi e^{rh} + \pi^2 e^{rh}}{\pi^2 (\pi e^{\sigma g} + (1 - \pi)) } \\ &= \frac{\pi^2 e^{rh + \sigma g}}{\pi^2 (\pi e^{\sigma g} + (1 - \pi))} \\ &= \frac{e^{rh + \sigma g}}{\pi e^{\sigma g} + (1 - \pi)}. \end{aligned} \tag{A5.5}

If we plug the value of gg in to both equations, we get the same values as (Chance, 2007):

u=erh+σh/π(1π)πeσh/π(1π)+(1π),d=erhπeσh/π(1π)+(1π).(A5.6) \begin{aligned} u &= \frac{e^{rh + \sigma \sqrt{h} / \sqrt{\pi(1-\pi)}}}{\pi e^{\sigma \sqrt{h} / \sqrt{\pi(1-\pi)}} + (1 - \pi)}, \\ d &= \frac{e^{rh}}{\pi e^{\sigma \sqrt{h} / \sqrt{\pi(1-\pi)}} + (1 - \pi)}. \end{aligned} \tag{A5.6}

as desired.

  1. Cox, J. C., Ross, S. A., & Rubinstein, M. (1979). Option pricing: A simplified approach. Journal of Financial Economics, 7(3), 229–263.
  2. Rendleman, R. J. (1979). Two-state option pricing. The Journal of Finance, 34(5), 1093–1110.
  3. Black, F., & Scholes, M. (1973). The pricing of options and corporate liabilities. Journal of Political Economy, 81(3), 637–654.
  4. Haug, E. G., & Taleb, N. N. (2011). Option traders use (very) sophisticated heuristics, never the Black–Scholes–Merton formula. Journal of Economic Behavior & Organization, 77(2), 97–106.
  5. Hsia, C.-C. (1983). On binomial option pricing. Journal of Financial Research, 6(1), 41–46.
  6. Chance, D. M. (2007). A synthesis of binomial option pricing models for lognormally distributed assets. Available at SSRN 969834.
  7. Chriss, N. (1996). Black-Scholes and Beyond: Modern Options Pricing. Burr Ridge, IL: Irwin Professional Publishing.