The pitch is seductive: the same MLB game has a moneyline on Polymarket and on Kalshi. If the two prices ever diverge, you buy the cheap one, sell the rich one, and collect the difference risk-free. Cross-venue arbitrage, all day long.
We built the dataset to test exactly this — a matched book: sampled top-of-book observations for the same dated game on both venues, stitched onto one timeline. Settled games carry outcomes; unresolved games remain explicitly unlabeled. The original analysis measured quoted cross-spreads under declared cost assumptions. It did not verify simultaneous fills. The figures below are a historical June summary, not a current venue-wide opportunity rate.
First, the sample-size trap
Our matched MLB book over June 21–23, 2026 has 57,757 rows. It would be easy — and dishonest — to call that the sample size. It isn't.
Those 57K rows are mostly the same book re-snapshotted while nothing changed. Collapse to distinct quote-states and you have 3,198 of them — just 5.5%. Time-weight the exposure and you have roughly 530 observation-hours across 30 games (29 settled). These are distinct denominators: rows, quote-states, observation-hours and games. None is automatically an independent sample size. Every statistic below is computed on quote-states and time-weighted exposure, never raw rows. If a vendor quotes you "57,000 data points of arbitrage analysis," now you know what that actually means.
The mid-gap looks juicy. The quoted cross-spread doesn't.
Polymarket and Kalshi mids agree to within 0¢ median / 0.53¢ mean — they track each other at 0.9964 correlation. So far, no free money: a tiny average gap is what an efficient pair of venues should look like.
The mistake is to "trade the mid gap." You can't trade the mid — you cross the spread on both venues. The quoted cross-spread before fees, size and simultaneous-execution checks is:
edge = max(kalshi_bid − poly_ask, poly_bid − kalshi_ask)
Measured that way, the median quoted edge is negative (~−1¢): on a typical quote-state the displayed spread starts against you. After an assumed 3–5¢ round-trip cost floor, a positive quoted opportunity appears in only 0.39% of time-weighted exposure — and 92.8% of those rare >3¢ windows disappear by the next ~30-second sample. This dataset does not prove those quotes were simultaneously fillable.
Neither venue is even systematically sharper: per-venue Brier scores are 0.2141 vs 0.2142 — a tie to four decimal places.
Where the big gaps come from (and why they're a mirage)
The largest cross-venue gaps in the data — 10¢ to 37¢ — look like the jackpot. Stale quotes and capture alignment are possible explanations, but the quote-only analysis does not identify the cause of every gap or establish whether a particular order could have filled. A backtest must not book the displayed difference as verified profit.
What we're not claiming
- This is 3 regular-season MLB days only. Do not generalize to other sports, seasons, or high-volatility moments — those may behave differently, and we'll publish them as the archive grows.
- The calculation uses top-of-book only. Available size, deeper levels and fills were not established. Larger-order simulated cost requires a separate depth calculation.
- The ~30s capture cadence caps the persistence result — a real-time feed might show even shorter arb lifetimes.
- The 3–5¢ cost is an assumed floor, not a fill-by-fill measurement.
Why an honest "no" is worth paying for
This is the whole value proposition of the matched book inverted. This small study illustrates why a mid-price gap is insufficient to evaluate a trade. It does not establish what most traders experience or a universal absence of arbitrage.
Reproducing the multi-game figures requires the original input window and analysis code. The free score-synced matched-book sample is on Hugging Face and Zenodo (DOI 10.5281/zenodo.20816908) — one game per file, both venues, winner labeled. Use the sample to inspect the quoted-spread calculation. It is not the entire three-day study. The matching schema permits nearest-time matches, including future observations; a causal analysis needs a declared backward-only rule and quote-age checks.
For the capture method, see how to get historical Polymarket order-book data. To inspect the data used for this test, see the Polymarket–Kalshi MLB matched book.