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 and API parameters for SOFR, CORRA, ESTR, SONIA and EURIBOR.
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.
Who is this for? You're using BlueGamma, in the web app, over the API, or through the Excel Add-in, and want to check that the data lines up with platforms you already use like Bloomberg or online sources.
This guide walks you through how to make those comparisons accurately, using consistent quoting conventions for USD SOFR, CAD CORRA, EUR ESTR, GBP SONIA, and EUR EURIBOR.
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.
🔑 Key Things to Keep in Mind
Before comparing rates, make sure to:
✅ Match payment frequencies and day count conventions
✅ Use the same valuation date/time (and time zone)
✅ Align on swap structure (e.g. OIS vs IBOR-based)
✅ Use the
/swap_rateendpoint when comparing to par swap quotes (not/forward_rateor/discount_factor)
📐 Default Conventions by Index
These are the day count and payment frequency conventions behind BlueGamma's quoted swap curves for each index:
USD
SOFR
Actual/360
Actual/360
Annual
Annual
GBP
SONIA
Actual/365 (Fixed)
Actual/365 (Fixed)
Annual
Annual
EUR
ESTR
Actual/360
Actual/360
Annual
Annual
EUR
1M EURIBOR
30/360 (Bond Basis)
Actual/360
Annual
Monthly
EUR
3M EURIBOR
30/360 (Bond Basis)
Actual/360
Annual
Quarterly
EUR
6M EURIBOR
30/360 (Bond Basis)
Actual/360
Annual
Semi-annual
EUR
12M EURIBOR
30/360 (Bond Basis)
Actual/360
Annual
Annual
CAD
CORRA
Actual/365 (Fixed)
Actual/365 (Fixed)
Semi-annual
Semi-annual
CHF
SARON
Actual/360
Actual/360
Annual
Annual
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.
🇺🇸 USD SOFR (Overnight Indexed Swap)
✅ Market Convention (and BlueGamma UI default)
Fixed leg: Annual, Actual/360
Floating leg: Annual, Actual/360
🔧 API Parameters
🔎 Notes
Bloomberg and other providers may use Semi vs Semi with different stub assumptions. Adjust accordingly if you're trying to match another screen exactly.
🇨🇦 CAD CORRA (Overnight Indexed Swap)
✅ Market Convention
Fixed leg: Annual, Actual/365
Floating leg: Annual, Actual/365
🔧 API Parameters
🇪🇺 EUR ESTR (Overnight Indexed Swap)
✅ Market Convention
Fixed leg: Annual, Actual/360
Floating leg: Annual, Actual/360
🔧 API Parameters
🔎 Notes
Bloomberg quotes EUR ESTR OIS with T+2 settlement. Use
start_date=SPOTto start the swap on the spot date and match it.start_date=0Dprices a swap starting today, which can cause a small difference for short maturities.
🇬🇧 GBP SONIA (Overnight Indexed Swap)
✅ Market Convention
Fixed leg: Annual, Actual/365
Floating leg: Annual, Actual/365
🔧 API Parameters
🔎 Notes
SONIA swaps settle T+0, so
start_date=0Dmatches the standard quote.
🇪🇺 EUR EURIBOR
✅ Market Convention
Fixed leg: Annual, 30/360
Floating leg: 6M EURIBOR, Actual/360
💡 If your reference source uses 3M or 1M EURIBOR instead, update the
indexandfloating_leg_frequencyaccordingly.
🔧 API Parameters
⏰ 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:
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
Although BlueGamma's API doesn't allow you to adjust stub periods this may cause slight differences
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 (not forward or zero rates)
📩 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? 📩 support@bluegamma.io | 📅 Book a call
Last updated
Was this helpful?

