Bootstrapping an OIS Discount Curve

Options Pricing · Medium · Free problem

You are building a discount curve from OIS swap quotes. You have one hard anchor: the 1-year zero-coupon discount factor $P(0,1) = 0.965$. You also observe two par swap rates -- $S_2 = 3.8\%$ for the 2-year maturity and $S_3 = 4.1\%$ for the 3-year maturity. Both swaps pay fixed annually and the floating leg has PV equal to

- P(0,T)$ (i.e., a unit notional floating-rate bond priced at par minus the discount factor).

  1. Bootstrap $P(0,2)$ from the 2-year par swap rate, showing the algebra.
  2. Bootstrap $P(0,3)$ from the 3-year par swap rate, using the result from part 1.
  3. Compute the 1-year forward rate from year 2 to year 3, $f(2,3)$, under annual compounding.

Hints

  1. At par, the fixed leg PV equals the floating leg PV. You are given that the floating leg PV is
    - P(0,T)$, so write out the fixed leg cash flows and set them equal to that.
  2. At each maturity $T$, all discount factors except $P(0,T)$ are already known. Collect terms and solve: $P(0,T) = (1 - S_T \cdot \sum_{t=1}^{T-1} P(0,t)) / (1 + S_T)$.
  3. For the forward rate, use the no-arbitrage identity: a dollar invested to year 3 must equal a dollar invested to year 2 and rolled at the forward rate, giving
    + f(2,3) = P(0,2) / P(0,3)$.

Worked Solution

How to Think About It: This is textbook bootstrapping -- peel off discount factors one maturity at a time. The key is the par swap condition: on the trade date, fixed leg PV equals floating leg PV. You are given that the floating leg PV is

- P(0,T)$, which is the standard result for a floating-rate bond (it always prices to par, so the cash flows minus the final repayment have PV equal to
- P(0,T)$). Once you have that, the fixed leg PV is just a sum of coupon cash flows discounted at the factors you are solving for. At each maturity, exactly one new unknown appears, so you can solve recursively.

Quick Estimate: Before grinding through algebra, check that the numbers are plausible. The 1-year discount factor is 0.965, implying a 1-year zero rate of

/0.965 - 1 \approx 3.6\%$. Par swap rates are 3.8\% and 4.1\%, both above the 1-year zero rate, consistent with an upward-sloping curve. Discount factors should fall as maturity rises: expect roughly $P(0,2) \approx 0.928$ and $P(0,3) \approx 0.886$. The forward rate from year 2 to year 3 should be above the 3-year par rate (forwards overshoot par rates on an upward curve), so expect something like $4.7\%$.

Approach: Apply the par swap pricing condition at each maturity. For a $T$-year annual-pay par swap, the fixed leg PV equals the sum of annual coupon payments discounted at known factors, plus the coupon at maturity. Set this equal to the floating leg PV and isolate the one unknown discount factor.

Formal Solution:

Part 1 -- Bootstrap $P(0,2)$:

At par, the fixed leg PV equals the floating leg PV:

$S_2 \cdot P(0,1) + S_2 \cdot P(0,2) = 1 - P(0,2)$

Note: the fixed leg pays the coupon $S_2$ at $t=1$ and $t=2$ (no notional exchange on the fixed side; the notional cancels against the floating notional in the par condition). Rearranging:

$S_2 \cdot P(0,1) + P(0,2)\bigl(S_2 + 1\bigr) = 1$

$P(0,2) = \frac{1 - S_2 \cdot P(0,1)}{1 + S_2}$

Plugging in $S_2 = 0.038$ and $P(0,1) = 0.965$:

$P(0,2) = \frac{1 - 0.038 \times 0.965}{1.038} = \frac{1 - 0.036670}{1.038} = \frac{0.963330}{1.038} \approx 0.9281$

Part 2 -- Bootstrap $P(0,3)$:

The 3-year par condition:

$S_3 \cdot P(0,1) + S_3 \cdot P(0,2) + S_3 \cdot P(0,3) = 1 - P(0,3)$

Rearranging:

$S_3 \bigl[P(0,1) + P(0,2)\bigr] + P(0,3)\bigl(1 + S_3\bigr) = 1$

$P(0,3) = \frac{1 - S_3 \cdot \bigl[P(0,1) + P(0,2)\bigr]}{1 + S_3}$

Plugging in $S_3 = 0.041$, $P(0,1) = 0.965$, $P(0,2) = 0.9281$:

$P(0,1) + P(0,2) = 0.965 + 0.9281 = 1.8931$

$S_3 \times 1.8931 = 0.041 \times 1.8931 = 0.077617$

$P(0,3) = \frac{1 - 0.077617}{1.041} = \frac{0.922383}{1.041} \approx 0.8861$

Part 3 -- Forward rate $f(2,3)$:

Under annual compounding, the no-arbitrage relationship between discount factors and forward rates is:

$P(0,2) \times \bigl(1 + f(2,3)\bigr) = P(0,3)^{-1} \times P(0,2)^{-1}... $

More directly: investing from 0 to 3 must equal investing from 0 to 2 and rolling over from 2 to 3:

$P(0,3) = P(0,2) \times \frac{1}{1 + f(2,3)}$

Solving:

$1 + f(2,3) = \frac{P(0,2)}{P(0,3)} = \frac{0.9281}{0.8861}$

$f(2,3) = \frac{0.9281}{0.8861} - 1 = 1.04741... - 1 \approx 4.74\%$

Answer:

$P(0,2) \approx 0.9281, \quad P(0,3) \approx 0.8861, \quad f(2,3) \approx 4.74\%$

General bootstrap formula for maturity $T$ (annual fixed payments):

$P(0,T) = \frac{1 - S_T \cdot \sum_{t=1}^{T-1} P(0,t)}{1 + S_T}$

Intuition

Bootstrapping is the curve builder's core skill: you are extracting zero-coupon discount factors from instruments that are not zero-coupon (par swaps pay coupons). The trick is that you process maturities in order. By the time you reach maturity $T$, you have already nailed down all shorter discount factors, so there is exactly one unknown left and you can solve algebraically. This is why the method is called bootstrapping -- each step lifts off the previous one.

The forward rate calculation reveals something important about upward-sloping curves. When the par rate curve slopes up (here: 3.6\% zero at 1Y, 3.8\% par at 2Y, 4.1\% par at 3Y), the implied forward rates are steeper still -- the 1-year rate starting in year 2 is about 4.74\%, well above both the 2Y and 3Y par rates. This overshooting is always true: forwards are a lever on the par curve. Traders use this to express views on the shape of the curve -- if you think the market is pricing too steep a forward path, you sell the forward rate (enter a 2Yx1Y forward starting swap) rather than taking an outright position in swaps.

Open the full interactive solver →