> For the complete documentation index, see [llms.txt](https://www.bluegamma.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.bluegamma.io/documentation/reference/validating-bluegamma-api-data-against-bloomberg-or-other-platforms.md).

# How do I compare BlueGamma data with Bloomberg or other platforms?

Match payment frequency, day count and valuation time, then compare par swap rates from /swap\_rate. Default conventions, spot start and the market-standard API call for SOFR, SONIA, ESTR, EURIBOR, COR

To compare BlueGamma with Bloomberg or another platform, match the payment frequency, day count convention and valuation time on both sides, and compare par swap rates from the `/swap_rate` endpoint using the per-index conventions below. Most mismatches come down to one of those three settings or to snapshots taken at different times.

{% hint style="warning" %}
**Comparing rates from the Excel Add-in?**\
Swap rates pulled with the Excel add-in's `SWAP_RATE` function often won't match Bloomberg exactly. The add-in takes a single payment frequency, applied to the fixed leg, and doesn't currently let you customise day count conventions or set a different payment frequency for each leg. For example, Bloomberg quotes a EUR swap vs 6M EURIBOR with an annual 30/360 fixed leg against a semi-annual Actual/360 floating leg. If the frequency entered in Excel puts the fixed leg on 6M instead of annual, or your reference screen uses different day counts, the two rates can differ by several basis points. To reproduce another platform's conventions exactly, call the API directly with the parameters in this guide.
{% endhint %}

***

### 📐 Default Conventions by Index

These are the day count and payment frequency conventions behind BlueGamma's quoted swap curves for each index:

| Currency | Index       | Fixed Leg Day Count | Floating Leg Day Count | Fixed Leg Frequency | Floating Leg Frequency | Spot Start | Calendar                               |
| -------- | ----------- | ------------------- | ---------------------- | ------------------- | ---------------------- | ---------- | -------------------------------------- |
| USD      | SOFR        | Actual/360          | Actual/360             | Annual              | Annual                 | T+2        | United States (SOFR fixing)            |
| GBP      | SONIA       | Actual/365 (Fixed)  | Actual/365 (Fixed)     | Annual              | Annual                 | T+0        | United Kingdom (London Stock Exchange) |
| EUR      | ESTR        | Actual/360          | Actual/360             | Annual              | Annual                 | T+2        | TARGET                                 |
| EUR      | 1M EURIBOR  | 30/360 (Bond Basis) | Actual/360             | Annual              | Monthly                | T+2        | TARGET                                 |
| EUR      | 3M EURIBOR  | 30/360 (Bond Basis) | Actual/360             | Annual              | Quarterly              | T+2        | TARGET                                 |
| EUR      | 6M EURIBOR  | 30/360 (Bond Basis) | Actual/360             | Annual              | Semi-annual            | T+2        | TARGET                                 |
| EUR      | 12M EURIBOR | 30/360 (Bond Basis) | Actual/360             | Annual              | Annual                 | T+2        | TARGET                                 |
| CAD      | CORRA       | Actual/365 (Fixed)  | Actual/365 (Fixed)     | Semi-annual         | Semi-annual            | T+2        | Canada                                 |
| CHF      | SARON       | Actual/360          | Actual/360             | Annual              | Annual                 | T+2        | Switzerland                            |

Swap rate downloads from the rates dashboard, the interest rate curves page and the dashboards list include, next to the rates, the conventions of the rates in that file: for each index, the fixed leg, the floating leg, the calendar and the quote type. Rates priced at a payment frequency you chose (the dashboard swap rate matrix, a custom frequency on the curves page) list the conventions they were priced at, which can differ from the table above. Forward the file and the conventions travel with the numbers.

You can also retrieve these programmatically: every `/get_swap_curve` response includes the `fixed_leg_day_count`, `floating_leg_day_count` and leg frequency fields alongside the rates. See [Fetching a Swap Curve](/documentation/integrations/api/how-to-guides/fetching-a-swap-curve.md).

{% hint style="info" %}
**EURIBOR fixed leg day count:** the web app swap pricer and the Excel add-in's `SWAP_RATE` price EURIBOR fixed legs on Actual/360, not the 30/360 shown above. This gives a rate a few basis points lower. Over the API, `/swap_rate` uses the conventions in the table above when you leave out `fixed_leg_frequency`. If you pass `fixed_leg_frequency` without a day count, the fixed leg is priced on Actual/360, so add `fixed_leg_day_count=Thirty360BondBasis` to match 30/360.
{% endhint %}

***

### Matching a Market-Standard Quote over the API

Call `/swap_rate` with only `index`, `start_date=SPOT` and `maturity_date`, and leave out `fixed_leg_frequency`. The API then prices the swap at the conventions in the table above, starts it on the index's spot date, and echoes the conventions it used in the response, so you can check them against your reference screen.

```bash
curl "https://api.bluegamma.io/v1/swap_rate?index=CORRA&start_date=SPOT&maturity_date=10Y" \
  -H "x-api-key: your_api_key"
```

For another index, change `index` (for example `SOFR`, `SONIA`, `ESTR` or `6M EURIBOR`). If your reference source uses 1M or 3M EURIBOR, use that index: the floating leg frequency follows it.

* **Start date:** `start_date=SPOT` applies the spot start in the table, as standard quotes do. `start_date=0D` starts the swap today, which can cause a small difference for short maturities. SONIA's spot start is the same day (T+0), so both give the same swap.
* **Other conventions:** to match a screen that uses non-standard conventions, pass `fixed_leg_frequency`, `floating_leg_frequency`, `fixed_leg_day_count` and `floating_leg_day_count` explicitly. If you pass `fixed_leg_frequency` without `floating_leg_frequency`, the floating leg uses the fixed leg's frequency.

See [Fetching a Swap Rate](/documentation/integrations/api/how-to-guides/fetching-a-swap-rate.md) for a full example with the response.

***

### ⏰ Close of Business & Time Zones

Even with matching conventions, two sources can differ simply because they captured the market at different moments. This applies whether you compare in the web app or over the API.

* **"End of day" isn't one global instant.** Rates move through the trading day, so two snapshots taken at different times can differ even when everything else matches. A gap between two sources can just mean their snapshots were taken at different moments, not that either is wrong.
* **Local time can shift the value date.** The same calendar date in local time versus UTC can be two different observations near the day boundary, leaving you comparing different value dates. It is also worth checking whether the other source is labelled by fixing date or value date, as these are not always the same.
* **In the web app, times are read in your local time zone by default.** A time picked near midnight can therefore land on a different day's curve than you expect, so convert the other platform's close into your local time before entering it.

**To line them up:** the API and Excel Add-in both read timestamps in **UTC**, so give your valuation time in UTC (over the API, for example `2026-09-18T16:00:00Z`; in the Excel Add-in a date on its own is taken as 23:59:59 UTC). Either way, confirm both sides use the same cut-off and value date.

***

### 🧪 Summary Checklist: If Rates Don't Match

This summary checklist pulls the guide together, conventions, structure, and timing. Work down it to track down a mismatch:

| ✅ Check This...       | 🔍 What To Look For                                                                                                                   |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Frequency             | Are fixed/floating legs aligned (e.g. 1Y vs 6M)?                                                                                      |
| Day count conventions | Are you using the same as your reference (e.g. 30/360 vs ACT/360)?                                                                    |
| Valuation time/date   | Align the exact timestamp. The web app reads times in your local time zone; the API and Excel Add-in read them in UTC                 |
| Close of business     | Are both snapshots from the same cut-off, and on the same value date? See Close of Business & Time Zones above                        |
| Stub periods          | BlueGamma's API doesn't let you set stub periods, so a reference using a different stub convention can differ slightly                |
| Settlement            | `start_date=SPOT` starts the swap on the index's spot date (e.g. T+2 for EUR), as standard quotes do. `start_date=0D` starts it today |
| Structure             | Confirm you're comparing a par swap rate from `/swap_rate` (not forward or zero rates) on the same structure (e.g. OIS vs IBOR-based) |

📩 **Still unsure?** Email <support@bluegamma.io> with the values or screenshots you're comparing and we'll be happy to help.

***

**Need an API key?** Create one under **API Keys** in the app sidebar. See [Authentication](/documentation/integrations/api/authentication.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://www.bluegamma.io/documentation/reference/validating-bluegamma-api-data-against-bloomberg-or-other-platforms.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
