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.
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:
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.
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.
Multiply face amount by the annual coupon rate and divide by two.
For maturity \(n\) years, the regular dates are \(0.5,1,\ldots,n\) years.
Multiply each coupon by its date’s discount factor, and include face amount with the final coupon.
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
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,
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
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:
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:
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
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:
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:
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.
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.
- 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.)
- 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\).)
- 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\).)
- 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\).)
- 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\).)