Prediction Markets
Polymarket, Kalshi, and cross-platform prediction market data.
17 tables across Polymarket (on-chain, Polygon) and Kalshi (centralized).
Polymarket Tables
| Table | What it is |
|---|---|
agent.polymarket_trades | Individual trade events (934M rows) |
agent.polymarket_market_details | Market metadata (question, status, tags, links) |
agent.polymarket_events | Event-level metadata grouping related markets |
agent.polymarket_prices_daily | Daily outcome token prices |
agent.polymarket_prices_hourly | Hourly CLOB mid-prices |
agent.polymarket_prices_latest | Latest price snapshot per condition |
agent.polymarket_volume_daily | Pre-aggregated daily volume per market |
agent.polymarket_volume_hourly | Pre-aggregated hourly volume |
agent.polymarket_rolling_metrics | Pre-computed rolling window metrics |
agent.polymarket_open_interest_daily | Cumulative OI (sparse — see below) |
agent.polymarket_user_activity | Per-user trade activity |
agent.polymarket_positions | Current wallet positions with PnL |
Kalshi Tables
| Table | What it is |
|---|---|
agent.kalshi_market_details | Market metadata (55.6M rows of snapshots) |
agent.kalshi_trades | Individual trade fills (ReplacingMergeTree — use FINAL) |
Cross-Platform Tables
| Table | What it is |
|---|---|
agent.prediction_markets_daily | Unified daily volume/OI across both platforms |
agent.prediction_markets_matched_markets | LLM-matched equivalent markets across platforms |
agent.prediction_markets_matched_daily | Daily comparison for matched pairs |
Key Concepts
Join key: condition_id links all Polymarket tables together. market_ticker links Kalshi tables.
Volume: always one-sided (Paradigm methodology). Each OrderFilled event counted once with account=maker.
Prices: represent implied probability (0–1 range, where 0.65 = 65% chance).
Market deduplication: polymarket_market_details has two rows per condition (one per outcome). Filter outcome_index = 0 for one row per market.
Polymarket OI is Sparse
polymarket_open_interest_daily only has rows on days with OI-changing events (splits, merges, redemptions). To get the latest OI:
SELECT condition_id,
argMax(open_interest_usd, block_date) AS latest_oi
FROM agent.polymarket_open_interest_daily
GROUP BY condition_idDo not filter HAVING latest_oi > 0 — neg-risk markets have legitimately negative OI on individual conditions.
Good to Know
- Polymarket data lag: ~1 hour. Kalshi lag: ~6 hours.
- Kalshi hierarchy: series → events → markets. MVE (parlay) markets skip the event layer.
prediction_markets_dailyonly includes dates where both platforms have data.- Matched market pairs have confidence scores (75–100). Filter 90+ for highest quality.
- Kalshi trades are anonymous (no wallet attribution). Polymarket uses proxy wallet addresses.