Tutorials › Exam FM - Financial Mathematics › Bootstrapping with Semiannual Coupon Bonds

Exam FM · Bootstrapping the Curve · Tutorial 733 of 998

Bootstrapping with Semiannual Coupon Bonds

Translate semiannual coupon-bond quotes into dated cash flows and solve for discount factors one maturity at a time.

Advanced 10 min read

What You'll Learn

  • Convert an annual quoted coupon rate into the dollar payment made every six months
  • Map each coupon and redemption payment to its correct time and discount factor
  • Isolate an unknown terminal discount factor from a bond-price equation
  • Bootstrap several semiannual maturities in sequence
  • Check a result by repricing the bond and avoid common coupon-rate unit errors

Why Semiannual Coupon Timing Matters

A coupon bond’s price is the present value of its dated payments. When coupons are paid every six months, each coupon must be paired with the discount factor for that particular half-year date. Using the correct annual coupon rate but placing a payment at the wrong time, or forgetting to divide the rate by two, changes the entire bootstrap equation.

The method here assumes a bond is valued on a coupon date, has a regular schedule of semiannual payments, and repays its face amount at maturity. Thus there is no accrued interest to adjust, and the quoted price is the present value of all remaining cash flows. These assumptions matter: a bond priced between coupon dates or with irregular payment dates requires additional timing treatment.

Definition: Let \(D(t)\) denote the discount factor at time \(t\): the value today of one unit of currency payable at time \(t\). Set \(D(0)=1\). For a bond with face amount \(F\), annual quoted coupon rate \(c\), and maturity \(n\) years, with semiannual coupons, the coupon payment is \(C=Fc/2\). If its price is \(P\), then $$ P=C\sum_{k=1}^{2n}D(k/2)+F D(n). $$ Equivalently, the last date’s total payment is \(F+C\), so the price is the sum of the earlier coupon payments and \((F+C)D(n)\).

Here \(c\) is the bond’s annual coupon rate, not a market yield or a discount rate. If a bond has face amount $1,000 and a quoted annual coupon rate of 4%, each semiannual coupon is \(1000(0.04)/2=\$20\), not $40. At maturity, the bond pays both the final coupon and face amount, for a total of $1,020.

The discount factors are attached to payment dates, not to the number printed in the coupon-rate quote. For example, a bond maturing in two years with semiannual coupons pays at \(0.5,1,1.5,\) and \(2\) years. Its final payment is discounted by \(D(2)\); the payment at 1.5 years is discounted by \(D(1.5)\). In bootstrapping, earlier factors are inputs from previously solved maturities, while the factor at the current bond’s maturity is the unknown.

Isolating the New Maturity Factor

Suppose every discount factor at a coupon date before maturity \(n\) is already known. Separate the final payment from the other payments in the price equation:

$$ P=C\sum_{k=1}^{2n-1}D(k/2)+(F+C)D(n). $$

Subtract the present value of the earlier coupons from the observed price, then divide by the final payment. This leaves the discount factor at maturity. The numerator is the part of the price that remains to fund the final payment; the denominator is the amount paid on that date.

Result: For a regular semiannual coupon bond priced on a coupon date, if the earlier coupon-date factors are known and \(F+C\ne 0\), then $$ D(n)=\frac{P-C\displaystyle\sum_{k=1}^{2n-1}D(k/2)}{F+C}. $$ The equation is useful when the only unknown factor in the bond’s cash-flow equation is \(D(n)\). It does not by itself determine missing factors at earlier coupon dates.

This isolation explains why the bootstrap proceeds in maturity order. A longer bond’s price includes payments at dates that may already have been solved, plus its final payment at a new date. Once the earlier-date contributions are removed, only the new maturity factor remains. The equation is linear in that factor, so no iterative solution is needed.

1
Write the coupon amount.
Multiply face amount by the annual coupon rate and divide by two.
2
List the payment dates.
For maturity \(n\) years, the regular dates are \(0.5,1,\ldots,n\) years.
3
Match dates to factors.
Multiply each coupon by its date’s discount factor, and include face amount with the final coupon.
4
Solve and check.
Isolate the new maturity factor, then substitute it back into the full price equation.

Worked Examples

Worked Example: Solving a 1.5-Year Factor

A hypothetical bond has face amount $1,000, an annual quoted coupon rate of 5%, semiannual coupons, and a maturity of 1.5 years. Its price is $969.75. The discount factors at 0.5 and 1 year are \(D(0.5)=0.96\) and \(D(1)=0.93\). Find \(D(1.5)\), and verify the result. State the method and identify the coupon-rate error this setup could invite.

Method: isolate the last payment. The coupon is \(C=1000(0.05)/2=\$25\), paid at 0.5, 1, and 1.5 years. The final payment is \(\$1,025\), consisting of the $1,000 face amount and the $25 final coupon. The earlier coupon present values are

$$ 25(0.96)=24.00,\qquad 25(0.93)=23.25. $$

Together they contribute \(\$24.00+\$23.25=\$47.25\). The part of the price left to fund the final payment is \(\$969.75-\$47.25=\$922.50\). Therefore,

$$ D(1.5)=\frac{922.50}{1025}=0.90. $$

Check: the price reconstructed from all three payments is \(25(0.96)+25(0.93)+1025(0.90)=24.00+23.25+922.50=\$969.75\), as quoted. The common mistake is to use a $50 coupon by applying 5% to $1,000 without dividing by two. The annual rate is quoted for the year, but the bond pays half-yearly; that mistake would alter both the earlier coupon values and the terminal payment.

Worked Example: A Three-Year Bond with Five Earlier Coupon Dates

A hypothetical $1,000-face bond has a 4% annual quoted coupon rate, semiannual coupons, and a three-year maturity. Its price is $993.20. The known discount factors are \(D(0.5)=0.990\), \(D(1)=0.975\), \(D(1.5)=0.960\), \(D(2)=0.940\), and \(D(2.5)=0.915\). Find \(D(3)\) and reprice the bond. Explain why the final payment is not just the face amount.

Method: sum the known earlier cash flows, then isolate the maturity factor. The semiannual coupon is \(1000(0.04)/2=\$20\). There are six payment dates: 0.5, 1, 1.5, 2, 2.5, and 3 years. The first five coupons have total present value

$$ 20(0.990+0.975+0.960+0.940+0.915) =20(4.780)=\$95.60. $$

The last date pays the $20 coupon and $1,000 face amount, or $1,020. Thus \(\$993.20-\$95.60=\$897.60\) is the present value of that final payment:

$$ D(3)=\frac{897.60}{1020}=0.880. $$

Check: the earlier coupons contribute $95.60 and the final payment contributes \(1020(0.880)=\$897.60\), giving a total of $993.20. The final payment includes the coupon because the bond pays that coupon on its maturity date as well as repaying face amount.

Worked Example: Bootstrapping Four Semiannual Dates in Sequence

Four hypothetical bonds, each with face amount $100, are priced on coupon dates. All pay coupons semiannually and repay face amount at maturity. Their terms and prices are: a six-month bond with an 8% annual coupon rate priced at $99.84; a one-year bond with a 6% rate priced at $99.70; a 1.5-year bond with a 4% rate priced at $97.64; and a two-year bond with a 5% rate priced at $99.30. Bootstrap the discount factors at 0.5, 1, 1.5, and 2 years. State the sequential method and check each price.

Method: solve the shortest maturity first and use each solved factor at the next maturity. The six-month bond pays one coupon of \(100(0.08)/2=\$4\) and $100 principal, so its single payment is $104 at 0.5 years:

$$ D(0.5)=\frac{99.84}{104}=0.96. $$

Check: \(104(0.96)=\$99.84\). The one-year bond pays $3 at 0.5 years and $103 at 1 year. Its price equation gives

$$ 99.70=3(0.96)+103D(1), \qquad D(1)=\frac{99.70-2.88}{103} =\frac{96.82}{103}=0.94. $$

Check: \(3(0.96)+103(0.94)=2.88+96.82=\$99.70\). The 1.5-year bond pays $2 at each of the three dates and $100 principal at maturity. Its final payment is $102:

$$ 97.64=2(0.96)+2(0.94)+102D(1.5), $$ $$ D(1.5)=\frac{97.64-1.92-1.88}{102} =\frac{93.84}{102}=0.92. $$

Check: \(1.92+1.88+102(0.92)=1.92+1.88+93.84=\$97.64\). Finally, the two-year bond pays $2.50 on each of four dates and $100 principal at the last date, so its maturity payment is $102.50:

$$ 99.30=2.50(0.96)+2.50(0.94)+2.50(0.92)+102.50D(2), $$ $$ D(2)=\frac{99.30-2.40-2.35-2.30}{102.50} =\frac{92.25}{102.50}=0.90. $$

Check: the four present-value contributions are $2.40, $2.35, $2.30, and $92.25, which sum to $99.30. Each newly solved factor is used only after the earlier-date factors have been established. The one-year bond’s price, for example, cannot be used to isolate \(D(1)\) unless \(D(0.5)\) is already known.

Common Mistakes and Practical Checks

A reliable bootstrap is more than a sequence of divisions. Before solving, confirm that the bond’s quoted coupon convention matches the payment schedule, that every cash flow is placed at the correct date, and that the price equation uses the quoted price under the stated assumptions. A numerically plausible factor is not enough if its cash-flow equation is wrong.

  • Using the annual coupon as a half-year payment. For semiannual coupons, use \(Fc/2\). A 6% annual coupon on $1,000 gives $30 every six months, not $60.
  • Omitting the final coupon. At maturity, the regular coupon and face amount are both paid. The final discounted amount is \(F+C\), not just \(F\).
  • Discounting the final cash flow at the wrong date. A 1.5-year maturity uses \(D(1.5)\), even though there are three half-year periods.
  • Using an unknown earlier factor as if it were known. A single bond price gives one equation. If multiple discount factors in that equation are unknown, the terminal-factor formula alone is insufficient.
  • Forgetting the model assumptions. The equations above treat the quoted price as the present value on a coupon date and use regular semiannual dates. They do not adjust for accrued interest or construct a schedule with irregular dates.

A strong final check is to substitute the factor back into the original price equation using every payment. This catches both arithmetic errors and structural mistakes such as a missing coupon. It also confirms that the factor was solved from the intended bond price rather than from an incorrectly assembled cash-flow total.

Key takeaway: For a regular semiannual coupon bond priced on a coupon date, divide the annual coupon rate by two to obtain each coupon, map each payment to its half-year date, and use the known earlier factors to isolate the factor at maturity. Repricing the bond with the solved factor is an essential check.

Check Your Understanding

For each problem, assume regular semiannual payments and valuation on a coupon date. Prices are full prices, with no accrued-interest adjustment. Round discount factors to five decimal places where needed.

  1. A $800-face bond has an annual coupon rate of 5% and pays semiannually. Find the coupon paid each half-year and the total payment at maturity. (Answer: coupon $20; maturity payment $820.)
  2. A one-year $1,000-face bond has a 4% annual coupon rate and price $990. If \(D(0.5)=0.990\), find \(D(1)\). (Answer: \(D(1)=0.95118\).)
  3. A 1.5-year bond has face amount $500, annual coupon rate 6%, and price $480. If \(D(0.5)=0.98\) and \(D(1)=0.95\), find \(D(1.5)\). (Answer: \(D(1.5)=0.87583\).)
  4. A two-year $100-face bond has an annual coupon rate of 4% and price $97.20. Given \(D(0.5)=0.97\), \(D(1)=0.94\), and \(D(1.5)=0.91\), find \(D(2)\). (Answer: \(D(2)=0.89765\).)
  5. A two-year $1,000-face bond has an 8% annual coupon rate and price $1,010. The earlier factors are \(D(0.5)=0.98\), \(D(1)=0.96\), and \(D(1.5)=0.93\). Find the semiannual coupon and \(D(2)\). (Answer: coupon $40; \(D(2)=0.86077\).)
Clinical Biostats