Module 2
The yield curve
There isn't one interest rate — there's a different rate for every maturity. Lending for 3 months pays one rate, for 10 years another. Plot those rates against time and you get the yield curve. Normally it slopes up (longer = more rate); when it inverts(short rates above long), it's historically been a recession warning.
The rates that get quoted are par rates — the coupon that would price a bond exactly at 100 for each maturity. But to price any cashflow you need the pure rate for a single payment on a single date: the zero rate. Getting from par rates to zero rates is called bootstrapping — you solve them one maturity at a time, stripping out the earlier coupons as you go. Each zero rate also gives a discount factor: the value today of $1 paid on that date.
When the curve slopes up, zero rates sit abovepar rates (the later cashflows have to “make up” for the cheaper early ones). Reshape the curve below and watch it happen.
🎛 Start simple: the value of $1
Before the whole curve, get one idea: a dollar in the future is worth less today. Slide the maturity and watch it shrink — and see why the par rate can't do the job alone.
$1 arriving in 10 years is worth today…
$0.6139
That's the zero-rate discount factor — the honest present value of a single future dollar.
Discount at the PAR rate
$0.6163
par rate 4.90% · the naive way
Discount at the ZERO rate
$0.6139
zero rate 4.94% · the correct way
The market quotes a 4.90% par rate for 10years, but that's the coupon on a whole bond — an average. To value one dollar arriving in exactly 10 years you need the 10y zero rate (4.94%). Using the par rate directly would value that dollar at $0.6163 — off by about 0.23¢. That gap is exactly why we bootstrap zero rates.
Educational tool — not investment advice.
🎛 Now the whole curve
Every maturity has its own rate. Reshape the quoted par rates and watch the zero curve and discount factors respond.
Par rates (drag to reshape the curve)
Par vs zero (bootstrapped) rates
Discount factors (value today of $1 later)
Zero rates (amber) are “stripped” from the quoted par rates (grey) by bootstrapping — each maturity's rate is backed out once the earlier coupons are accounted for. Discount factors fall toward zero the further out you go: a dollar in 30 years is worth far less than a dollar today. Educational tool — not investment advice.
Why don't the two lines match?
Because a bond isn't one loan — it's a bundle of many small ones. When you buy a 10-year bond, your money comes back on lots of different dates: a little every six months, then the big chunk at year 10. Money you won't see for 10 years should earn more than money coming back next year, so each repayment date really deserves its own interest rate. Those date-by-date rates are the zero curve.
But the market likes to quote one number per bond — a single coupon that makes the whole thing worth 100. That one blended number is the par rate. It's basically an average of all those individual date-by-date rates over the life of the bond.
And an average almost never equals the pieces it's made of. Think of a shopping cart: the par rate is the single “average price per item,” while the zero rates are the actual prices of each item — they're only the same if everything costs the same. So when later dates pay more (a normal, upward-sloping curve), the average gets pulled below the highest pieces, and the zero curve sits above the par curve. Make the curve flat in the builder above and the two lines snap together; steepen it and they pull apart.
How the par and zero curves are actually calculated
The par rateat a maturity is the coupon a bond would need so its price equals exactly 100 (par). It's what the market quotes. The zero rate is the pure rate for a single payment on a single future date — and from it you get the discount factor (DF), the value today of $1 paid then.
Bootstrapping strips the zero rates out of the par rates one maturity at a time. Because a par bond is worth exactly 100, its price equation is:
100 = (coupon per period) × (DF₁ + DF₂ + … + DFₙ) + 100 × DFₙ
Everything except the newest discount factor DFₙ is already known from earlier steps, so you just solve for it:
DFₙ = (100 − coupon × Σ earlier DFs) / (100 + coupon)
Worked example (the default curve, semiannual coupons)
- 6-month, par 4.30%. One payment of 100 + ½·4.30 = 102.15 at 0.5y:
DF₀.₅ = 100 / 102.15 = 0.97895 → zero rate = 4.30%. With a single payment, the zero rate equals the par rate — so the two discount factors are identical here. This first point is the anchor the whole bootstrap builds on. - 1-year, par 4.35%. Two payments; reuse DF₀.₅:
100 = 2.175·(0.97895) + 102.175·DF₁ → DF₁ = 0.95787 → zero rate ≈ 4.35%. Now there are two cashflows, so par and zero can start to part ways.
Each step reuses the discount factors you already solved — that's the “bootstrap.” The zero rate is simply the single rate implied by each discount factor. Those are the exact numbers in the calculator above.
🎬 Watch it bootstrap, step by step
Hit play and watch each discount factor get solved in turn — every step reuses the ones already found (in blue) to back out the next (in amber).
Step 1 of 6 — solve the 0.5y point (par 4.3%)
100 = 2.150 × (DF) + 100 × DF
DF = (100 − 2.150 × 0.0000) / (100 + 2.150) = 0.9790
→ zero rate = 4.30% (equals the par rate — one payment, nothing to average)
Each step reuses the blue discount factors already solved to back out the next amber one — that's the “bootstrap.” Numbers match the calculator above. Educational tool — not investment advice.
Things to try
- • Make the curve steeper (raise the 10y and 30y). See the zero curve pull even further above par.
- • Invert it — set the short rates above the long ones. That shape has preceded most recessions.
- • Watch the discount factors: even small rate changes compound into big differences 20–30 years out.