Bootstrapping Treasury Zero Rates from Coupon Bond Yields
Summary
The document examines how to bootstrap a zero coupon spot curve from Treasury yields and coupon bonds. Short Treasury bill maturities with no coupons provide initial discount rates. For longer maturities, the bond price is decomposed into the present value of coupon payments and the value of the final principal payment; previously derived discount factors are needed to value earlier cash flows before solving for the new maturity's zero rate.
The proposed calculation incorrectly subtracts only one coupon's present value when later bonds have several earlier coupon dates. The answer points out that all coupons already covered by the curve must be discounted and included. It also assumes exact annual maturities, annual coupons, no accrued interest, and a stepwise forward curve between quoted maturities. Under those simplifying assumptions, the corrected 30-year zero yield is about 3.12%, rather than the implausibly high result in the question. Actual curve construction depends on bond conventions and interpolation choices.
Key ideas
- Bootstrap the curve by using short bill yields to establish initial discount factors.
- Value every coupon cash flow with the discount factor for its payment date.
- Subtract the present value of all earlier coupons before solving for a bond's terminal discount factor.
- Interpolation assumptions between quoted maturities affect the resulting zero curve.
- The example simplifies Treasury maturities, coupon timing, and accrued interest.
Tags
Full text
# Convert UST Yield Curve to Spot Curve (Zero Coupon) using bootstrapping # Convert UST Yield Curve to Spot Curve (Zero Coupon) using bootstrapping Having the following UST Active Curve : | Tenor | Tenor ticker | bid_yield | Coupon | | 1M | 912796XM Govt | 1.891 | 0 | | 2M | 912796XV Govt | 2.225 | 0 | | 3M | 912796V6 Govt | 2.52 | 0 | | 6M | 912796XS Govt | 3.026 | 0 | | 1Y | 912796XQ Govt | 3.178 | 0 | | 2Y | 91282CEX Govt | 3.187 | 3 | | 3Y | 91282CEY Govt | 3.188 | 3 | | 5Y | 91282CEW Govt | 3.112 | 3.25 | | 7Y | 91282CEV Govt | 3.094 | 3.25 | | 10Y | 91282CEP Govt | 2.991 | 2.875 | | 20Y | 912810TH Govt | 3.404 | 3.25 | | 30Y | 912810TG Govt | 3.159 | 2.875 | The first step to convert this curve is to calculate PV of `91282CEX Govt` by doing the following : The bond Zero Coupon Price would then be : Once we have it we can calculate the ZC Rate doing the following : So if we apply the same logic to the rest of the curve we will have the following ZC Curve : | Tenor | Tenor ticker | bid_yield | Coupon | Price | Price_ZC | PV_CPN | ZC Rate | | 1M | 912796XM Govt | 1.89 | 0.00 | | 0 | 0 | 1.89% | | 2M | 912796XV Govt | 2.23 | 0.00 | | 0 | 0 | 2.23% | | 3M | 912796V6 Govt | 2.52 | 0.00 | | 0 | 0 | 2.52% | | 6M | 912796XS Govt | 3.03 | 0.00 | | 0 | 0 | 3.03% | | 1Y | 912796XQ Govt | 3.18 | 0.00 | | 0 | 0 | 3.18% | | 2Y | 91282CEX Govt | 3.19 | 3.00 | 99.65 | 96.74 | 2.91 | 3.18% | | 3Y | 91282CEY Govt | 3.19 | 3.00 | 99.47 | 96.56 | 2.91 | 3.28% | | 5Y | 91282CEW Govt | 3.11 | 3.25 | 100.63 | 97.48 | 3.15 | 2.92% | | 7Y | 91282CEV Govt | 3.09 | 3.25 | 100.97 | 97.81 | 3.16 | 2.74% | | 10Y | 91282CEP Govt | 2.99 | 2.88 | 99.02 | 96.22 | 2.80 | 3.40% | | 20Y | 912810TH Govt | 3.40 | 3.25 | 97.80 | 94.65 | 3.14 | 4.44% | | 30Y | 912810TG Govt | 3.16 | 2.88 | 94.53 | 91.78 | 2.75 | 5.87% | I was wondering if the logic was the right one and if my calculation theory is the good one. | Tenor | Tenor ticker | bid_yield | Coupon | Price | Price_ZC | PV_CPN | ZC Rate | | 3Y | 91282CEY Govt | 3.19 | 3.00 | 99.47 | 96.56 | 2.91 | 3.28% | | 5Y | 91282CEW Govt | 3.11 | 3.25 | 100.63 | 97.48 | 3.15 | 2.92% | | 7Y | 91282CEV Govt | 3.09 | 3.25 | 100.97 | 97.81 | 3.16 | 2.74% | | 10Y | 91282CEP Govt | 2.99 | 2.88 | 99.02 | 96.22 | 2.80 | 3.40% | | 20Y | 912810TH Govt | 3.40 | 3.25 | 97.80 | 94.65 | 3.14 | 4.44% | | 30Y | 912810TG Govt | 3.16 | 2.88 | 94.53 | 91.78 | 2.75 | 5.87% | 5.87% on the 30 year seems strange to me. Thanks in advance to those who will help me to correct my mistake and to better understand the bootstrap method. ## Answer by Chris Edmonton (score 1, accepted) https://quant.stackexchange.com/a/71653 I'll keep your simplifying assumptions that these bonds have exact 1y, 2y, etc. terms, annual coupons, and no accrued interest. For the 2y bond, you calculated correctly that the price of the 1st year coupon is 3% times a discount factor of about 0.97, i.e., 2.91%. However, for the 3y bond, the price of the first 2 years of coupons should be (3% * 2) times an average discount factor of about 0.95, i.e., 5.73% (not the 2.91% you calculated); for the 5y bond, the price of the first 4 years of coupons should be (3.25% * 4) times an average discount factor of about 0.93, i.e., 12.10% (not the 3.15% you showed); etc. After correction, and assuming a step-wise forward curve (i.e., constant short rate in the gaps 3y-5y, 5y-7y, etc.), you should find a 30y zero coupon yield of about 3.12%.
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.