To calculate the spot rate for a bond, start with a zero-coupon bond, whose single payment at maturity lets you solve for the yield directly, and then use bootstrapping to extract longer-dated spot rates from coupon bonds one maturity at a time. A spot rate is the yield on a zero-coupon bond for a specific maturity, and once you have a series of them you can discount any single cash flow to present value with more precision than a blended yield-to-maturity figure allows.
The math below assumes annual coupons to keep the algebra readable. Most U.S. Treasury notes and bonds pay semiannually, and a later section shows how to adjust.
Inputs You Need Before You Start
Each bond you use gives you one equation. Before writing anything down, gather four things for each one.
- Current market price. Exchange quotes typically show the “clean” price, which strips out interest that has built up since the last coupon date. Present-value math uses the “dirty” price, which adds accrued interest back in. Mixing the two is one of the most common bootstrapping errors.
- Par value. The face amount repaid at maturity, almost always $1,000 for U.S. corporate and government debt.
- Coupon rate and payment frequency.
- Maturity date, which sets the number of periods you discount over.
The U.S. Treasury publishes a daily par yield curve derived from market prices collected by the Federal Reserve Bank of New York at approximately 3:30 PM each business day.1U.S. Department of the Treasury. Interest Rate Statistics Those par yields are the raw material most analysts use when bootstrapping a risk-free spot rate curve. For corporate bonds, the data comes from exchange quotes or financial data terminals.
Sort your bonds by maturity so each successive instrument introduces exactly one new unknown. Skip a maturity and the logic breaks down.
Spot Rate on a Zero-Coupon Bond
A zero-coupon bond makes a single payment at maturity, so its spot rate falls out of one equation. Divide face value by current price to get the gross return, take the nth root where n is years to maturity, and subtract one.
A one-year zero-coupon bond with a $1,000 face value trading at $980:
r₁ = ($1,000 / $980) − 1 = 0.02041, or about 2.04%
That is the market’s price of lending money for exactly one year, with no coupon reinvestment assumptions folded in. It anchors everything that follows.
For a two-year zero-coupon bond priced at $950 with $1,000 face value:
r₂ = ($1,000 / $950)^(1/2) − 1 = 0.02598, or about 2.60%
The exponent of 1/2 reflects the two-year horizon.
Bootstrapping a Spot Rate from a Coupon Bond
Zero-coupon government bonds exist only at short maturities (Treasury bills). For anything longer, you need coupon-paying bonds and the bootstrapping technique: discount the earlier coupons at the spot rates you already have, then isolate the final cash flow and solve for the new rate.
The Core Equation
A coupon bond’s price equals the sum of every cash flow discounted at the spot rate that applies to its payment date. For a two-year bond with annual coupon C, face value F, and market price P:
P = C / (1 + r₁) + (C + F) / (1 + r₂)²
If r₁ is already known from a one-year zero-coupon bond, the only unknown is r₂. Rearrange and solve.
Worked Example
Two bonds:
- Bond A: one-year maturity, 9% coupon, $1,000 par, priced at $1,020.
- Bond B: two-year maturity, 7% annual coupon, $10,000 par, priced at $9,900.
Bond A has a single cash flow at year-end of $90 in coupon plus $1,000 par, or $1,090:
r₁ = ($1,090 / $1,020) − 1 = 0.0686, or 6.86%
Now use r₁ to bootstrap r₂ from Bond B. Bond B pays a $700 coupon at year one and $700 + $10,000 = $10,700 at year two:
$9,900 = $700 / (1.0686) + $10,700 / (1 + r₂)²
Discount the first coupon: $700 / 1.0686 = $655.05. Subtract from the price:
$9,900 − $655.05 = $9,244.95
That $9,244.95 is the present value of the year-two cash flow. Solve for r₂:
(1 + r₂)² = $10,700 / $9,244.95 = 1.15737
r₂ = (1.15737)^(0.5) − 1 = 0.0758, or 7.58%
The two-year spot rate of 7.58% is higher than the one-year rate of 6.86%, so the curve slopes upward in this example. Notice that 7.58% is not Bond B’s yield to maturity, which would blend both periods into one averaged figure. The spot rate is the pure price of two-year money.
Extending the Curve
For a three-year bond, repeat the pattern. Discount the first coupon at r₁, the second at r₂, and solve for r₃ from the present value of the final payment. Each new maturity adds one equation and one unknown. The general form for an n-year bond:
P = C/(1+r₁) + C/(1+r₂)² + … + (C+F)/(1+rₙ)ⁿ
Every rate except rₙ is already known from prior steps, so you rearrange to isolate the last term. A spreadsheet handles this cleanly, but the algebra is the same at every step.
Semiannual Coupons and Day Count
Real bonds rarely pay once a year. U.S. Treasury notes and bonds pay every six months,2TreasuryDirect. Understanding Pricing and Interest Rates and the Treasury’s par yield curve quotes yields on a semiannual bond-equivalent basis.3U.S. Department of the Treasury. Interest Rates – Frequently Asked Questions Three adjustments:
- Divide the annual coupon rate by two to get the payment per period.
- Double the number of years to get the total number of six-month periods.
- Each spot rate you solve for is a semiannual rate. Multiply by two for the annualized bond-equivalent yield, or compound as [(1 + r/2)² − 1] for the effective annual rate.
A two-year semiannual bond gives you four periods and four spot rates to solve for. The bootstrapping logic doesn’t change.
Day count matters too. Treasury bonds use actual/actual, counting the real number of days in each period and year.3U.S. Department of the Treasury. Interest Rates – Frequently Asked Questions Corporate bonds typically use 30/360, treating every month as 30 days and every year as 360. Use the convention that matches the instrument. Mixing them introduces small errors that compound across maturities.
Filling in Missing Maturities
Markets don’t always give you a bond at every maturity you need. You might have a one-year and a three-year but nothing at two years. Interpolation fills the gap.
Linear interpolation draws a straight line between two known spot rates and reads the missing rate off the line. If the one-year rate is 3.0% and the three-year is 3.6%, the two-year estimate is 3.3%. Fast and transparent, but the resulting curve has visible kinks at each data point.
Cubic spline interpolation fits a third-degree polynomial between each pair of known points, with the constraint that slope and curvature match where two polynomials meet. The result is a smooth, differentiable curve closer to what actual market pricing looks like. Most institutional-grade curve construction uses some form of spline fitting.
Interpolated rates are estimates, not observed prices. The wider the gap between known maturities, the less reliable the interpolated value.
Checking Your Work with Forward Rates
Once you have a spot curve, the forward rates implied by it give you a sanity check and a tool for pricing rate-dependent instruments. The relationship comes from a no-arbitrage condition: investing at the two-year spot rate for two years should equal investing at the one-year spot rate and reinvesting at the implied one-year rate starting in year two.
(1 + r₂)² = (1 + r₁) × (1 + f₂)
Solve for f₂, the implied forward rate for year two:
f₂ = (1 + r₂)² / (1 + r₁) − 1
Using r₁ = 6.86% and r₂ = 7.58% from the earlier example:
f₂ = (1.0758)² / (1.0686) − 1 = 0.0831, or 8.31%
That 8.31% is the break-even one-year rate for year two. It is also a quick consistency check: if your bootstrapped spot rates produce a nonsensical forward rate (negative, wildly out of line with neighbors), an input is probably wrong. The general form for the forward rate over the nth year:
fₙ = (1 + rₙ)ⁿ / (1 + rₙ₋₁)ⁿ⁻¹ − 1
With the spot curve and the forward curve in hand, you can discount any single cash flow at the rate that actually applies to its date rather than at an averaged yield, which is the whole point of bootstrapping in the first place.