How do you bootstrap spot rates from a par yield curve? I keep getting the wrong numbers.
I understand the concept that the par curve gives yields on coupon-paying bonds trading at par, and we need to extract zero-coupon (spot) rates from them. But every time I try to do it by hand, my Year 3 spot rate is off. Can someone show the exact bootstrapping process with a 3-year example? Also, how do you then get forward rates from the spot curve?
Bootstrapping is mechanical once you see the pattern. Let me walk through it carefully.
The Setup
Suppose the par yield curve for annual-pay government bonds is:
| Maturity | Par Yield |
|---|---|
| 1 year | 4.00% |
| 2 year | 4.40% |
| 3 year | 4.70% |
Each par yield means a bond with that coupon rate trades at exactly 100 (par). We need to find the zero-coupon spot rates z_1, z_2, z_3.
Step 1: 1-Year Spot Rate
The 1-year par bond has a single cash flow: 104 at year-end.
100 = 104 / (1 + z_1) z_1 = 4.00%
The 1-year spot rate equals the 1-year par yield. Always.
Step 2: 2-Year Spot Rate
The 2-year par bond pays a 4.40 coupon at Year 1 and 104.40 at Year 2:
100 = 4.40 / (1.04) + 104.40 / (1 + z_2)^2 100 = 4.2308 + 104.40 / (1 + z_2)^2 95.7692 = 104.40 / (1 + z_2)^2 (1 + z_2)^2 = 104.40 / 95.7692 = 1.09013 z_2 = (1.09013)^{0.5} - 1 = 4.4049%
Notice z_2 (4.4049%) is slightly above the par yield (4.40%) — this is because the upward-sloping curve means earlier cash flows are discounted at a lower rate.
Step 3: 3-Year Spot Rate
The 3-year par bond pays 4.70 at Year 1, 4.70 at Year 2, and 104.70 at Year 3:
100 = 4.70 / (1.04) + 4.70 / (1.044049)^2 + 104.70 / (1 + z_3)^3 100 = 4.5192 + 4.3113 + 104.70 / (1 + z_3)^3 91.1695 = 104.70 / (1 + z_3)^3 (1 + z_3)^3 = 104.70 / 91.1695 = 1.14839 z_3 = (1.14839)^{1/3} - 1 = 4.7199%
Summary of Bootstrapped Spot Rates
| Maturity | Par Yield | Spot Rate |
|---|---|---|
| 1 year | 4.00% | 4.0000% |
| 2 year | 4.40% | 4.4049% |
| 3 year | 4.70% | 4.7199% |
Deriving Forward Rates
The 1-year forward rate one year from now, f(1,1):
(1 + z_2)^2 = (1 + z_1)(1 + f(1,1)) (1.044049)^2 = (1.04)(1 + f(1,1)) 1.09013 = 1.04 x (1 + f(1,1)) f(1,1) = 1.09013 / 1.04 - 1 = 4.8125%
The 1-year forward rate two years from now, f(2,1):
(1 + z_3)^3 = (1 + z_2)^2 x (1 + f(2,1)) 1.14839 = 1.09013 x (1 + f(2,1)) f(2,1) = 1.14839 / 1.09013 - 1 = 5.3462%
Common Mistakes
- Rounding intermediate spot rates too early — carry at least 4 decimal places through the chain.
- Forgetting that each step requires all previously computed spot rates, not just the par yields.
For more fixed income term structure problems and interactive calculators, visit AcadiFi's CFA Level II Fixed Income section.
Master Level II with our CFA Course
107 lessons · 200+ hours· Expert instruction
Related Questions
Why does an early retirement provision lower risk tolerance but high turnover does not — both reduce liabilities, right?
Why does it matter if the pension fund is invested in stocks similar to the sponsor's business?
What is the rule about active vs retired lives and pension plan duration?
Why does the textbook recommend 100% equities for a young employee? That sounds extremely aggressive.
I run my own startup. My income is volatile and tied to my industry. Should I hold ZERO equities in my financial accounts?
Join the Discussion
Ask questions and get expert answers.