Event-contract guide
Is Kalshi–Polymarket arbitrage actually profitable?
The pitch writes itself: the same contract trades at 56c on one venue and 52c on the other, so buy the cheap side, sell the dear one, collect the difference. We built a screener on that premise, then instrumented it to record what the gap was actually worth after costs. The answer was not the one we wanted, so this guide gives you the method and the numbers rather than the pitch.
1. The advertised gap is not the tradeable gap
Almost every published comparison subtracts one venue's quoted price from the other's. That overstates the opportunity, because the two numbers are not the same kind of number. Kalshi's quoted YES is an ask — what you'd pay to buy right now. Polymarket's is derived from its outcome prices, which sit closer to the mid. Comparing an ask to a mid builds a gap out of one venue's half-spread before any trade exists.
2. You cross a spread on each side, not one
An arbitrage needs two fills. You lift the ask on the cheap venue and hit the bid on the expensive one, so you pay half the spread twice — once at each book. Event-contract books are thin: a one-to-two cent spread per side is normal, and on a quiet market it is wider. Subtract both before calling anything an edge.
3. Then Kalshi's fee lands on top
Kalshi charges roughly 0.07 × price × (1 − price) per contract, rounded up to the next cent. That is largest exactly where these markets live — near even odds — and it is a cost you pay to enter, not a spread you might get lucky on. Near 50c it is about two cents. An 'edge' smaller than the fee is a loss wearing the wrong sign.
4. So the honest test is a three-way subtraction
Take the price you would truly pay on one venue, the price you would truly receive on the other, and subtract the fee. What remains is the realized edge. This is the number we record — not the headline gap — every five minutes on every matched pair, so the question stops being arguable.
5. What we found
Across every matched game we've tracked, the average realized edge is negative: the typical cross-venue gap does not survive the two spreads, let alone the fee. A small minority of readings clear the books; a far smaller share clear the fee as well. The measured figures update on this page and on our research page, including if they ever start disagreeing with this paragraph.
6. Why the gap persists if it isn't free money
Because it isn't free money — that is the whole answer. A gap that costs more to capture than it pays is not an inefficiency any arbitrageur will close, so it can sit there indefinitely. It is a real difference in where two crowds think the price is, and it is informative. It is simply not a trade at retail size and retail costs.
7. What the gap is still good for
As a signal rather than a trade. A venue that has moved while the other hasn't is a venue that has seen something, and the divergence tends to resolve as game time approaches. If you already have a view, watching which side moves first is useful context. Treat it as a place to look, not an order to send.
See the numbers live
Polykal runs this exact math continuously — de-vigged sharp consensus vs Kalshi prices for every NFL and CFB game, plus cross-platform spread alerts via Discord + webhooks.
Create an account →Free while paid alerts are still closed. Paste any Kalshi or Polymarket link and we'll find its counterpart and what the gap clears after costs, and keep a watchlist of the markets you care about.
Frequently asked
So cross-venue arbitrage never works?
That is not what the data says, and we would rather be precise. It says that at retail size, on the games and window we've measured, the average gap does not survive the two spreads plus the fee, and only a small fraction of readings clear even the spreads. Bigger, faster, or fee-advantaged participants face a different cost structure than the one we measured.
Does a bigger advertised gap fix it?
Less often than you'd expect, because the costs scale with the same thing the gap does — a wide gap usually appears on a thin, wide market where both spreads are also wide. We've recorded pairs advertising a healthy gap whose realized edge was not merely smaller but the opposite sign.
How much data is this based on?
The live counts are shown above: readings taken every five minutes, the number of distinct games behind them, and the window they span. It is a real sample from a short period weighted toward one sport, which makes it a strong hint about these venues in this period rather than a permanent law.
Why publish research that undercuts your own product?
Because the alternative is selling alerts on a number we know is misleading. Polykal shows the realized edge after costs on every surface — the board, the alerts, this page — precisely so you can see when there is nothing worth acting on. A screener that only ever says 'opportunity' is a screener you cannot trust when it matters.
Impersonal market analytics and education computed from public prices. Nothing on this page is investment, betting, legal, or financial advice, or a recommendation to buy any contract. Polykal is not affiliated with Kalshi, Polymarket, or any sportsbook.