Every feed is normalised into a canonical event model with provenance retained: source provider, feed timestamp, ingest timestamp, sequence number, correction status and data-quality state.
Retaining provenance is not a technical nicety — it is what lets a trader answer the only question that matters after a bad fill: what did the system actually know, and when?
| Field | Purpose | Inconsistency it prevents |
|---|---|---|
symbol | Canonical instrument identity | Same instrument, two names, one chart |
venue / source | Where the number came from | Cross-venue contamination |
asset_class | Correct semantics per instrument | Comparing incompatible volume types |
timestamp + timezone | UTC in storage, local at presentation | Session boundary errors |
OHLCV | Bar construction | Non-reproducible candles |
bid / ask / spread | Cost realism | Backtests that ignore spread |
sequence_number | Ordering and gap detection | Silent data loss |
quality_flags | Trustworthiness at a glance | Trading on a bad tick |
| correction_status | Post-publication revisions tracked | Silent history rewrites |
FX spot is decentralised — there is no single central tape. Presenting a broker feed as global volume is the most common lie in retail trading software, and we do not tell it.
A count of price updates from one liquidity provider. Useful for activity and absorption analysis. Not a measure of money traded.
Actual traded contracts on a specific exchange. Real, countable, but specific to that venue — never the whole market.
Where a futures contract stands in for a spot market — USDJPY with 6J, AUDUSD with 6A — the relationship is labelled explicitly on the chart.
Cash equities with genuine venue volume and corporate-action-adjusted series, so splits and dividends do not create phantom gaps in your indicators.
Multi-venue aggregation with order-book depth and liquidity metrics. Because crypto never closes, the reconnect and gap-recovery path matters more here than anywhere else.
Spot feeds with bid, ask and spread, plus broker/tick volume clearly distinguished from any notion of global turnover. Where a futures proxy is shown, it is labelled.
Exchange-traded contracts with real venue volume and explicit roll handling, so a continuous series does not silently change character at contract expiry.
Metals, energy and softs. Where the tradable expression is a futures contract rather than a physical spot price, the platform says so instead of implying a single global benchmark.
Fetch normalised data with provenance intact, through the terminal or the API.