Predictions · learn
How Odds Reference Collects and Validates Data
Last Updated: March 4, 2026
Odds Reference aggregates prediction market data from Polymarket, Kalshi, and Metaculus, combining it with 149,000+ historical sportsbook game records. Our pipeline collects raw price data, matches equivalent markets across platforms, validates quality through automated checks, and publishes everything through a free public dashboard.
What Data Does Odds Reference Collect?
Our dataset spans three prediction market platforms and one historical sportsbook archive. Each source serves a distinct function in our data pipeline. The table below breaks down coverage, update frequency, and primary use case.
| Source | Data Type | Coverage | Update Frequency | Primary Use |
|---|---|---|---|---|
| Polymarket | CLOB order book prices, volume, outcomes | ~27M price points, 100% active market coverage | Real-time API polling | Current market prices, volume tracking, CLOB depth |
| Kalshi | Contract prices, volume, event metadata | All active markets | Real-time API polling | Regulated US market prices, economic indicators |
| Metaculus | Community forecast probabilities | Active questions | Real-time API polling | Long-range forecasts, scientific and geopolitical questions |
| SportsBook Review Online | Historical closing lines, scores, results | ~149,000 games, 2007-2022 | Static archive | NFL, NBA, MLB, NHL, NCAAF, NCAAB historical odds |
For prediction markets, we pull directly from each platform’s public API. Polymarket data comes through its Central Limit Order Book API, giving us granular price history rather than just snapshots. Kalshi data arrives through its official public API. Metaculus provides community aggregation data through its API, though this requires authentication for full aggregation access.
Historical sportsbook data from SportsBook Review Online covers six major North American sports leagues across 15 years. This dataset enables historical odds quality analysis, vig comparisons, and closing line studies that would be impossible with live data alone.
All collected data feeds into the Odds Reference dashboard, where users can browse active markets, compare prices across platforms, and track volume trends.
How Do We Match Markets Across Platforms?
Cross-platform market matching is one of the hardest technical problems in prediction market aggregation. The same real-world event appears on Polymarket, Kalshi, and Metaculus under different titles, with different outcome labels and different resolution criteria. Our canonical market ID system handles this through a 6-tier matching pipeline.
The tiers execute in order, and the first match wins:
-
Canonical key lookup. We maintain a curated registry of canonical market keys — standardized identifiers for major events. Over 1,500 markets are currently keyed. A Polymarket contract about the 2026 midterms and a Kalshi contract about the same race resolve to the same canonical key.
-
Title alias matching. Our system stores 11,800+ title aliases that map variant phrasings to canonical markets. “Will the Fed cut rates in March?” and “Federal Reserve March 2026 rate decision” can both alias to the same underlying market.
-
Existing match check. Before creating a new canonical market, we verify the incoming market has not already been matched through a previous pipeline run.
-
Sports key matching. For sports events, we construct deterministic keys from team names, game dates, and league identifiers. ESPN schedule data syncs daily to maintain accurate game metadata.
-
Fuzzy title matching. Markets that pass through the first four tiers enter fuzzy matching with a similarity threshold of 92%. This catches minor phrasing differences while filtering out false positives. Below 92%, we found unacceptable contamination rates — similar-sounding but fundamentally different markets getting incorrectly merged.
-
New market creation. If no match exists at any tier, the system creates a new canonical market and begins tracking it independently.
Our match scanner runs every six hours to catch newly listed markets and update existing matches. You can explore cross-platform price comparisons on the platform comparison page.
How Do We Validate Data Quality?
Raw API data requires validation before it reaches users. Our data quality pipeline runs six automated SQL checks on a scheduled basis, catching problems that would otherwise corrupt analysis.
Staleness detection. We monitor the timestamp of the most recent data point from each source. If any platform’s data goes stale beyond a configurable threshold, the system logs a warning and the health endpoint reflects the issue. Metaculus aggregation data, for example, requires a valid API token — without it, the normalization pipeline silently returns zero markets.
Duplicate detection. The canonical matching pipeline can, in edge cases, create duplicate canonical entries for the same real-world event. Our quality checks scan for suspiciously similar canonical markets and flag them for manual review.
Contamination monitoring. Bad fuzzy matches at a lower threshold once allowed unrelated outcomes to leak into canonical markets. We cleaned 887 bad mappings and approximately 1,500 orphaned outcomes during a contamination audit. The 92% threshold and hard constraints on category, date, and outcome overlap prevent recurrence.
Volume validation. We compute volume deltas rather than relying on cumulative snapshots. Summing cumulative figures over time produces inflated numbers — a common analytics mistake. Our pipeline stores explicit deltas and uses those for all volume calculations.
Auto-close for expired markets. A metadata-cycle job automatically closes markets that have passed their expiration date. This prevents stale, unresolved markets from cluttering active views.
Health endpoint. Our /health API exposes real-time status for ingestion pipelines, API performance, matching quality, chain indexer status, data quality checks, and uptime. This is the first place we look when something breaks.
What Are the Limitations of This Data?
Transparency requires honesty about what our data does not cover.
API rate limits and gaps. All three platforms impose rate limits. During periods of extreme market activity, our polling frequency may miss short-lived price spikes. We do not have tick-level data for Kalshi or Metaculus — only periodic snapshots.
Resolution criteria differ across platforms. Polymarket, Kalshi, and Metaculus sometimes define “the same event” differently. A market about GDP growth might use different thresholds or measurement sources on each platform. Our matching system groups markets by event identity, but users should verify resolution criteria before assuming cross-platform prices are directly comparable.
Historical sportsbook data is static. Our SportsBook Review Online archive covers 2007-2022. Post-2022 sportsbook odds are not yet integrated due to API access limitations. Live sportsbook feeds from DraftKings and FanDuel remain deferred.
Calibration data is growing. Our accuracy analysis depends on resolved markets. Many current markets — especially long-range ones — have not yet resolved. Calibration statistics will strengthen over time. For our current calibration methodology and results, see our prediction market accuracy analysis.
Metaculus is not a market. Metaculus uses reputation-weighted community forecasts, not financial contracts. Including it alongside real-money platforms provides useful signal, but the incentive structures are fundamentally different. Metaculus forecasters risk reputation, not capital.
For a deeper look at how prediction markets compare to traditional platforms, see our Polymarket profile and Kalshi profile.
Key Takeaways
- Our dataset spans 27M+ price points across Polymarket, Kalshi, and Metaculus, plus 149,000+ historical sportsbook games from SportsBook Review Online.
- Cross-platform matching uses a 6-tier pipeline with a 92% fuzzy threshold, 1,500+ canonical keys, and 11,800+ title aliases to accurately link equivalent markets.
- Automated quality checks catch staleness, duplicates, contamination, and volume calculation errors before data reaches users.
- Limitations exist and we disclose them. API gaps, differing resolution criteria, static historical data, and growing calibration samples all affect what conclusions you can draw.
- All data is free and accessible through the Odds Reference dashboard.