35 min

Moneyness and a toy pricer: what a premium buys

A premium splits into intrinsic value, which you could exercise for today, and time value, the priced chance of ending up in the money; a small binomial tree computes both by working backwards from expiry. The tree's step size comes from a volatility input, the knob the next lesson names.

Where you are. You can compute what an option pays at expiry. You cannot yet say what it should cost today, and that is a harder question than any pricing in this course so far. Every other price has been a discounted set of known payments. An option’s payments are not known; they depend on where the price ends up. This lesson builds a small machine that handles that.

Two options, both worthless today

Two calls, both struck at 100, on a share trading at 100. Exercising either right now is worth precisely nothing: buying at 100 when the price is 100 is not an opportunity.

One expires this afternoon. The other expires in a year.

Nobody would pay the same for them, and the reason has nothing to do with what they are worth today, since that is zero for both. It is about what might happen. The afternoon option has hours for something to change. The year option has a year, and a year contains a great deal.

That difference in possibility is the thing being priced, and it is most of what an option premium ever is.

The idea in one paragraph

A premium has two parts. Intrinsic value is what you could get by exercising immediately - zero unless the option is already worth exercising. Time value is everything else: the priced chance that it becomes worth exercising before expiry. Time value is largest when the price sits near the strike, because that is where the outcome is most genuinely uncertain, and it falls to nothing at expiry when there is no time left for anything to change. To compute it you need a model of how the price might move, and the smallest honest one is a tree: at each small step the price moves up or down, so a few dozen steps enumerate the reachable outcomes. Value the option at the end of every branch, where the answer is known, then work backwards to today.

Backwards from the only place you know the answer

The trick is that the option’s value is trivial at exactly one moment: expiry. At expiry there is no uncertainty left, so a call is worth the price minus the strike, or nothing.

So start there. Build a tree of possible prices - up or down at each step, recombining so an up-then-down lands where a down-then-up does - and at the final layer compute the payoff for every node, which is arithmetic you already have.

Then step backwards. Each node one layer earlier has two children, and its value is the probability-weighted average of theirs. Repeat until one number remains at the root: today’s price.

What the tree prices

The exercise builds it and checks the properties that matter, and they are all things you would expect if the model is honest.

More volatility is worth more. A wider tree reaches further in both directions, and because the downside is capped at zero for the buyer, only the upside compounds into value. More time is worth more, for the same reason: more steps, more spread. And a deeply out-of-the-money call is worth almost nothing, because almost no branch reaches the strike.

image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 70 80 90 100 110 120 130 strike (spot is 100) 0 5 10 15 20 25 30 premium time value peaks at the money intrinsic time value
A premium split into intrinsic value and time value across strikes, with time value peaking where the price sits at the strike

Why a toy tree is worth building

Real desks use more elaborate models. The tree is worth building anyway, for the same reason the miniledger was: it is small enough to read completely, and it produces the properties you can check by intuition. When the next lesson measures sensitivities by nudging inputs, it will nudge this tree, and you will know exactly what is being nudged.

Check yourself

1. Two calls, same strike, same price, one expiring today and one in a year. Both have zero intrinsic value. Why do they cost different amounts?

Because time value differs. Neither is worth exercising now, but the year-long option has a year in which the price might move above the strike, and the afternoon option has hours. The premium is paying for the chance, and there is much more chance in a year.

2. Why does the pricer start at expiry and work backwards rather than starting today?

Because expiry is the only moment where the option’s value is known with certainty: the payoff is a simple function of the final price. Every earlier value depends on the values one step ahead, so filling the table from the boundary backwards is the only direction in which each step is computable.

3. Why is more volatility worth more to an option buyer, when it makes bad outcomes more likely too?

Because the buyer’s downside is capped at the premium. A wider distribution reaches further in both directions, but the extra downside costs nothing beyond what has already been paid, while the extra upside is worth more. Asymmetric payoff plus wider outcomes means more value.

4. Two desks price the same option differently with the same model. Where does the disagreement live?

In the volatility input, which the model takes rather than derives. Everything else - strike, spot, time, rate - is observable, so the assumed width of the tree is the only free parameter and therefore the whole argument. That is why quoting the volatility a price implies is more useful than quoting a price.

Do this

Build the tree and split the premium.

python3 code/binomial_pricer.py

The starter leaves you the backwards induction: build the terminal prices and their payoffs, then repeatedly collapse each layer into the probability-weighted average of its children until one value remains. The assertions bracket an at-the-money premium, check that a deeply out-of-the-money call is nearly worthless, and confirm that both more volatility and more time increase the price. Success prints the intrinsic and time-value split across three strikes and the line:

time value peaks at the money and melts as expiry nears: the premium is mostly a price on uncertainty

The completed version is in solutions/binomial_pricer.py.

What you can now do. You can price an option with a model small enough to read, and split any premium into what it is worth now and what it is worth for the chance. A price alone is not what a desk manages, though. It manages exposure, and the next lesson measures it the way module 4 measured duration: by nudging.

What you can now do

You can price an option with a binomial tree and split any premium into what it is worth now and what it is worth for the chance.