How we source, compute, and present exchange rate and macro data
Exchange rates flow through Frankfurter (35+ central banks). For INR-base, MSEI is queried directly for RBI official rates; Frankfurter is the fallback. Macro data is scraped via Browserless.io and CDN-cached for 2 hours.
| Provider | Currencies | Publishes | Method |
|---|---|---|---|
| MSEI / RBI | USD, EUR, GBP, JPY, AED vs INR | ~1:30 PM IST | Direct scrape; Frankfurter fallback |
| ECB | AUD, CAD, CHF, CNY, HKD, SGD, NZD, THB, KRW, MYR, ZAR, SEK | ~4:00 PM CET | Frankfurter (EUR → cross-rate) |
| Blended | SAR | Daily | BOE, IMF, BNM via Frankfurter |
Computed from actual interbank spot trades on Refinitiv (Thomson Reuters) and CCIL platforms. A random 15-minute window is selected between 11:30 AM – 12:30 PM IST. Minimum 10 transactions totaling $25M+ required; outliers beyond ±3σ excluded. Cross-currency rates (EUR, GBP, JPY) are derived from the USD/INR reference using mean closing prices from the same window.
FBIL (promoted by FIMMDA, FEDAI, IBA) has administered these rates at RBI's direction since July 10, 2018. Before that date, RBI published them directly.
The dashboard displays percentage returns for periods 1D through FYTD. All returns are computed in the displayed direction (how much of the quote currency one unit of base buys), not in the stored raw rate direction.
quote / base (e.g. AUD per INR). The display shows the inverse: INR per AUD.Dividing historical by current in stored form is algebraically equivalent to dividing current displayed rate by historical displayed rate — the inversions cancel out. A positive result means the base currency strengthened (buys more of the quote).
Frankfurter automatically falls back to the nearest prior trading day when a date has no data (weekends, public holidays). The 1D/3D/1W offsets are tuned to prevent spurious 0% readings on non-trading days.
Before FBIL publishes (~1:30 PM IST) and before ECB publishes (~8:30 PM IST), Frankfurter serves yesterday's data under today's date. We detect this when rateDate ≥ todayand apply an extra day of offset so the 1D comparison doesn't reference the same data point (which would give 0%).
MSEI/FBIL gives direct INR rates. ECB rates are EUR-quoted; Frankfurter cross-rates them to USD. For INR-based views of ECB currencies, we derive the INR cross-rate on our server:
The same cross-rate logic is applied to historical dates for computing % returns. For non-INR base currencies, Frankfurter handles cross-rate computation natively.
Investing.com → Browserless.io headless scrape
A headless Chrome session scrapes the Investing.com world government bonds page. Results are cached in server memory (2h TTL) and on the CDN (2h s-maxage). A Vercel Cron job at 2 AM UTC pre-warms the cache daily; the browser client auto-refreshes every 2 hours.
World Government Bonds → Browserless.io headless scrape
| Category | Grades | Meaning |
|---|---|---|
| Prime / High Grade | AAA, AA+, AA, AA− | Extremely / very strong capacity |
| Upper Medium Grade | A+, A, A− | Strong capacity |
| Lower Medium Grade | BBB+, BBB, BBB− | Adequate capacity (investment grade floor) |
| Speculative / Default | BB+ and below | Junk / high yield |
Computed server-side from up to 5 years of daily closes (default ~1Y). Loaded on-demand when you expand a row. The series is sourced from Frankfurter using the same cross-rate logic as % returns.
Disclaimer: Exchange rates, technical indicators, bond yields, and credit ratings are for informational purposes only. They are reference rates and aggregated data from central banks, financial benchmarking institutions, and third-party providers — not live transaction rates. Do not use for financial, trading, or compliance decisions without consulting authoritative sources directly.