Prediction Markets

Polymarket, Kalshi, and cross-platform prediction market data.

17 tables across Polymarket (on-chain, Polygon) and Kalshi (centralized).

Polymarket Tables

TableWhat it is
agent.polymarket_tradesIndividual trade events (934M rows)
agent.polymarket_market_detailsMarket metadata (question, status, tags, links)
agent.polymarket_eventsEvent-level metadata grouping related markets
agent.polymarket_prices_dailyDaily outcome token prices
agent.polymarket_prices_hourlyHourly CLOB mid-prices
agent.polymarket_prices_latestLatest price snapshot per condition
agent.polymarket_volume_dailyPre-aggregated daily volume per market
agent.polymarket_volume_hourlyPre-aggregated hourly volume
agent.polymarket_rolling_metricsPre-computed rolling window metrics
agent.polymarket_open_interest_dailyCumulative OI (sparse — see below)
agent.polymarket_user_activityPer-user trade activity
agent.polymarket_positionsCurrent wallet positions with PnL

Kalshi Tables

TableWhat it is
agent.kalshi_market_detailsMarket metadata (55.6M rows of snapshots)
agent.kalshi_tradesIndividual trade fills (ReplacingMergeTree — use FINAL)

Cross-Platform Tables

TableWhat it is
agent.prediction_markets_dailyUnified daily volume/OI across both platforms
agent.prediction_markets_matched_marketsLLM-matched equivalent markets across platforms
agent.prediction_markets_matched_dailyDaily 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_id

Do 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_daily only 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.