# 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.

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%.

• For the 3Y Discount factor how do you manage to get 0.95 ? Doing the following calculation give me 0.91 : exp(-3.19%*3) Jul 21, 2022 at 9:35
• Also the 2Y EY 5Y 7Y 10Y 20Y & 30Y have Semi Annual Coupon since they are UST. Thank you very much for your help. I hope thanks to you I will be able to do my first BootStrap. Jul 21, 2022 at 11:48
• The zero coupon yields: 1y=3.18%, 2y=3.18% result in discount factors: 1y=0.969, 2y=0.939, average=0.954. Jul 21, 2022 at 17:09
• As you may already know, for gaps 3y-5y, 7y-10y, etc., solving for the zc rate usually requires an iteration. For example, for the 5y bond, in the equation: P - C * (d1 + d2 + d3 + d4) = (100 + C) / (1 + y5)**5, you are solving for y5; discount factors d1, d2, d3 are known, but d4 is not (no 4y bond). However, d4 = d3 / (1 + f), where f is the (annualized) forward rate between 3y and 5y. Noting that: 1 / (1 + y5)**5 = d3 / (1 + f)**2, the equation becomes: P - (d1 + d2 + d3 + d3 / (1 + f)) = (100 + C) * d3 / (1 + f)**2. For 2-year gaps, you can solve for f. For wider gaps, you need a solver. Jul 21, 2022 at 17:45
• If I do a cubic spline interpolation on the curve to have only 1 year gaps would it work ? Or is this not a "good" method ? Jul 22, 2022 at 8:31