# Zero 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:

$$
r\_t = \left( \frac{1}{DF\_t} \right)^{\frac{1}{t}} - 1
$$

Or equivalently:

$$
DF\_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

```bash
curl "https://api.bluegamma.io/v1/zero_rate?index=SOFR&date=2030-06-15" \
  -H "x-api-key: your_api_key"
```

**Response:**

```json
{
  "index": "SOFR",
  "date": "2030-06-15",
  "zero_rate": 3.63,
  "day_count": "Actual360",
  "compounding": "Simple"
}
```

### Excel Add-in

```
=BlueGamma.ZERO_RATE("SOFR", "2030-06-15")
```

***

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

{% hint style="info" %}
**Note:** The compounding convention affects how you convert between zero rates and discount factors. Always check the convention when comparing rates from different sources.
{% endhint %}

***

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

***

## Related Documentation

* [Interest Rate Curves](/documentation/methodology/how-to-bootstrap-the-yield-curve.md) — How curves are constructed
* [Discount Factors](/documentation/methodology/discount-factors.md) — Converting zero rates to discount factors
* [Forward Rates](/documentation/methodology/forward-rates.md) — Deriving forward rates from zero rates
* [API Reference](/documentation/integrations/api/api-reference.md) — Complete API documentation


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bluegamma.io/documentation/methodology/zero-rates.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
