For the complete documentation index, see llms.txt. This page is also available as Markdown.

Zero Rates

How BlueGamma derives zero-coupon rates from bootstrapped discount factors, with the day count and compounding convention for each index and a worked SOFR example.

BlueGamma's zero rate for a date is derived from the bootstrapped discount factor at that date, r = (1/DF)^(1/t) − 1, and quoted with simple compounding on the index's day count (Actual/360 for SOFR and EURIBOR, Actual/365 for SONIA, semi-annual Actual/Actual for government bonds). Zero rates are not quoted in the market; BlueGamma bootstraps them from observable par swap rates.

Zero-coupon rates (or "zero rates") represent the yield on a hypothetical bond that pays no coupons — just a single payment at maturity. They are the foundation for all other rate calculations.


What Is a Zero Rate?

A zero rate is the interest rate earned on an investment that:

  • Has no intermediate cashflows (no coupons)

  • Pays a single lump sum at maturity

  • Is held from today until the maturity date

Zero rates are also called spot rates because they represent the rate available "on the spot" for a given maturity.


Why Zero Rates Matter

Zero rates are fundamental because:

  1. Discount factors are derived from them — DF = 1/(1+r)^t

  2. Forward rates are calculated from them — Using no-arbitrage relationships

  3. They enable apples-to-apples comparison — Unlike par rates, zero rates can be directly compared across tenors

  4. They're used for valuation — PV calculations require zero rates, not par swap rates


Zero Rates vs Par Swap Rates

Zero Rate
Par Swap Rate

Definition

Yield on a zero-coupon bond

Fixed rate that makes swap NPV = 0

Coupons

None

Periodic payments

Directly observable?

No (derived)

Yes (quoted in market)

Use case

Discounting, PV calculations

Swap pricing, hedging

BlueGamma bootstraps zero rates from observable par swap rates.


The Formula

The zero rate for maturity t is related to the discount factor by:

rt=(1DFt)1t−1r_t = \left( \frac{1}{DF_t} \right)^{\frac{1}{t}} - 1

Or equivalently:

DFt=1(1+rt)tDF_t = \frac{1}{(1 + r_t)^t}

Where:

  • r = Zero rate for maturity t

  • DF = Discount factor for maturity t

  • t = Time in years


Example: SOFR Zero Curve

Here's the current SOFR zero curve (December 2024):

Maturity
Zero Rate
Discount Factor

6M (Jun 2026)

3.63%

0.9821

1.5Y (Jun 2027)

3.40%

0.9345

2.5Y (Jun 2028)

3.41%

0.9036

3.5Y (Jun 2029)

3.51%

0.8723

4.5Y (Jun 2030)

3.63%

0.8407

6.5Y (Jun 2032)

3.93%

0.7769

9.5Y (Jun 2035)

4.45%

0.6833

Observations:

  • The curve is slightly inverted at the short end (6M > 1.5Y)

  • Rates rise steadily from 2Y onwards

  • This shape reflects market expectations of near-term rate cuts followed by normalisation


Using Zero Rates in BlueGamma

API

Response:

Excel Add-in


Zero Curve vs Discount Curve

The zero curve and discount curve contain the same information in different forms:

Maturity
Zero Rate
Discount Factor

1Y

3.47%

0.9647

2Y

3.34%

0.9345

3Y

3.34%

0.9036

4Y

3.39%

0.8723

5Y

3.45%

0.8407

6Y

3.51%

0.8088

7Y

3.58%

0.7769

8Y

3.65%

0.7453

9Y

3.71%

0.7141

10Y

3.77%

0.6833

You can convert between them:

  • Zero → DF: DF = 1 / (1 + r)^t

  • DF → Zero: r = (1/DF)^(1/t) - 1


Compounding Conventions

BlueGamma zero rates use the following conventions:

Index Type
Day Count
Compounding

SOFR

Actual/360

Simple

SONIA

Actual/365

Simple

EURIBOR

Actual/360

Simple

Government Bonds

Actual/Actual

Semi-annual

Note: The compounding convention affects how you convert between zero rates and discount factors. Always check the convention when comparing rates from different sources.


Common Use Cases

Use Case
Description

Discounting cashflows

Convert future values to present values

Comparing maturities

Zero rates allow direct comparison across tenors

Curve analysis

Identify inversions, steepening, or flattening

Model inputs

Many pricing models require zero curves as inputs

Spread calculations

Calculate spreads between different curves


Last updated

Was this helpful?