The Black–Scholes Formula
Here it is — the most famous equation in finance:
C = S_0\,\Phi(d_1) \;-\; K e^{-rT}\,\Phi(d_2).
Before we derive a single symbol of it, read it as a sentence. A call option
lets you buy a stock for K at time T, so
at expiry you receive a share (worth something) and hand over the strike (worth something
else) — if you exercise. The formula is exactly that trade, priced today:
C = \underbrace{S_0\,\Phi(d_1)}_{\text{what you might get}} \;-\; \underbrace{K e^{-rT}\,\Phi(d_2)}_{\text{what you might pay}}.
The second term is transparent: K e^{-rT} is the strike discounted
to today, and \Phi(d_2) will turn out to be precisely the
(risk-neutral) probability you exercise — so the term is "the present value of
the strike, times the chance you actually pay it." The first term is the stock leg, weighted by
its own probability-like factor \Phi(d_1) — subtly larger
than \Phi(d_2), for a reason we will pin down exactly. Two
cumulative normals and a discount factor: that is the whole formula. It deserves to be
read, not just plugged.
Everything has been leading here. The
risk-neutral price
of a European call is the discounted expected payoff,
C = e^{-rT}\,\mathbb{E}_{\mathbb{Q}}\!\big[(S_T - K)^+\big],
and under \mathbb{Q} the terminal stock price is
lognormal,
S_T = S_0\,\exp\!\Big(\big(r - \tfrac12\sigma^2\big)T + \sigma\sqrt{T}\,Z\Big), \qquad Z \sim N(0, 1).
That is a single Gaussian integral. We will evaluate it and out will drop the closed form
above — so clean it won
Itô's successors a Nobel Prize, the
Bachelier dream made exact.
Evaluating the expectation, line by line
The call pays only when it finishes in the money, S_T > K. We split
the expectation into the two pieces hiding inside
(S_T - K)^+ and handle each.
Step 1 — split the payoff. On the event
\{S_T > K\} the payoff is S_T - K; elsewhere
it is zero. Writing \mathbf{1} for the indicator,
C = e^{-rT}\,\mathbb{E}_{\mathbb{Q}}\!\big[(S_T - K)\,\mathbf{1}_{\{S_T > K\}}\big] = e^{-rT}\Big(\underbrace{\mathbb{E}_{\mathbb{Q}}[S_T\,\mathbf{1}_{\{S_T > K\}}]}_{\text{term I}} - K\,\underbrace{\mathbb{Q}(S_T > K)}_{\text{term II}}\Big).
Step 2 — solve S_T > K for
Z. Substitute the lognormal form and take logs. The inequality
S_0 e^{(r - \frac12\sigma^2)T + \sigma\sqrt{T}Z} > K becomes, after
\ln and rearranging for Z:
Z > -\,\frac{\ln(S_0/K) + (r - \tfrac12\sigma^2)T}{\sigma\sqrt{T}} = -\,d_2, \qquad d_2 := \frac{\ln(S_0/K) + (r - \tfrac12\sigma^2)T}{\sigma\sqrt{T}}.
Step 3 — compute term II, \mathbb{Q}(S_T > K).
It is now \mathbb{Q}(Z > -d_2), and by the symmetry of the standard
normal, \mathbb{P}(Z > -d_2) = \mathbb{P}(Z < d_2) = \Phi(d_2):
\mathbb{Q}(S_T > K) = \Phi(d_2).
So \Phi(d_2) is the risk-neutral probability of exercise —
the promise in the opening sentence, kept.
Step 4 — state term I,
\mathbb{E}_{\mathbb{Q}}[S_T\,\mathbf{1}_{\{S_T > K\}}].
Multiplying by S_T = S_0 e^{(r - \frac12\sigma^2)T + \sigma\sqrt{T}Z}
before integrating shifts the effective mean of the Gaussian by
\sigma\sqrt{T} (the computation is in the vignette), turning the
threshold -d_2 into -d_1 with
d_1 = d_2 + \sigma\sqrt{T}:
\mathbb{E}_{\mathbb{Q}}[S_T\,\mathbf{1}_{\{S_T > K\}}] = S_0\,e^{rT}\,\Phi(d_1), \qquad d_1 := d_2 + \sigma\sqrt{T} = \frac{\ln(S_0/K) + (r + \tfrac12\sigma^2)T}{\sigma\sqrt{T}}.
Step 5 — combine. Put terms I and II back into Step 1 and watch the
e^{rT} from term I cancel the discount
e^{-rT}:
C = e^{-rT}\Big(S_0\,e^{rT}\,\Phi(d_1) - K\,\Phi(d_2)\Big) = S_0\,\Phi(d_1) - K\,e^{-rT}\,\Phi(d_2).
That is the Black–Scholes formula. The price is the stock weighted by
\Phi(d_1), less the discounted strike weighted by the exercise
probability \Phi(d_2).
A European call and put on a non-dividend stock, with spot
S_0, strike K, expiry
T, rate r, volatility
\sigma, are worth:
-
Call:
C = S_0\,\Phi(d_1) - K\,e^{-rT}\,\Phi(d_2);
-
Put:
P = K\,e^{-rT}\,\Phi(-d_2) - S_0\,\Phi(-d_1);
-
d_1 = \dfrac{\ln(S_0/K) + (r + \tfrac12\sigma^2)T}{\sigma\sqrt{T}};
-
d_2 = d_1 - \sigma\sqrt{T} = \dfrac{\ln(S_0/K) + (r - \tfrac12\sigma^2)T}{\sigma\sqrt{T}}.
Here is the integral promised in Step 4. Write
S_T = S_0\,e^{(r - \frac12\sigma^2)T + \sigma\sqrt{T}z} and
integrate against the standard normal density
\varphi(z) = \tfrac{1}{\sqrt{2\pi}}e^{-z^2/2} over the exercise
region z > -d_2:
\mathbb{E}_{\mathbb{Q}}[S_T\,\mathbf{1}_{\{S_T > K\}}] = \int_{-d_2}^{\infty} S_0\,e^{(r - \frac12\sigma^2)T + \sigma\sqrt{T}z}\,\frac{1}{\sqrt{2\pi}}\,e^{-z^2/2}\,dz.
Pull S_0 e^{(r - \frac12\sigma^2)T} out and combine the two
exponentials, completing the square in the exponent
\sigma\sqrt{T}z - \tfrac12 z^2:
\sigma\sqrt{T}\,z - \tfrac12 z^2 = -\tfrac12\big(z - \sigma\sqrt{T}\big)^2 + \tfrac12\sigma^2 T.
The leftover constant \tfrac12\sigma^2 T combines with the
prefactor: e^{(r - \frac12\sigma^2)T}\,e^{\frac12\sigma^2 T} = e^{rT}.
So
\mathbb{E}_{\mathbb{Q}}[S_T\,\mathbf{1}_{\{S_T > K\}}] = S_0\,e^{rT}\int_{-d_2}^{\infty} \frac{1}{\sqrt{2\pi}}\,e^{-\frac12 (z - \sigma\sqrt{T})^2}\,dz.
Substitute w = z - \sigma\sqrt{T}. The lower limit moves from
-d_2 to -d_2 - \sigma\sqrt{T} = -d_1,
and the integrand is a clean standard normal:
= S_0\,e^{rT}\int_{-d_1}^{\infty}\varphi(w)\,dw = S_0\,e^{rT}\,\mathbb{P}(W > -d_1) = S_0\,e^{rT}\,\Phi(d_1).
The shift of the mean by \sigma\sqrt{T} — convexity again, the same
mechanism behind the lognormal mean — is exactly what turns d_2
into d_1.
The formula's two halves are not interchangeable lookalikes; each
\Phi means something concrete.
-
\Phi(d_2) = \mathbb{Q}(S_T > K) is the risk-neutral
probability the option is exercised — it fell straight out of Step 3.
-
\Phi(d_1) = \partial C / \partial S_0 is the
delta, the number of shares to hold to hedge one call — the
Greek
that links this formula back to replication. (It is also the exercise probability under a
different, stock-numéraire measure — hence the family resemblance.)
So C = S_0\Phi(d_1) - Ke^{-rT}\Phi(d_2) reads: "hold
\Phi(d_1) shares, borrow the present value of the strike times the
chance you will need it." The replication portfolio and the formula are the same object.
Worked example: pricing a real option, every digit
Formulas earn their keep by producing numbers. Take the canonical textbook option — the one
every quant has priced a hundred times: an at-the-money one-year call with
S_0 = 100, \quad K = 100, \quad r = 5\%, \quad \sigma = 20\%, \quad T = 1.
Step 1 — the volatility scale.
\sigma\sqrt{T} = 0.20 \times \sqrt{1} = 0.20. Every distance in the
formula is measured in these units.
Step 2 — compute d_1. At the money,
\ln(S_0/K) = \ln 1 = 0, so only the drift survives the numerator:
d_1 = \frac{0 + (0.05 + \tfrac12 \times 0.20^2)\times 1}{0.20} = \frac{0.05 + 0.02}{0.20} = \frac{0.07}{0.20} = 0.35.
Step 3 — compute d_2. No need to touch the big
fraction again — just step down by \sigma\sqrt{T}:
d_2 = d_1 - \sigma\sqrt{T} = 0.35 - 0.20 = 0.15.
Step 4 — look up the normals. From a table (or
Phi(x) on any machine):
\Phi(0.35) = 0.6368, \qquad \Phi(0.15) = 0.5596.
Step 5 — the discounted strike.
e^{-rT} = e^{-0.05} = 0.9512, so
K e^{-rT} = 100 \times 0.9512 = 95.12.
Step 6 — assemble.
C = 100 \times 0.6368 \;-\; 95.12 \times 0.5596 = 63.68 - 53.23 \approx 10.45.
A one-year at-the-money call on a $100 stock at 20% volatility costs about
$10.45 — roughly a tenth of the stock price. And the intermediate numbers are
themselves the answer to two more questions: the option's delta is
\Phi(d_1) = 0.64 (hold 0.64 shares per call to hedge), and the
risk-neutral chance it finishes in the money is
\Phi(d_2) = 0.56 — a little better than a coin flip, because the
risk-neutral drift r nudges the stock upward.
The matching put comes free from parity (derived below):
P = C - S_0 + Ke^{-rT} = 10.45 - 100 + 95.12 = 5.57. The call is
worth more than the put by exactly the forward premium
S_0 - Ke^{-rT} = 4.88 — carry, not optimism.
Anatomy of d_1 and d_2
The d's look opaque until you dissect them. Both share the same
skeleton:
d_{1,2} = \frac{\overbrace{\ln(S_0/K)}^{\text{moneyness}} + \overbrace{(r \pm \tfrac12\sigma^2)T}^{\text{drift}}}{\underbrace{\sigma\sqrt{T}}_{\text{noise scale}}}.
Each is a z-score: how many standard deviations of log-return stand between
"where the stock is" and "where the strike is," after drifting for time
T. The numerator measures the head start
(\ln(S_0/K) positive when already in the money) plus the drift the
risk-neutral world grants; the denominator \sigma\sqrt{T} is the
typical size of the random shock — the square-root-of-time law of Brownian motion.
Why two z-scores, \sigma\sqrt{T} apart? Because the two
terms of the formula ask slightly different questions of the same lognormal:
-
The strike leg asks "will I pay the strike?" — a plain probability, evaluated at the
lognormal's own centre. That is d_2, with the
-\tfrac12\sigma^2 Itô correction in its drift.
-
The stock leg asks "what do I receive, given I receive it?" — an expectation
weighted by S_T itself. Big stock prices count more, so
the weighting tilts the Gaussian toward high outcomes: completing the square shifts its mean
up by exactly \sigma\sqrt{T}, and the z-score improves to
d_1 = d_2 + \sigma\sqrt{T}. That size-biasing is the whole
difference between the two \Phi's — and it is why
\Phi(d_1) > \Phi(d_2) always.
Notice what the formula does not contain: the stock's true expected return
\mu. Bulls and bears who agree on \sigma
must agree on the option's price — the deepest lesson of
risk-neutral pricing,
now visible in the final answer.
Sanity checks: torturing the formula at its limits
A closed form you cannot stress-test is a closed form you do not understand. Push each input to
its extreme and the formula should degrade gracefully into something you could have priced by
hand.
Check 1 — kill the randomness, \sigma \to 0. The
stock becomes deterministic: S_T = S_0 e^{rT} with certainty. If
S_0 e^{rT} > K (i.e. S_0 > Ke^{-rT}) the
numerator of d_{1,2} is positive while the denominator
\sigma\sqrt{T} \to 0, so both d's blow up
to +\infty and both \Phi's
\to 1; otherwise both \to -\infty and the
\Phi's vanish. Either way:
C \;\xrightarrow{\;\sigma \to 0\;}\; \max\!\big(S_0 - Ke^{-rT},\,0\big),
the value of a riskless forward claim — exactly what a certain payoff must be worth by
no-arbitrage alone.
Check 2 — kill the time, T \to 0. Both the drift
term and the discount evaporate, and again the d's fly to
\pm\infty according to the sign of
\ln(S_0/K). The price collapses onto the kink:
C \to (S_0 - K)^+, the payoff itself. An option with no time left
is just its intrinsic value.
Check 3 — deep in the money, S_0 \gg K.
\ln(S_0/K) is huge, both \Phi's
\approx 1, and C \approx S_0 - Ke^{-rT}:
the option behaves like the stock minus a sure debt of K — a
forward. Its delta \Phi(d_1) \to 1: hedging it means simply owning
the share. (Try S_0 = 200 in our worked example:
d_1 = (\ln 2 + 0.07)/0.2 \approx 3.82, and
C \approx 200 - 95.12 = 104.88 almost exactly.)
Check 4 — deep out of the money, S_0 \ll K. Both
\Phi's rush to zero — and they do so like the Gaussian tail,
e^{-d^2/2}, so the price dies faster than exponentially in
log-moneyness. Far-out-of-the-money options are cheap, but (as every option seller eventually
rediscovers) never quite free.
Four limits, four familiar prices. The smooth surface interpolating between them is what the
interactive curve below lets you explore.
The put, for free, by parity
We need not redo the integral for the put. By
put–call parity,
C - P = S_0 - K e^{-rT}. Rearranging and using
1 - \Phi(d) = \Phi(-d):
P = C - S_0 + K e^{-rT} = K e^{-rT}\big(1 - \Phi(d_2)\big) - S_0\big(1 - \Phi(d_1)\big) = K e^{-rT}\,\Phi(-d_2) - S_0\,\Phi(-d_1).
Read the put the same way we read the call, roles reversed: you receive the discounted
strike weighted by \Phi(-d_2) = \mathbb{Q}(S_T < K) — the
probability the put is exercised — and give up the stock leg weighted by
\Phi(-d_1). Its delta is -\Phi(-d_1),
negative as a put's must be. One Gaussian integral, both prices.
Two traps, one of them a beloved quant-interview classic:
-
The interview trap. Since S_0\Phi(d_1) looks like
"stock times probability," almost everyone's first instinct is that
\Phi(d_1) is the chance of exercise. It is not — that is
\Phi(d_2), and Step 3 of the derivation proves it.
\Phi(d_1) is the delta, a hedging
quantity: the shares you must hold to replicate the call. It only becomes an exercise
probability if you change currency — measured with the stock itself as numéraire
(prices quoted in shares rather than dollars), the exercise probability is exactly
\Phi(d_1). Same event, two measures, two numbers; the
\sigma\sqrt{T} between d_1 and
d_2 is precisely the measure change. Say "delta" in the interview,
then explain the numéraire — that is the full-marks answer.
-
The scope trap. The formula prices European options (exercise at
T only) on a non-dividend stock. Dividends leak value out
of the stock before expiry — the fix replaces S_0 by
S_0 e^{-qT} for a dividend yield q
(Merton's extension). American options allow early exercise, which is genuinely worth
something for puts (and for calls on dividend payers), so their price exceeds Black–Scholes
and needs numerical methods — there is no closed form. Quoting the naked formula for an
American put on a dividend stock is wrong twice over.
The famous curve
Plotted against spot S_0, the call price
C = S_0\Phi(d_1) - Ke^{-rT}\Phi(d_2) is a smooth curve riding
above the kinked payoff (S_0 - K)^+ — the gap is the
time value, the price of optionality still alive. Raising
\sigma or T lifts the curve: more chance
of a big finish and, thanks to the kink, no matching downside — the convexity that powers the
whole theory. Time value is fattest at the money, where the uncertainty about
exercise is greatest; deep in or out of the money the curve hugs its asymptotes
(S_0 - Ke^{-rT} on the right, zero on the left — Checks 3 and 4
made visible).
Now run the sanity checks live: drag the volatility toward its minimum, or the maturity toward
zero, and watch the smooth curve collapse onto the kink — the option decaying into its payoff.
The slope of the curve at any point is the delta \Phi(d_1): shallow
near zero on the left, rising through \approx 0.6 at the money,
flattening toward 1 on the right.
Look at the five inputs. Spot S_0: on the screen. Strike
K and expiry T: written in the contract.
Rate r: quoted in the money market. Every input is observable —
except one. The volatility \sigma is a statement about the
future wobbliness of the stock, and no screen anywhere shows it.
So the market performs a beautiful inversion. Option prices are observable — people
trade them all day. Fix the four known inputs, take the market price
C^{\text{mkt}}, and solve the Black–Scholes formula
backwards for the \sigma that reproduces it (the
price is strictly increasing in \sigma, so the root is unique). That
number is the implied volatility — and it, not the dollar price, is how
professionals actually quote options: "I'll sell that call at 20.3 vol." The formula has become
a translation device, a dictionary between prices and volatilities, used billions of
times a day by people who know perfectly well its assumptions are false.
And here is the punchline: if the model were literally true, every option on the same stock
would imply the same \sigma. They don't. Plot implied vol
against strike and you get a curve — the volatility smile (or skew): low
strikes trade at markedly higher implied vols than the model's flat line predicts. The smile
was nearly flat before the crash of October 1987 and has been bent ever since — the market
pricing in fat tails and crashes that the lognormal world forbids, and saying so in the
model's own language. The Black–Scholes formula is used everywhere precisely because it is
wrong in such a well-understood way.
See it explained