Skip to content
All library documents

Building SOFR OIS Discount Curves by Bootstrapping

Article Quant Q&A · Author: Daniel

Summary

The document explains how SOFR overnight indexed swaps can provide discount factors for valuing future cash flows. It first places SOFR discounting in context: USD swaps had already moved from LIBOR to overnight benchmarks, and cleared portfolios had transitioned from EFFR OIS discounting to SOFR OIS discounting. The floating coupon compounds daily realized SOFR in arrears, with accrual adjustments for weekends and holidays.

For a single-period swap, the answer gives a direct relationship between the quoted fixed rate and the maturity discount factor. For swaps with several fixed payment dates, it describes bootstrapping: use earlier discount factors to solve the swap’s par pricing equation for the next unknown factor, then repeat for later maturities. Its examples cover 9-, 18-, and 30-month payments. The explanation assumes simplified coupon schedules and conventions; actual curve construction must reflect the instrument’s payment dates, accrual fractions, and market conventions.

Key ideas

  • SOFR OIS floating coupons compound realized overnight SOFR rates in arrears.
  • Single-payment OIS instruments can imply a maturity discount factor directly from the fixed rate under simplified assumptions.
  • Multi-payment swaps require solving par pricing equations sequentially using previously derived discount factors.
  • Curve construction must adapt to the actual coupon schedule and accrual conventions.

Tags

Full text
# Libor transition: Building SOFR discount curve


# Libor transition: Building SOFR discount curve












As I understand that after 2023 the `Libor` will be discontinued and `OI rates` like `SOFR` will replace its place as `RFR`. My question is, in that scenario how exactly we would discount the expected future payoff of a contingent claim to the time zero.

So, this question boils down to: How we can construct a Risk free term-structure based on quoted instruments with `SOFR`.

Let say, currently I have a bunch of `OIS` (Overnight indexed Swap) with various maturities like 9-mo, 1.5 years and 2.5 years. And know the market quoted OIS-rates for those maturities.

From there, exactly what formula should I use to calculate the risk-free zero rate for 9-mo, 1.5 years, and 2.5 years?

Any insight will be very helpful.

Thanks,

## Answer by Jan Stuller (score 9, accepted)

https://quant.stackexchange.com/a/61839

### OIS Discounting:

First note that we already discount using USD OIS rates, but these would be OIS rates constructed from USD OIS Swaps linked to the Effective Federal Funds Rate (EFFR). In other words, the floating rate of the OIS swap would be based on the EFFR rate, whilst the fixed leg would be the normal fixed leg we are used to seeing in swaps.

So the first point to note is that Libor discounting hasn't been used for quite some time now (pretty much since post-Lehman, i.e. ~2009).

Now, another point to note is that cleared portfolios have already been switched from USD OIS-EFFR discounting to USD OIS-SOFR discounting recently.

### Mechanics of OIS-SOFR Swaps

Let's consider a single-period 9-month USD OIS-SOFR Swap, such that there is only one fixed coupon at the swap maturity, and one floating coupon at the swap maturity date.

- The floating leg of the OIS-SOFR swap is the daily realized overnight SOFR rate, compounded in arrears, i.e.:

$$\prod_{t=1}^{t=n}\left(1+\frac{\delta(t)}{360}r_{SOFR}(t)\right)-1$$

Above, $n$ is the number of days in the accrual period (so for 9 months, this would be $n\approx 9*30=270$). $\delta(t)$ is the accrual factor for each of the SOFR rates $r_{SOFR}(t)$, so this is always equal to $1$, unless the $r_{SOFR}(t)$ falls on a Friday (in which case $\delta(t)=3$) or a bank holiday (in which case $\delta(t)$ could be 2 or even 4, if the bank holiday is on Monday or Friday and $r_{SOFR}(t)$ falls just before this "extended weekend").

- The fixed leg would be just the fixed leg, i.e. $r_{fixed(9m)}$

### Bootstrapping:

If all the OIS-SOFR swaps are just single period (i.e. single fixed-coupon) swaps, then you get the discount factors directly from the fixed coupons, i.e.:

$$DF_{9m}=\frac{1}{1+r_{fixed(9m)}}, DF_{18m}=\frac{1}{1+r_{fixed(18m)}}, DF_{30m}=\frac{1}{1+r_{fixed(30m)}}$$

If the OIS-SOFR swaps are not single-period swaps, then they need to be bootstrapped. Let's assume that the $9m$ OIS-SOFR swap is single-coupon, whilst the $1.5y$ swap is two-coupon (so it pays $r_{fixed(18m)}$ at the 9-month point and then at the 18-month point), and the $2.5y$ swap is three-coupon swap (so it pays $r_{fixed(30m)}$ at the 9-month point and then at the 18-month point and the 30-month point). Then, we bootstrap as follows (I assume notional of the swaps is 100):

$$100=100*r_{fixed(18m)}*DF_{9m}+100*r_{fixed(18m)}*DF_{18m}+100*DF_{18m}$$

The only unknown above is $DF_{18m}$, for which you can easily solve. Then you repeat the same exercise for the 30-month swap:

$$100=100*r_{fixed(30m)}*DF_{9m}+100*r_{fixed(30m)}*DF_{18m}+100*r_{fixed(30m)}*DF_{30m}+100*DF_{30m}$$

And you solve for the $DF_{30m}$.

If the coupon-periods are different, you just need to adjust your bootstrapping accordingly.

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.