Validating BlueGamma API Data Against Bloomberg or Other Platforms

Learn how to compare BlueGamma API swap rates with other data sources using standard conventions for SOFR, CORRA, and EURIBOR.

Who is this for? You're trying out the BlueGamma API and want to ensure that the data aligns with rates from platforms you're already using 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, and EUR EURIBOR.


🔑 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

  • ✅ Align on swap structure (e.g. OIS vs IBOR-based)

  • ✅ Use the /swap_rate endpoint when comparing to par swap quotes (not /forward_rate or /discount_factor)


🇺🇸 USD SOFR (Overnight Indexed Swap)

✅ Market Convention (and BlueGamma UI default)

  • Fixed leg: Annual, Actual/360

  • Floating leg: Annual, Actual/360

🔧 API Parameters

index=SOFR
start_date=0D
maturity_date=10Y
fixed_leg_frequency=1Y
floating_leg_frequency=1Y
fixed_leg_day_count=Actual360

🔎 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

index=CORRA
start_date=0D
maturity_date=10Y
fixed_leg_frequency=1Y
floating_leg_frequency=1Y
fixed_leg_day_count=Actual365Fixed
floating_leg_day_count=Actual365Fixed

🇪🇺 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 index and floating_leg_frequency accordingly.

🔧 API Parameters

index=6M EURIBOR
start_date=0D
maturity_date=10Y
fixed_leg_frequency=1Y
floating_leg_frequency=6M
fixed_leg_day_count=Thirty360EuroBondBasis
floating_leg_day_count=Actual360

🧪 If Rates Don’t Match

Here’s a checklist to debug any 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

Use valuation_time to align the exact timestamp

Stub periods

Although BlueGamma's API doesn't allow you to adjust stub periods this may cause slight differences

Structure

Confirm you’re comparing a par swap rate (not forward or zero rates)

📩 Still unsure? Email [email protected] with the values or screenshots you're comparing and we’ll be happy to help.


🐍 Example: Calling the BlueGamma API in Python

Here’s a basic example of how to request a 10Y SOFR swap rate using requests in Python:

import requests

url = "https://api.bluegamma.io/v1/swap_rate"
headers = {
    "x-api-key": "your_api_key_here"
}
params = {
    "index": "SOFR",
    "start_date": "0D",
    "maturity_date": "10Y",
    "fixed_leg_frequency": "1Y",
    "floating_leg_frequency": "1Y",
    "fixed_leg_day_count": "Actual360",
}

response = requests.get(url, headers=headers, params=params)
print(response.json())

You can easily adapt this to test CORRA or EURIBOR by changing the index and frequency/day count parameters.

Last updated