FanaticsMarket Intelligence
Loading
Kalshi Polymarket Compared

What this is

Kalshi and Polymarket publish the same MLB games under different market types, different team codes and different line conventions. This reconciles them into one schema and reports, per book, whether the two venues currently agree on a price.

How a quote gets here

  1. Identity first. All 30 MLB clubs are minted as canonical urn:machina team records, then the day's fixtures on top of them. A market can only attach to a team or game that already exists.
  2. Both venues ingested through one Sports Skills connector. Kalshi ships no market type and no team name — both are parsed out of the ticker.
  3. Matched on four keys: game, market type, line and side. Kalshi quotes an integer strike, Polymarket a half line; "9 or more runs" and "over 8.5" are the same book, so lines are normalized before comparison.
  4. Compared, then published as one document the front end reads. All logic lives in the pod, so the same payload can serve a widget or a webhook.

Known gaps

  • No latency benchmark This detects that the venues have converged. It does not yet measure how much earlier that is than your existing feed — the comparison needs one re-open timestamp from your side.
  • No suspension state We know which quotes agree, not which markets are currently off-site. Until that is wired, this reads "these agree", not "re-open these".
  • Cadence One-minute refresh while a game is in play, five minutes around the slate, hourly otherwise. Enough to build price history and prove the mechanism; a production in-play trigger wants sub-minute polling.
  • Coverage is not symmetric Comparison needs both venues on the same book. Team totals and home-run props are Kalshi-only in every slate observed, so no corroboration exists for them — absent rather than missing.
  • Fanatics IDs are placeholders Derived deterministically from the canonical URN. They swap for real IDs without any downstream change.

What we need from you

One re-open timestamp for any MLB market, and whatever you use for market suspension state. Those two close the gap between a signal that is interesting and a number that is bankable.