ADR 0028: Market Data Source Catalog and Support Tiers¶
Status¶
Accepted
Date¶
2026-03-16
Context¶
IRIS now has three different layers of truth around market-data sourcing:
- observed assets live in PostgreSQL by ADR 0026;
- runtime capability snapshots live in Redis by ADR 0027;
- source adapters and provider precedence live in backend code.
What was still missing was one architectural source of truth for the provider catalog itself:
- which market-data providers are approved for IRIS at all;
- which asset classes each provider may serve;
- which providers are already implemented vs planned;
- which providers are only acceptable as approximation or daily-resilience layers;
- which providers are required when exact index-owner or exchange-owner data matters.
Without this catalog, the codebase drifts into local assumptions:
- a provider may be added in code without architectural approval;
- a seed asset may depend on a provider that is not durable enough for startup coverage;
- "default" source routing becomes implicit instead of governed.
Decision¶
IRIS maintains one ADR-owned market-data provider catalog and support-tier model.
This ADR is the source of truth for which providers are allowed in the platform.
Catalog Rules¶
- every provider used by
market_datamust appear in this ADR; - every provider listed here must have one of three statuses:
implementedplannedlicensed/escalation- every provider listed here must also declare its support tier:
primaryresilienceexactcoin.sourcevalues in PostgreSQL may only reference provider ids cataloged here, or the synthetic routing valuedefault;- Redis capability snapshots are runtime state for a provider from this catalog, not the catalog itself.
Tier Rules¶
primarymeans normal production fetch path for the relevant asset class;resiliencemeans fallback or daily-survival coverage that keeps seeded assets alive when primary providers fail or rate-limit;exactmeans owner-grade or licensed feeds required when public/free providers are only proxies or approximations.
Startup Coverage Rule¶
- every enabled seed asset must have at least one non-experimental provider path from this catalog;
- macro and energy seed assets should have at least one resilience path independent from Yahoo-style unofficial scraping;
- if a seed asset is covered only by daily resilience providers, its seeded base candle must be
1d, not intraday; - if an asset can only be supported by approximation, that approximation must be documented explicitly in this ADR.
Provider Catalog¶
Implemented Primary Providers¶
| Provider ID | Status | Tier | Asset Classes | Notes |
|---|---|---|---|---|
binance |
implemented | primary | crypto |
Spot crypto primary source. Live listing discovery supported. |
kucoin |
implemented | primary | crypto |
Spot crypto primary source. Live listing discovery supported. |
kraken |
implemented | primary | crypto |
Spot crypto primary source. Live listing discovery supported. |
coinbase |
implemented | primary | crypto |
Spot crypto primary source. Live listing discovery supported. |
moex |
implemented | primary | index |
Primary source for MOEX-native indices such as IMOEX and RTSI. |
polygon |
implemented | primary | forex, index |
Official API product, but rate-limited in free usage. Live listing discovery supported when quota allows. |
twelvedata |
implemented | primary | forex, index, metal |
Broad reference-data provider. Some symbols are plan-gated. Live listing discovery supported. |
yahoo |
implemented | primary | crypto, forex, index, metal, energy |
Broad practical fallback, but unofficial and rate-limit prone. Alias validation only. |
Implemented Resilience Providers¶
| Provider ID | Status | Tier | Asset Classes | Notes |
|---|---|---|---|---|
alphavantage |
implemented | resilience | forex, energy, rates |
Official API. FX universe is derived from published currency list; energy and rates use validated curated aliases. |
eia |
implemented | resilience | energy |
Official EIA Open Data daily fallback for WTI, BRENT, and NATGASUSD. |
fred |
implemented | resilience | index, rates, macro |
Daily macro fallback via FRED series API. Suitable for VIX, TNX, NDX, and a broad-dollar proxy for DXY. |
stooq |
implemented | resilience | index, metal |
Daily-only public fallback. Alias validation only. |
Approved Licensed or Exact Providers¶
| Provider ID | Status | Tier | Asset Classes | Notes |
|---|---|---|---|---|
cboe_indices |
licensed/escalation | exact | index, rates, volatility |
Exact owner-grade path for VIX and Cboe-owned rate indices such as TNX. |
nasdaq_gids |
licensed/escalation | exact | index |
Exact owner-grade path for NDX. |
ice_data |
licensed/escalation | exact | index, energy, macro |
Exact owner-grade path for ICE U.S. Dollar Index (DXY) and ICE-side energy benchmarks such as Brent. |
cme_market_data |
licensed/escalation | exact | energy |
Exact owner-grade path for CME/NYMEX benchmarks such as WTI and Natural Gas. |
stoxx_licensed |
licensed/escalation | exact | index |
Exact owner-grade path for STOXX50E. |
sp_dji_licensed |
licensed/escalation | exact | index |
Exact owner-grade path for DJI and GSPC families when public proxies are not acceptable. |
Asset-Coverage Guidance¶
Assets With Strong Public Coverage¶
BTCUSD,ETHUSD,SOLUSD,DOGEUSD,ETHBTC,FETUSD,RENDERUSD,TAOUSD,AKTUSDEURUSD,USDRUB,USDCNYIMOEX,RTSIDJI,GSPC,GDAXI,STOXX50EXAUUSD,XAGUSD
These assets may use public providers as their primary operational path.
Assets Requiring Resilience Beyond Yahoo¶
DXYNDXVIXTNXNATGASUSDBRENTUSDWTIUSD
These assets must not rely solely on Yahoo-style unofficial access if they remain in the seed set.
Approximation Rules¶
DXYmay be approximated by FRED broad-dollar series only if the product requirement is "keep macro dollar regime alive" rather than "exact ICE U.S. Dollar Index".TNXmay be approximated by FRED treasury yield series only if the product requirement is "daily 10Y yield level" rather than "exact Cboe TNX instrument".VIX,NDX,DXY,BRENTUSD,WTIUSD, andNATGASUSDshould move toexactproviders when exact branded benchmark identity becomes a hard requirement.
Consequences¶
Positive¶
- provider adoption is now governed explicitly instead of being inferred from code;
- DB asset inventory, Redis capability state, and provider catalog each have one clear owner;
- gaps in seed coverage become visible as architectural issues instead of runtime surprises.
Negative¶
- this ADR must be kept current whenever a provider is added, removed, or re-tiered;
- some source ids represent licensed escalation paths that may never be implemented in local development environments;
- the catalog is intentionally broader than the current codebase, so code and ADR can temporarily differ while planned providers are being built.