What is a prediction market?
A prediction market is an exchange where users trade binary (or multi-outcome) event contracts — “Will X happen by date Y?” — that settle to a fixed value (typically $1) if the event resolves true and $0 otherwise. The traded price between $0 and $1 is read as the market-implied probability of the event. Because contracts are fully collateralized and settle to a known value, prediction markets have their own metric vocabulary (contracts traded, open interest in contracts, settlement value) that we normalize into the standard Artemis fields below.Platforms we cover
Drift (
drift) also operates a prediction-market (“BET”) product, but is tracked primarily as a Solana perpetuals/spot venue, so its prediction-market activity is folded into its protocol metrics rather than broken out here.Coming soon
We’re adding the following prediction-market venues soon:- DKeX — DraftKings’ own CFTC-regulated exchange (formerly Railbird)
Where the data comes from
We use two ingestion models depending on whether a venue settles on-chain or off-chain:On-chain venues (indexed from the blockchain)
Polymarket, Limitless, Myriad, Rain.one, Opinion, Predict, and Hyperliquid HIP-4 settle on public blockchains. For these we index raw trade/fill events directly from archive nodes and raw block feeds, then aggregate to a daily grain. This is the same event-level pipeline used for DEXes and perps — no reliance on a venue-reported dashboard number.- Polymarket — indexed from Polygon. Every fill is a USDC-denominated on-chain event; the raw trade table (
fact_polymarket_trades) feeds the daily model. Because Polymarket settles via UMA’s optimistic oracle, we also track UMA dispute counts and unique disputers, plus maker rebates paid on Polygon. - Hyperliquid HIP-4 — indexed from Hyperliquid’s raw node feed. Outcome markets are fully collateralized; each binary share settles to $1, so notional volume is measured in shares.
Off-chain / centralized venues (venue data feed)
Kalshi is a CFTC-regulated US exchange whose contracts do not settle on-chain, so we ingest from Kalshi’s official API market snapshots and trade feed (fact_kalshi_trades). Kalshi’s event contracts are $1-face binaries, so contract counts equal USD notional. Kalshi also lists perpetual futures, reported separately in USD-native perp_* fields.
ForecastEx is Interactive Brokers’ CFTC-regulated event-contract exchange (a DCM and DCO — it both lists and clears its own contracts), with published EOD history from 2024-08-01. We ingest ForecastEx’s end-of-day prices file (per-contract, per-side volume and open interest). Each ForecastEx contract lists a YES and a NO (and, for elections, multiple) subtype row carrying the same pair-level figures, so we take the MAX across a contract’s subtype rows before summing across contracts — a double-count-safe aggregation. On the $1 cents-model each contract’s face is $1, so the contract count is the USD figure.
Gemini Predictions is the prediction-markets venue run by Gemini Titan, LLC (Gemini’s CFTC-regulated DCM), live since its 2025-12-15 launch. The headline volume is Gemini’s own official CFTC Rule 16.01 per-contract Market Data publication; we also carry a complete-print secondary figure (tick_contracts_traded) built from the venue’s tick-by-tick Trade Data file. Gemini does not report open interest — its file’s OI column has been zero since launch — so open_interest is carried as an explicit NULL.
CME lists CFTC-regulated binary yes/no event contracts on CME/CBOT/NYMEX/COMEX, distributed retail through FanDuel Predicts and DraftKings Predictions (both are FCM front-ends onto CME — the exchange-level figures here are the only published record, with no per-distributor split). We ingest CME’s official daily volume + open-interest file (public FTP), filtered to event-contract products, with history from CME’s 2022-09-19 event-contract launch. Coverage note: the financial event contracts (equity indices, energy, metals, FX, crypto) are captured; the sports/culture contracts — the bulk of volume since the Dec-2025 FanDuel Predicts launch — are published only in CME’s Daily Bulletin Section 73 PDF and are a known coverage gap. Contract faces are not uniform ($1 in the FanDuel era, $20 for the 2022-era products), so spot_volume is a contract count, not USD.
Nadex (North American Derivatives Exchange, operating as Crypto.com | Derivatives North America since the 2021 acquisition) is a CFTC-regulated event-contract DCM. We ingest the exchange’s Daily Bulletin PDF (its CFTC Part 16 disclosure — per-contract daily volume, open interest, and settlement detail), aggregated twin-safe: a contract can appear twice per day (a trading-side and a settlement-side row), so we sum volume but take MAX open interest before summing across contracts. Coverage starts 2025-06-01 (the ingest backfill floor; bulletins exist back to 2019). Nadex contract faces vary ($10–$2,000 by product family), so spot_volume is a contract count with no uniform USD conversion; parlay (“combo”) flow is broken out in combo_volume.
Rothera is a 24×7 event-contract venue that launched on 2026-05-21. We ingest Rothera’s end-of-day (EOD) market feed — per-contract volume and open interest snapshotted daily. Because the EOD feed carries no per-trade VWAP, the price-weighted volume_usd/open_interest_usd fields are valued at the contract settlement price, an approximation rather than a fill-level tally.
How we calculate each metric
All venues are normalized onto the standard Artemis metric fields so they can be compared side-by-side. Not every venue exposes every metric; the table notes where a field is venue-specific.Category & sub-category breakdowns
For the largest venues we split daily volume and open interest into a cross-venue-comparable taxonomy (Sports, Politics, Economics, Crypto, …) so the same categories line up across platforms:- Polymarket and Kalshi expose
SPOT_VOLUME_SPORTS,SPOT_VOLUME_POLITICS,SPOT_VOLUME_CRYPTO, and..._WITHOUT_SPORTSvariants, plus per-category tables (*_metrics_by_category) and hourly tables (*_metrics_by_hour). - Rothera has no category field in its EOD feed, so category is derived from each contract’s product-code prefix (via an internal mapping) into the same cross-venue taxonomy. Rothera additionally offers a sport-level drilldown (Soccer / Baseball / Tennis / American Football / Macro) that is intentionally not cross-venue-comparable.
Reading volume across venues. On the $1-face binary venues,
spot_volume is a contract/share count that already equals USD notional, so the headline numbers are directly comparable across Kalshi, Polymarket, ForecastEx, Gemini, Rothera, and HIP-4 without conversion. Keep in mind:spot_volumeis notional, not premium. The price-weighted cash actually traded (≈ half of notional at typical prices) is the separatevolume_usdfield where a venue exposes it (Rothera, ForecastEx). Don’t mix the two.- Nadex and CME are not $1-face. Their contract faces vary by product family, so their
spot_volumeis a raw contract count that does not equal USD and should not be compared 1:1 with the $1-face venues. On CME, note the sports/culture coverage gap; on Nadex, parlay flow (combo_volume) is a large share of the total. - Gemini publishes two figures: the headline
spot_volume(official Rule 16.01 Market Data) andtick_contracts_tradedfrom the tick-by-tick file. The tick figure includes intraday 5/15-minute crypto contracts and repeated combo/cross prints that Gemini’s own displayed volume excludes, so it runs a multiple of the headline — usespot_volumefor cross-venue comparison. - Perpetual futures on Kalshi and Polymarket are USD-native (not $1-face) and live in separate
perp_*fields — never sum them with event-contractspot_volume.
Accessing the data
Prediction-market metrics are available through every Artemis surface:- Web app — Prediction Markets sector on artemis.ai
- API / Python SDK — see Prediction Markets via the API for
fetch_metricsexamples - Sheets — pull the fields above directly into Google Sheets or Excel
- Snowflake Data Share — daily models live under
RESULTS.EZ_METRICS.ez_<venue>_metrics, with breakdowns underRESULTS.EZ_METRICS_BY_DIMENSION
