Tutorials › Exam FM - Financial Mathematics › End-to-End Curve Bootstrap and Valuation Workshop

Exam FM · Bootstrapping the Curve · Tutorial 754 of 998

End-to-End Curve Bootstrap and Valuation Workshop

Learn to build a discount-factor curve step by step, test it against the observed bond prices, and apply it to new cash flows.

Advanced 12 min read

What You'll Learn

  • Set up the valuation-date, payment-date, and cash-flow assumptions needed for a sequential bootstrap.
  • Solve discount factors in maturity order from annual coupon-bond prices.
  • Convert discount factors to effective annual spot rates.
  • Reprice every input bond as a check on the completed curve.
  • Value a separate cash-flow stream by discounting each payment at its own date-specific factor.
  • Identify why rounding factors too early or using one yield for all dates can give an incorrect result.

From Bond Quotes to a Usable Discount Curve

A coupon-bond price combines the values of payments made on several dates. A discount curve separates those contributions: it assigns a present-value factor to each payment date, so a dollar due at one date need not have the same value as a dollar due at another. Once the factors are known, they can price both the bonds used to construct the curve and other dated cash flows.

This workshop carries out the full sequence: establish a consistent cash-flow model, solve the factors from shortest maturity to longest, convert them to spot rates, reprice the observed bonds, and value a separate stream. The calculations are aligned with the SOA Exam FM (Financial Mathematics) syllabus.

Definition: Let \(D_t\) be the time-0 price of one unit of currency payable at time \(t\). Set \(D_0=1\). If a security has known cash flows \(C_t\) at dates \(t\), its value under this curve is \(\sum_t C_tD_t\). The effective annual spot rate \(i_t\) for maturity \(t\) is the annual effective rate that discounts one unit payable at \(t\) to \(D_t\), so \(D_t=(1+i_t)^{-t}\), or \(i_t=D_t^{-1/t}-1\).

The workshop assumes a valuation immediately after a coupon date, with no accrued interest to add. All bonds are hypothetical, default-free, denominated in the same currency, and have known annual coupon payments and redemption of 100 at maturity. Quoted prices are full prices at the valuation date. Payments fall on integer annual dates, and the curve is built from those dates. These assumptions make the bond-price equations direct sums of cash flows times discount factors. If payment dates, accrued interest, or cash-flow uncertainty differ, the model must be adjusted before applying the equations.

The Sequential Bootstrap

A bond maturing at time \(n\), with annual coupon \(c\) and redemption amount \(R\), pays \(c\) at dates 1 through \(n-1\), then \(c+R\) at date \(n\). Its price \(P_n\) satisfies

$$ P_n=cD_1+cD_2+\cdots+cD_{n-1}+(c+R)D_n. $$

If \(D_1,\ldots,D_{n-1}\) have already been found, isolate the only unknown factor:

$$ D_n=\frac{P_n-c\sum_{t=1}^{n-1}D_t}{c+R}. $$

The reason this works is the definition of a discount factor: each contractual payment \(C_t\) contributes \(C_tD_t\) to value at time 0. Adding the present values of all payments gives the bond price. At the first maturity, the earlier-cash-flow sum is empty; each successive bond adds one new maturity factor. This sequential method requires enough independent price information to identify each new factor, and earlier factors must be consistent with the cash flows already priced.

1
Order the payment dates.
List the distinct dates and begin with the earliest one for which a bond price identifies its factor.
2
Remove known contributions.
For the next bond, subtract the present values of all coupons on dates with known factors.
3
Solve the new factor.
Divide the remaining price by the total cash flow due on the new maturity date.
4
Check the curve.
Reprice the input bonds using the completed factors, then use those factors for new dated payments.

Worked Bootstrap and Spot-Rate Conversion

Worked Example: Bootstrapping Three Annual Maturities

Method and trap avoided. Bootstrap in maturity order, subtracting only coupons whose factors are already known. The main trap is to discount a later bond's coupon with its own maturity factor rather than with the factor for the coupon's payment date.

A hypothetical set of annual coupon bonds has redemption amount \(R=100\). The one-year bond pays a 4% annual coupon and costs 99.84. The two-year bond pays a 5% annual coupon and costs 100.35. The three-year bond pays a 6% annual coupon and costs 100.26. Find \(D_1,D_2,D_3\).

One-year bond. Its only payment is \(104\) at time 1. Therefore,

$$ 99.84=104D_1,\qquad D_1=\frac{99.84}{104}=0.96. $$

Two-year bond. It pays 5 at time 1 and 105 at time 2. The time-1 coupon is valued using \(D_1=0.96\):

$$ 100.35=5(0.96)+105D_2=4.80+105D_2, $$

so

$$ D_2=\frac{100.35-4.80}{105}=\frac{95.55}{105}=0.91. $$

Three-year bond. It pays 6 at times 1 and 2, followed by 106 at time 3. Thus

$$ 100.26=6(0.96)+6(0.91)+106D_3 =5.76+5.46+106D_3. $$

The known coupons total \(11.22\), leaving \(100.26-11.22=89.04\) for the time-3 payment. Hence

$$ D_3=\frac{89.04}{106}=0.84. $$

Check. Substituting the factors gives \(5.76+5.46+89.04=100.26\), the quoted three-year price. The three factors are \(D_1=0.96,\ D_2=0.91,\ D_3=0.84\). No intermediate factor has been rounded.

Complete the Curve and Test It Against the Inputs

A factor is not itself a spot rate. Under annual effective compounding, each maturity has its own spot rate, derived from the factor for that maturity. Also, a bootstrap should not be treated as complete merely because the last equation was solved: reprice the observed instruments to confirm that the same factors reproduce all their input prices.

Worked Example: Adding a Four-Year Bond and Repricing

Method and trap avoided. Use the already bootstrapped factors to remove the known coupons from the next bond's price; then convert each factor using its own maturity. Do not apply the four-year spot rate to every cash flow of a four-year coupon bond.

Using the factors from the previous calculation, a hypothetical four-year bond has annual coupon 7, redemption 100, and price 102.43. Its first three coupons have present values \(7(0.96)=6.72\), \(7(0.91)=6.37\), and \(7(0.84)=5.88\). The remaining price is

$$ 102.43-(6.72+6.37+5.88)=102.43-18.97=83.46. $$

The payment at time 4 is \(107\), so

$$ D_4=\frac{83.46}{107}=0.78. $$

Now calculate the annual effective spot rates. For time 1, \(i_1=0.96^{-1}-1=0.0416667\), or 4.1667%. For time 2, \(i_2=0.91^{-1/2}-1\approx0.0482848\), or 4.8285%. For time 3, \(i_3=0.84^{-1/3}-1\approx0.0598398\), or 5.9840%. For time 4, \(i_4=0.78^{-1/4}-1\approx0.0640850\), or 6.4085%. Rates are rounded only here, to four decimal places in percentage form.

Finally, reprice every input bond using the unrounded factors:

  • One year: \(104(0.96)=99.84\).
  • Two years: \(5(0.96)+105(0.91)=4.80+95.55=100.35\).
  • Three years: \(6(0.96)+6(0.91)+106(0.84)=5.76+5.46+89.04=100.26\).
  • Four years: \(7(0.96)+7(0.91)+7(0.84)+107(0.78)=6.72+6.37+5.88+83.46=102.43\).

Each reproduced price agrees with its input. This check confirms the arithmetic and the cash-flow date assignments. It does not, by itself, establish that market quotes are free of credit, liquidity, or other pricing effects; those effects were excluded by the model assumptions.

Valuing a Separate Dated Cash-Flow Stream

Once the curve is established, a new stream is valued payment by payment. Use \(D_t\) for the factor at the date each payment is actually due. A coupon or project payment at time 2 is not discounted with \(D_4\) simply because the stream also contains a payment at time 4. The curve valuation is the sum of dated present values; it is not necessary to assume that all dates share one yield.

Worked Example: Pricing a New Four-Date Stream

Method and trap avoided. Match each cash flow with its own date-specific factor and add the present values. The trap is to treat the entire stream as one payment at its final date or to use the four-year spot rate for every payment.

A hypothetical contract pays 18 at time 1, 24 at time 2, 32 at time 3, and 45 at time 4. Use the curve \(D_1=0.96,\ D_2=0.91,\ D_3=0.84,\ D_4=0.78\) to find its time-0 value.

The four present-value contributions are

$$ 18(0.96)=17.28,\qquad 24(0.91)=21.84,\qquad 32(0.84)=26.88,\qquad 45(0.78)=35.10. $$

Adding them gives

$$ V_0=17.28+21.84+26.88+35.10=101.10. $$

Check. Each cash flow was multiplied by the factor for its own payment date, and the contributions sum to 101.10. The contract's curve value is therefore 101.10 currency units at time 0.

Common Checks and Exam Traps

A reliable end-to-end calculation separates three tasks: solve the factors, translate factors into rates if rates are requested, and value any new stream. Keeping those tasks distinct helps prevent errors that can look plausible numerically.

  • Using the wrong date's factor. A coupon due at time 2 uses \(D_2\), even when it belongs to a bond maturing at time 4.
  • Subtracting the wrong known cash flows. Before solving for \(D_n\), subtract the coupons due at earlier dates using their respective factors. Do not subtract the maturity payment, which is part of the unknown-date cash flow.
  • Mixing price conventions. The equations above use prices at the valuation date with no accrued interest. A quoted clean price between coupon dates is not automatically the full present value of all remaining payments.
  • Confusing a discount factor with a rate. For example, \(D_3=0.84\) means one unit at time 3 is worth 0.84 today. It does not mean the three-year spot rate is 16% or \(1-0.84\). Under annual effective compounding, the spot rate is \(0.84^{-1/3}-1\).
  • Rounding too early. Carry factors at full precision through later solves and repricing. Round rates or final money only at the requested reporting step.
  • Skipping the price check. A factor may be positive and still be wrong. Substitute the full factor set into every input bond's cash-flow equation and compare the calculated prices with the quoted prices.

The complete workflow is useful whenever the task links market bond prices to a dated liability or other cash-flow stream. A successful bootstrap must use the correct cash-flow dates, solve each identifiable factor in sequence, and reproduce the input prices before the resulting curve is used for valuation.

Check Your Understanding

Work from the stated cash flows and assumptions. Keep factors unrounded until the final answer.

  1. A one-year bond pays 100 at time 1 and costs 95. A two-year annual coupon bond pays 4 at time 1 and 104 at time 2 and costs 96.20. Bootstrap \(D_1\) and \(D_2\). (Answer: \(D_1=0.95,\ D_2=0.89\).)
  2. A curve has \(D_1=0.97\). A two-year bond with annual coupon 6, redemption 100, and price 101.22 is quoted. Find \(D_2\) and its two-year effective annual spot rate, rounded to four decimal places in percentage form. (Answer: \(D_2=0.90;\ i_2\approx5.4093\%\).)
  3. A three-year bond with annual coupon 4 and redemption 100 costs 92.60. The known factors are \(D_1=0.94\) and \(D_2=0.89\). Bootstrap \(D_3\). (Answer: \(D_3=0.82\).)
  4. Using \(D_1=0.96,\ D_2=0.91,\ D_3=0.84,\ D_4=0.78\), value cash flows of 15 at time 1, 20 at time 2, and 30 at time 4. (Answer: \(56.00\).)
  5. A three-year bond pays annual coupons of 5 and redemption of 100. The curve has \(D_1=0.95,\ D_2=0.90,\ D_3=0.82\). Reprice the bond and state the price difference if its observed price is 95.50. (Answer: Curve price \(=95.35\); observed price exceeds it by \(0.15\).)
Clinical Biostats