Bond Options

Governments issue callable bonds so they can refinance if rates fall; corporations embed a put in a bond so investors will accept a lower coupon; and the CBOT lists plain, exchange- traded options on Treasury bond futures that a fixed-income desk uses to hedge — or simply bet on — the direction of long rates. All three are the same instrument: a bond option, the right (not the obligation) to buy or sell a bond at a fixed price on or before a fixed date.

You already have two of the three ingredients this lesson needs. Interest-rate futures gave you a market-quoted forward price for a bond, and multi-step binomial trees gave you a numerical fallback for anything with no closed form. This lesson supplies the third: a Black–Scholes-style closed form, adapted so it actually fits how bond prices behave.

Why not just reuse Black–Scholes?

A stock price can wander anywhere over any horizon; nothing pulls it back. A bond price cannot — it is anchored to converge to par (or the strike, at the option's expiry, to whatever the market's current view of that par value is) as maturity approaches. A 30-year bond's price swings a great deal over a year; the same bond with three months left barely moves — its yield can wander, but there's too little time left for that yield move to translate into much of a price move. This is called pull to par, and it means a bond's price volatility is not constant the way Black–Scholes wants — it shrinks as the bond ages.

The fix, due to Fischer Black himself, is to stop modelling the bond's spot price and instead model its forward price for delivery on the option's expiry date. A forward price for one fixed future date doesn't have a "pull to par" problem — over the life of the option, the forward price behaves reasonably close to lognormal with an (approximately) constant volatility, even though the underlying bond's spot-price volatility is shrinking the whole time. That single substitution — forward price in, spot price out — is Black's model, and it is the standard practitioner tool for every interest-rate option in this module.

Let F_0 be the bond's forward price for delivery at the option's expiry T, K the strike, P(0,T) today's discount factor to T, and \sigma the (assumed constant) volatility of the forward bond price. Then:

Compare this line by line with the ordinary Black–Scholes formula: every S_0 e^{rT} has become F_0, and the lone discount factor P(0,T) now sits outside the brackets rather than being smuggled into a drift term. There is no r inside d_1,d_2 at all — the forward price has already absorbed it.

Worked example: a one-year at-the-money call

A desk wants to price a one-year European call, struck at par, on a Treasury bond futures contract with $1,000 face value.

F_0 = \$1{,}000, \quad K = \$1{,}000, \quad \sigma = 5\%, \quad T = 1\text{ year}, \quad r = 5\%\text{ (cont. comp.)}.

Step 1 — the volatility scale. \sigma\sqrt{T} = 0.05\sqrt{1} = 0.05.

Step 2 — d_1 and d_2. At the money, \ln(F_0/K) = \ln 1 = 0, so

d_1 = \frac{0 + \tfrac12(0.05)^2(1)}{0.05} = \frac{0.00125}{0.05} = 0.025, \qquad d_2 = 0.025 - 0.05 = -0.025.

Step 3 — the normals. Near zero, \Phi(x)\approx 0.5 + 0.3989\,x (the standard normal density at the origin), so \Phi(0.025)\approx 0.5100 and \Phi(-0.025)\approx 0.4900.

Step 4 — discount factor. P(0,T) = e^{-0.05\times 1} = 0.9512.

Step 5 — assemble.

c = 0.9512\big[1000\times 0.5100 - 1000\times 0.4900\big] = 0.9512 \times 20.00 \approx \$19.02.

A one-year at-the-money call on this bond costs about $19.02 per $1,000 of face value — about 1.9% of par, for a forward-price volatility of just 5% a year (bonds are far less volatile than stocks, and the option is priced accordingly cheap).

The shape of the price

Exactly as with Black–Scholes, the call price sits smoothly above the kinked payoff (F_0 - K)^+, discounted back — the gap is time value, and it grows with both volatility and time to expiry.

Black's model assumes you can already hand it F_0 — but that number itself has to be built, using exactly the cost-of-carry logic from cost-of-carry and forward pricing. Take the bond's current cash (dirty) price B_0, subtract the present value I of any coupons paid before the option expires (the option holder never receives those — the current owner keeps them), and grow the rest forward at the risk-free rate to the expiry date:

F_0 = (B_0 - I)\,e^{rT}.

Get this step wrong — forget to strip out the coupons, say — and every downstream d_1, d_2, and price is wrong too, even though Black's formula itself was applied correctly.

Two classic slips when pricing bond options in practice: