Yield Curve Bootstrap Calculator
Calculator help
Hi! Ask me anything about using this calculator: what an input means, where to find a value, or why you got a result.
An AI assistant (Claude) that reads this page. It can make mistakes: check important numbers, and confirm design decisions with a licensed engineer.
Methodology, equations and examples
A zero rate for maturity T is the interest rate earned on money invested today and returned in a single payment at T, with nothing paid in between. Treasury bills are zero-coupon, so their prices give short zero rates directly. Longer Treasuries pay coupons, so their yields mix the rates for every coupon date. Bootstrapping separates them. The bonds are taken in order of maturity, and each one gives the zero rate at its own maturity once the earlier rates are known.
Zero rates and discount factors
With a continuously compounded zero rate R(t), the discount factor, the value today of 1 paid at time t, is
d(t) = e^(−R(t) t)
A bond is worth the sum of its cash flows times their discount factors. A bond with coupon rate c, paid m times a year, maturing at T and priced at P per 100 of face value satisfies
P = Σ (100c/m) e^(−R(tj) tj) + 100 e^(−R(T) T)
where the tj are its coupon dates T, T − 1/m, T − 2/m and so on, back to the first one after today.
The bootstrap
For a zero-coupon bond the equation has one term, so R(T) = ln(100 / P) / T.
For a coupon bond, every term except the last uses a rate already found, so the equation has one unknown, R(T). When a coupon date falls between two maturities already on the curve, its rate is read off the straight line between them. When it falls after the last maturity found but before T, its rate lies on the line from that maturity's rate to the unknown R(T). The calculator solves for the R(T) at which the bond's value equals its price, by bisection. The curve is then linear in R between maturities and flat before the first one.
This is the standard linear interpolation of zero rates. Other methods, such as cubic splines or a Nelson-Siegel fit, give a smoother curve and slightly different rates between maturities. At the input maturities every method that reprices the bonds gives the same rates.
Forward rates
The forward rate between T₁ and T₂ is the rate, agreed today, for borrowing from T₁ to T₂. With continuous compounding it follows from the two zero rates:
F = (R₂T₂ − R₁T₁) / (T₂ − T₁)
When the zero curve rises, each forward rate is above the zero rate at the end of its period.
Par yields
The par yield for maturity T is the coupon rate that makes a bond price at par, 100. With n = mT coupon periods,
c = m (100 − 100 d(T)) / (100 Σ d(j/m)), summed over j = 1 to n
In par mode the calculator takes par yields as its input and treats each one as a bond with that coupon priced at 100. Each maturity must then be a whole number of coupon periods. Enter a shorter bill as a zero-coupon bond with its price instead.
Rates with other compounding
A continuous rate R is the same as a rate Rm compounded m times a year when e^R = (1 + Rm/m)^m, so Rm = m (e^(R/m) − 1). The results show both.
Example
Five Treasury bonds with $100 principal are priced as follows. The first three are zero-coupon; the last two pay coupons every six months. This is the bootstrap example in Hull, Options, Futures, and Other Derivatives.
| Maturity, years | Annual coupon | Price |
|---|---|---|
| 0.25 | 0 | 97.5 |
| 0.50 | 0 | 94.9 |
| 1.00 | 0 | 90.0 |
| 1.50 | 8 % | 96.0 |
| 2.00 | 12 % | 101.6 |
The three bills give their zero rates directly:
R(0.25) = ln(100 / 97.5) / 0.25 = 10.127 %
R(0.5) = ln(100 / 94.9) / 0.5 = 10.469 %
R(1.0) = ln(100 / 90) / 1.0 = 10.536 %
The 1.5-year bond pays $4 at 0.5 and 1.0 years and $104 at 1.5 years. The first two are discounted at the rates already found:
4 e^(−0.10469 × 0.5) + 4 e^(−0.10536 × 1.0) + 104 e^(−R × 1.5) = 96
3.796 + 3.600 + 104 e^(−1.5R) = 96, so e^(−1.5R) = 0.85196 and R(1.5) = 10.681 %.
The 2-year bond pays $6 every six months and $106 at 2 years. Its first three cash flows are worth $16.206 on the curve so far, so 106 e^(−2R) = 85.394 and R(2.0) = 10.808 %. These are Hull's rates.
The forward rate from 1.0 to 1.5 years is (0.10681 × 1.5 − 0.10536 × 1.0) / 0.5 = 10.971 %. It is above both zero rates because the curve is rising. The 2-year par yield, with semiannual coupons, is 11.087 %.