Quant Memo
Advanced

Bootstrapping A Curve From Market Instruments

You can't observe the discount rate for every future date directly, so you infer them one at a time from instruments you can see — deposits, futures, and swaps — each new rate solved using only the rates already found.

Prerequisites: Discount Factors and Curve Interpolation, Forward Rates and Implied Forwards

You want to know the discount factor for cash arriving in 7 years, but nobody trades a bond that matures in exactly 7 years with no other cash flows attached. What you can see are a handful of liquid instruments — a 3-month deposit rate, a strip of futures, a set of par swap rates at 2, 5, 10 years — each of which mixes together several unknown discount factors at once. Bootstrapping is the trick of climbing a staircase where you can only see the landings: solve for the nearest unknown rate using only rates you've already pinned down, then use that answer to unlock the next one, one step at a time.

The recursive step

Each instrument gives you one equation. A par swap paying a fixed rate cc against floating, worth zero at inception, satisfies

1=ci=1nτiD(ti)+D(tn),1 = c \sum_{i=1}^{n} \tau_i \, D(t_i) + D(t_n),

where D(ti)D(t_i) is the discount factor for time tit_i (today's value of $1 received then) and τi\tau_i is the year fraction of period ii. In plain English: the fixed leg's coupons, each discounted back and summed, plus the final $1 of principal discounted back, must equal the $1 the floating leg is worth today. Every D(ti)D(t_i) for i<ni < n was already found from shorter instruments in earlier steps, so this equation has exactly one unknown, D(tn)D(t_n), and you solve it directly.

Worked example 1 — two steps by hand

Suppose a 1-year deposit yields 4% simple annual, so D(1)=1/(1.04)=0.9615D(1) = 1/(1.04) = 0.9615. Now a 2-year par swap, paying annually, quotes a fixed rate of 4.5%. Using the formula with n=2n=2, τ1=τ2=1\tau_1=\tau_2=1:

1=0.045×[D(1)+D(2)]+D(2).1 = 0.045 \times [D(1) + D(2)] + D(2).

Plug in D(1)=0.9615D(1) = 0.9615: 1=0.045×0.9615+0.045×D(2)+D(2)=0.0433+1.045D(2)1 = 0.045 \times 0.9615 + 0.045 \times D(2) + D(2) = 0.0433 + 1.045 \, D(2). Solve: D(2)=(10.0433)/1.045=0.9155D(2) = (1 - 0.0433)/1.045 = 0.9155. That converts to a 2-year zero rate of (1/0.9155)1/21=4.55%(1/0.9155)^{1/2} - 1 = 4.55\% — close to but not exactly the swap rate, because the swap rate is an average over two coupons while the zero rate is a single point.

Worked example 2 — a rate that would break it

If instead the 2-year swap quoted 4.5% but someone mis-keyed the 1-year deposit as 40% (a typo for 4.0%), the same algebra gives 1=0.045×(1/1.40)+1.045D(2)1 = 0.045 \times (1/1.40) + 1.045 D(2), so D(2)=(10.0321)/1.045=0.9262D(2) = (1 - 0.0321)/1.045 = 0.9262 — a discount factor that looks plausible in isolation but is now inconsistent with every curve point downstream, since every later step inherits it. Bootstrapping has no built-in error check; a bad input at step one silently corrupts every step after it.

Yield curve
0%2%4%3m1y3y7y20y
2y 2.95%10y 4.00%10y−2y 1.04%upward sloping

Drag the curve above and notice how the near end anchors everything to its right — that mirrors bootstrapping's one-way dependency: later discount factors depend on earlier ones, never the reverse.

maturity 3m deposit 1y 2y swap 5y swap
Each point is solved only from points already found to its left — a single bad quote propagates forward through every later step.

What this means in practice

A trading desk's curve isn't downloaded fully formed — it's rebuilt every morning from that day's deposit, futures, and swap quotes, and the choice of interpolation between the solved points (linear on rates, log-linear on discount factors, cubic splines) changes the shape of the forward rates implied between them, even when it barely changes the discount factors themselves. Two banks bootstrapping the same quotes with different interpolation methods can disagree meaningfully on forward rates used to price other products.

Bootstrapping is not unique. The same set of market quotes, run through different interpolation schemes, produces different curves — and because forward rates are a derivative of the discount curve, small interpolation choices that barely move discount factors can produce visibly wavy or negative forward rates. Always ask which interpolation method a curve was built with before trusting its forward rates.

Bootstrapping solves for one new discount factor at a time, using only discount factors already pinned down by shorter instruments — a one-directional chain where every error compounds forward and never self-corrects.

Related concepts

Practice in interviews

Further reading

  • Hull, Options, Futures, and Other Derivatives (Ch. 4)
ShareTwitterLinkedIn