How we actually know.

Every number on this site comes from the same pipeline. Here’s exactly what it does, what it excludes, and where it can be wrong.

01

The data

The archive covers 413,212 settled Kalshi markets. For each one, the YES price is sampled at three fixed moments before close — 1 hour, 24 hours, and 7 days — read from hourly candlesticks, producing 512,797 price–outcome pairs.

Price selection follows a strict order: the last traded price is preferred; a bid/ask midpoint is used only when the spread is 20¢ or narrower; wide or empty books are skipped rather than filled in, which tilts the sample toward liquid markets. No price is ever fabricated.

Not every market yields all three pairs — a horizon that predates a market’s open is structurally absent, which is why the pair count is well below three per market.

Kalshi’s listing API retains roughly 68 days of history. The archive accumulates nightly and cannot be reconstructed retroactively — markets that fall out of the window before being captured are gone for everyone.
02

Why our error bars are wider

A single game can spawn dozens of correlated markets — moneyline, spread, props, in-play ladders — all resolving on the same underlying outcome. Treating each as an independent observation overstates confidence: the effective sample size is the number of events, not the number of tickers.

We cluster observations by underlying event and compute confidence intervals with a cluster bootstrap over events (2,000 resamples), rather than a naive per-observation interval.

67.5%
Real coverage of a naive “95%” interval on clustered data
94.8%
Coverage of our cluster bootstrap on the same data

We count games, not tickers.

03

What we exclude

  • Scalar and void settlements — no binary YES/NO outcome to score.
  • Zero-volume markets — no real trading occurred.
  • Buckets under 30 distinct events — too little data to say anything honest.
  • Floor-pinned 1¢ prices in the cheapest bucket — Kalshi’s minimum tick would otherwise guarantee apparent overpricing regardless of the true rate, since a market can’t price below 1¢ even if its true probability is lower.
04

Spread vs. mispricing

Last-trade prices embed the cost of crossing the book, not just the market’s belief. On structurally two-outcome events, quoted midpoints sum to about 100¢ — validating the method — while last-trade prices on the same events sum to about 101–102¢.

That gap means trade-price deviations reflect a buying premium, not necessarily market error. Findings are labeled by price source accordingly.

05

Multiple comparisons

The results span 103 price buckets across categories and horizons. At 95% confidence, a handful of isolated interval breaches are expected by chance even if every bucket were perfectly calibrated. Headline findings are drawn only from consistent runs across adjacent buckets — never a single outlier cell.

06

Limitations

Coverage begins May 2026 and is a rolling window, not a fixed historical archive. Prices are sampled at hourly candle granularity, so intra-hour moves aren’t captured. Economics buckets are quote-dominated and marked exploratory. Current coverage spans Sports, Climate & Weather, Economics and Financials; remaining categories are accumulating nightly.

Throughout: these results describe historical aggregates, not predictions. A bucket’s past calibration is not a forecast for any individual market.

The engine’s verification suite — 8 acceptance tests including the coverage simulation above — ships in the repository. Every number here is reproducible from the published calibration tables.