EquationDB

← Back to all articles

Currencies in EquationDB: every pair, the majors every 5 minutes

5 October 2026 · EquationDB team

Currencies move every asset we cover. A strong dollar weighs on US multinationals' earnings, a falling yen moves Japanese exporters, and an emerging-market currency under pressure shows up in that market's stocks before anywhere else. Until now you had to bring that context from somewhere else. Now it is in EquationDB.

What's covered

A new market, fx, carries the currency pairs our data covers: the seven majors (EURUSD, USDJPY, GBPUSD, USDCHF, AUDUSD, USDCAD, NZDUSD), the crosses between them (EURGBP, EURJPY, GBPJPY …) and the exotics: pairs with an emerging-market or smaller currency on one side. Each group is a universe: fx.majors, fx.minors, fx.exotics, and fx.all for every pair. Every pair has its full daily history, and base_currency and currency tell you which side is which.

How fresh

  • Quotes every 5 minutes, 24/5: from the Sunday 17:00 ET open to the Friday 17:00 ET close, plus one final snapshot after the close. last_price, chg_pct, day_high, day_low and quote_age_s keep every decimal.
  • Daily bars nightly, Monday to Friday, stored to four decimals: one pip on dollar pairs, never more than half a pip off.
  • The majors are in the live tier: RSI, moving averages, volatility and every other indicator are always current, and they produce events like any stock.
GET fx.majors SELECT symbol, last_price, chg_pct, rsi(14), sma(200), rv_cc(20)

What you can do with it

Rank the day's movers, like any market:

GET fx.gainers10 SELECT symbol, name, last_price, chg_pct

Build a dollar index from the majors and set it against gold:

WITH fx AS (SELECT timestamp, CASE WHEN starts_with(symbol, 'USD') THEN ret ELSE -ret END AS usd_ret FROM bars WHERE symbol IN ('EURUSD', 'USDJPY', 'GBPUSD', 'USDCHF', 'AUDUSD', 'USDCAD', 'NZDUSD') AND timestamp >= '2025-01-01'), usd AS (SELECT timestamp, avg(usd_ret) AS usd FROM fx GROUP BY timestamp), g AS (SELECT timestamp, ret AS gold FROM bars WHERE symbol = 'GLD' AND timestamp >= '2025-01-01') SELECT corr(usd.usd, g.gold) AS corr, count(*) AS days FROM usd JOIN g ON usd.timestamp = g.timestamp

Label volatility regimes day by day:

GET EURUSD SELECT close, rv_cc(20) AS vol_20d, CASE WHEN rv_cc(20) < 5 THEN 'calm' WHEN rv_cc(20) < 9 THEN 'normal' ELSE 'stressed' END AS regime LAST 2y

And because currencies are ordinary symbols, everything else works too: ANALYZE correlation across currencies and sector ETFs, OUTCOMES after a dollar breakout, BACKTEST a trend rule, WATCH an alert on a level.

Try it

Open Docs › FX & crypto for the full list of sample queries, the recipes under Recipes › FX (snapshot, trend, volatility, cross-asset, backtests), or start a task from ✦ Samples › FX & crypto. SHOW DATASETS lists the FX market with its pair count, date range and update cadence.