Yield Curve Bootstrap Calculator

Build the curve from
Bonds (one per maturity, in any order; a block copied from a spreadsheet can be pasted into any box)

How to use it

  1. Choose whether you have bond prices or par yields, and how many coupons the bonds pay a year. The same number sets the compounding of the rates shown.
  2. For bond prices, enter each bond’s maturity in years, its annual coupon rate (0 for a zero-coupon bill) and its full price per 100 of face value.
  3. For par yields, enter each maturity and its par yield. Each maturity must be a whole number of coupon periods.
  4. Use “Add a bond” for more maturities, up to 30.
  5. The zero rates, discount factors, forward rates and par yields appear and update as you type, with the working for each rate and a chart of the curves.

To see it filled in, choose “Show an example”. Bonds are valued on a coupon date, so each price is the full price with no accrued interest. Between maturities the zero rate is a straight line. For study and comparison; not financial advice.

Result

Enter the first bond’s maturity.

Rates in percent a year. Forward rates, and zero rates in the continuous column, are continuously compounded; par yields are compounded once a coupon period. e^(−R t) is the discount factor at time t.

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 %.

Top