Why a Three-Maturity Bootstrap Is Sequential
A coupon bond’s price reflects payments made on several dates. If discount factors for those dates are unknown, one bond price usually cannot identify every factor at once. Bootstrapping solves the factors in maturity order: first the one-year factor, then the two-year factor using the first result, and finally the three-year factor using both earlier results.
The method relies on having bonds whose cash flows occur on dates that line up with the maturities being solved. This tutorial uses annual coupon dates at times 1, 2, and 3, measured in years from the common valuation date. It focuses on the mechanics of a three-maturity bootstrap, aligned with the SOA Exam FM (Financial Mathematics) syllabus.
Assume each bond has fixed, default-free cash flows, no embedded options, and a price observed at the same valuation date. Let \(F_j\) be the face amount of a bond maturing at year \(j\), and let \(C_j\) be its annual coupon payment. The final payment is \(F_j+C_j\), because the last coupon and the face amount are paid together. For a bond paying coupons at each annual date through maturity \(j\), its price \(P_j\) is
For maturity 1, there are no earlier coupons. For maturity 2, the first coupon is discounted using \(D_1\), which must already be known. For maturity 3, both earlier coupons use factors already solved. In this way, each new equation has one new unknown.
Why the Terminal-Factor Formula Works
The bond-price equation follows from additivity of present value: each cash flow is discounted to time 0 on its own payment date, and the bond’s price is the sum of those values. Once all earlier-date contributions have been calculated, subtracting them from the observed price leaves only the present value of the maturity payment. Dividing by that payment isolates the new factor:
This expression applies when the bond pays the same coupon amount \(C_j\) on each annual date from year 1 through year \(j\), with face amount \(F_j\) paid at maturity. If coupon dates do not match the dates represented by the known factors, or if the cash flows are not the stated fixed amounts, the equation must be adjusted to represent the actual cash flows and dates. The formula does not justify using one discount factor for payments on different dates.
Use the one-year bond price and its full maturity payment to find \(D_1\).
Discount the year-one coupon with \(D_1\), subtract its value from the two-year bond price, and divide by the final payment.
Subtract the year-one and year-two coupon contributions from the three-year price, solve for \(D_3\), then reprice all three bonds.
Worked Three-Maturity Bootstrap
The first example carries out the full sequence. All three bonds have face amount 100, annual coupons, and prices stated per bond at the same valuation date. The factors are solved using the cash flows on their actual payment dates.
Worked Example: Solving Three Annual Discount Factors
A one-year bond has a 5% annual coupon and price 99.75. A two-year bond has a 6% annual coupon and price 101.10. A three-year bond has a 4% annual coupon and price 94.76. Each has face amount 100 and pays coupons annually. Find \(D_1,D_2,D_3\), then check the prices. The method is sequential bootstrapping; it avoids treating the whole bond price as if it were the maturity payment.
1. One-year bond. Its only cash flow is the year-one coupon plus face amount: \(5+100=105\). Therefore,
The year-one payment contributes \(105(0.95)=99.75\), matching the observed price.
2. Two-year bond. Its year-one coupon is 6, and its year-two payment is \(100+6=106\). The present value of the first coupon is \(6(0.95)=5.70\). Subtract that contribution from the price:
The two cash-flow contributions are \(6(0.95)=5.70\) at year 1 and \(106(0.90)=95.40\) at year 2. Their sum is \(5.70+95.40=101.10\).
3. Three-year bond. Its first two coupons are each 4, and its final payment is \(100+4=104\). The year-one coupon contributes \(4(0.95)=3.80\), and the year-two coupon contributes \(4(0.90)=3.60\). The amount left to account for is
This residual is the present value of the year-three payment. Thus,
Check. Repricing the three-year bond gives \(4(0.95)+4(0.90)+104(0.84)=3.80+3.60+87.36=94.76\). The earlier checks also gave 99.75 and 101.10. All three input prices are reproduced, so the solved factors are consistent with the cash-flow equations.
Keep Cash-Flow Amounts and Units Consistent
The sequence is unchanged when the face amount is not 100. In that case, compute the coupon in dollars from the coupon rate and face amount, and include the full face amount in the final payment. Do not switch between a price quoted per 100 of face and a total dollar price halfway through a calculation.
Worked Example: Bootstrapping with a Face Amount of 1,000
Three annual coupon bonds each have face amount 1,000. Their respective maturities, annual coupon rates, and prices are: one year, 4%, and 998.40; two years, 5%, and 1,003.50; three years, 6%, and 1,013.20. Find the three factors and verify the three-year price. The method is again to subtract the present values of earlier coupons before solving for the terminal factor.
Year 1. The coupon is \(0.04(1{,}000)=40\), so the maturity payment is \(1{,}040\). Hence
Year 2. The annual coupon is \(0.05(1{,}000)=50\), and the final payment is \(1{,}050\). The first coupon contributes \(50(0.96)=48.00\). The remaining price is \(1{,}003.50-48.00=955.50\), so
Year 3. The coupon is \(0.06(1{,}000)=60\), and the final payment is \(1{,}060\). The earlier coupons contribute \(60(0.96)=57.60\) and \(60(0.91)=54.60\). Therefore the residual is \(1{,}013.20-57.60-54.60=901.00\), giving
Check. The three-year price recomputes as \(57.60+54.60+1{,}060(0.85)=57.60+54.60+901.00=1{,}013.20\). The one- and two-year checks are \(1{,}040(0.96)=998.40\) and \(48.00+1{,}050(0.91)=1{,}003.50\). No rounding was needed.
Different Coupons and Face Amounts
A three-maturity bootstrap does not require all bonds to have the same coupon rate or face amount. What matters is that the cash-flow amount for each bond is correctly identified and that its earlier payment dates have already-solved discount factors. The next example uses different face amounts to make that point explicit.
Worked Example: Different Face Amounts Across the Three Bonds
A one-year bond has face amount 500, annual coupon rate 3%, and price 504.70. A two-year bond has face amount 800, annual coupon rate 7%, and price 850.96. A three-year bond has face amount 1,200, annual coupon rate 5%, and price 1,223.40. Coupons are annual. Find the discount factors and reprice the final bond. The method is to calculate each coupon amount first, rather than applying a coupon rate directly to the price.
Year 1. The coupon is \(0.03(500)=15\), making the final payment \(515\). Thus \(D_1=504.70/515=0.98\), since \(515(0.98)=504.70\).
Year 2. The coupon is \(0.07(800)=56\), and the final payment is \(856\). The earlier coupon contributes \(56(0.98)=54.88\). Subtracting gives \(850.96-54.88=796.08\), and therefore
Year 3. The coupon is \(0.05(1{,}200)=60\), and the final payment is \(1{,}260\). The earlier coupon contributions are \(60(0.98)=58.80\) and \(60(0.93)=55.80\). The remaining present value is \(1{,}223.40-58.80-55.80=1{,}108.80\). Thus,
Check. The three-year cash flows have present values 58.80, 55.80, and \(1{,}260(0.88)=1{,}108.80\). Their sum is \(58.80+55.80+1{,}108.80=1{,}223.40\), exactly the stated price.
Common Mistake: Ignoring an Earlier Coupon
A frequent error in solving for \(D_2\) is to divide the two-year bond’s entire price by its year-two payment. That calculation incorrectly treats the year-one coupon as if it were paid at year 2. In the first worked example, the incorrect calculation would be
The two-year bond also pays 6 at year 1, whose present value is \(6D_1=6(0.95)=5.70\). The correct residual for the year-two payment is \(101.10-5.70=95.40\), giving \(D_2=95.40/106=0.90\). The wrong calculation overstates the factor because it assigns the earlier coupon’s value to the later payment.
A reliable exam check is to write each bond’s dated cash flows before substituting any factors. Then verify the final answer by adding the discounted contributions back to the price. A check is particularly useful when coupons are small relative to face value: omitting one may not look conspicuous, but it changes the solved factor.
Check Your Understanding
For each problem, use the discount factors already provided or solved at earlier dates. Treat all prices as total prices at a common valuation date, and assume annual fixed coupons.
- A one-year bond has face amount 1,000, a 4% annual coupon, and price 1,014. Find \(D_1\) and check it by multiplying by the maturity payment. (Answer: \(D_1=0.975\).)
- A two-year bond has face amount 500, a 6% annual coupon, and price 505.20. If \(D_1=0.94\), solve for \(D_2\). (Answer: \(D_2=0.90\).)
- Three bonds each have face amount 1,000. The one-year bond has a 5% coupon and price 1,018.50. The two-year bond has a 4% coupon and price 995.60. The three-year bond has a 6% coupon and price 1,025.00. Find \(D_1,D_2,D_3\) in order. (Answer: \(D_1=0.97,\ D_2=0.92,\ D_3=0.86\).)
- A one-year bond has face amount 500, a 3% coupon, and price 504.70. A two-year bond has face amount 800, a 7% coupon, and price 850.96. A three-year bond has face amount 1,200, a 5% coupon, and price 1,223.40. Find the three factors, showing the earlier-coupon subtraction at each step. (Answer: \(D_1=0.98,\ D_2=0.93,\ D_3=0.88\).)
- A three-year bond has face amount 2,000, annual coupon rate 2.5%, and price 1,773.50. If \(D_1=0.95\) and \(D_2=0.90\), solve for \(D_3\) and verify the price from its three dated payments. (Answer: \(D_3=0.82\); the present values are 47.50, 45.00, and 1,681.00, summing to 1,773.50.)