Cross-Platform Arbitrage in Prediction Markets: How to Find and Trade Price Gaps
Two platforms. Same event. Different prices. One of them is wrong.
When Kalshi is pricing a market at 65 cents and Polymarket is pricing the same event at 52 cents, that is not normal market noise. That is a 13-cent spread on a binary instrument. In fixed income, a gap that wide would attract every arb desk on the street within minutes. In prediction markets, these gaps persist for hours — sometimes days — because the two platforms operate in different regulatory environments, attract different trader bases, and draw liquidity from different sources.
That persistence is your opportunity.
Why the Gaps Exist
Different liquidity pools. Kalshi is a CFTC-regulated US exchange. Polymarket runs on a crypto-based infrastructure and is geo-restricted for US traders. Capital does not flow freely between them. An arb trader has to hold accounts on both platforms, maintain funding in both, and understand the resolution mechanics on both. Most traders do not do this, which means the arbitrage is not instantly competed away.
Different trader bases. Kalshi attracts more institutional and finance-adjacent traders. Polymarket has a larger international retail base. These groups form different views on the same event — and their combined market-making creates different price discovery paths. The same macroeconomic outcome will be processed differently by a Kalshi desk trader and a Polymarket retail participant.
Timing and information asymmetry. When a news event hits, the trader base that is more active at that moment moves the price first. If breaking news drops at 3 AM ET, Polymarket may move before Kalshi because its international user base is awake and trading. That creates a temporary gap that closes as US traders wake up and rebalance.
Regulatory differences. Kalshi contracts sometimes have resolution criteria that differ from comparable Polymarket contracts. What looks like the same event might resolve on different data releases, different dates, or different definitions of the outcome. This is not a true arb — it is a different contract.
KL Divergence: A Better Gap Detector
The naive approach is to look at raw price differences. 65 cents minus 52 cents equals 13 cents. That is a gap.
But 13 cents at 65¢/52¢ is a very different situation from 13 cents at 90¢/77¢. In the first case, both platforms are in a range where probability estimates are genuinely uncertain. In the second case, one platform is pricing an extremely likely outcome and the other is significantly less certain — and the information content of that disagreement is larger.
KL divergence captures this. It measures the information-theoretic distance between two probability distributions. For binary markets, it is the symmetric average of KL(P‖Q) and KL(Q‖P). A symmetric KL above 0.15 means the two distributions are meaningfully inconsistent — enough that at least one price is likely wrong.
The advantage over raw price difference: KL divergence is calibrated to the probability space. A 5-cent gap at 50¢/45¢ has a much lower KL than a 5-cent gap at 95¢/90¢. The high-probability gap is harder to justify and more likely to represent a real mispricing.
Run the KL-Divergence Arb Detector on any two markets.
The Three Checks Before You Trade
Finding a gap is the easy part. The work is in verifying the arb is real.
Check 1: Identical resolution criteria. This is the critical one. Read both contracts word for word. Not the title — the full resolution text. "Will GDP grow more than 2% in Q1 2026?" sounds identical on Kalshi and Polymarket. But if Kalshi resolves on the advance estimate and Polymarket resolves on the second revision, you are not holding two sides of the same bet. You are holding two different bets that happen to be titled similarly. That is not an arb — it is two separate positions that can diverge at resolution.
Check 2: Liquidity on both sides. A flagged arb is worthless if you cannot execute. Check the order book depth on both platforms. If you can buy 100 contracts at the flagged price but the next 400 are significantly worse, your effective entry price is higher than the screen price. The arb math needs to work at the prices you can actually fill, not the prices that triggered the alert.
Check 3: Timing and expiry alignment. Confirm both contracts expire on the same event date. A small difference in expiry can make two contracts on the "same" event behave very differently as the resolution date approaches. Also check for any pending corporate actions, economic revisions, or extraordinary events that could affect one contract but not the other.
The Two Arb Structures
Once you verify the gap is real and executable, you have two structural trades depending on the specific prices.
Simple directional arb. Platform A has YES at 65 cents. Platform B has YES at 52 cents. You buy NO on Platform A (effectively paying 35 cents for a contract that pays $1 if it resolves NO) and YES on Platform B (paying 52 cents for a contract that pays $1 if it resolves YES). If YES resolves, you collect $1 on Platform B and lose $0 on Platform A. Net: $1.00 − $0.52 − $0.35 = +$0.13. If NO resolves, you collect $1 on Platform A and lose $0 on Platform B. Net: $1.00 − $0.35 − $0.52 = +$0.13. Either way, you make 13 cents per share. That is the locked spread.
Wait — you do not lose the premium on the other side because you bought the opposite outcome. This works because YES + NO on the same contract always = $1.00 at resolution. The math only works when buying YES on one platform and NO on the other totals less than $1.00.
Convergence trade. If you cannot execute both sides simultaneously, you take the side you believe is more wrong and treat it as a directional trade with edge. Platform A at 65 cents and Platform B at 52 cents means one of them is mispriced. If you believe 52 is closer to correct, you sell YES on Platform A (buy NO at 35 cents). If you believe 65 is closer, you buy YES on Platform B at 52 cents. This is not a riskless arb — it is a high-edge directional trade based on cross-platform information.
What Counts as a Real Edge
Not every KL-flagged gap is tradeable. The threshold is whether the spread net of costs — fees, bid-ask on both sides, funding friction — is still positive. On Kalshi, fees are approximately 2 cents per contract per side. On Polymarket, fees vary by market. A 13-cent gross spread might net to 7 or 8 cents after all-in costs. That is still excellent. A 4-cent gross spread might be negative after costs. Be precise.
The other cost: your time and capital are locked until resolution. A 13-cent arb on a contract that resolves in 6 months is not as attractive as the same spread on a contract resolving in 2 weeks. Annualize the return. A locked 13-cent spread on a $0.65 / $0.52 contract pair over 6 months is roughly 40% annualized on the capital tied up. Exceptional. The same spread over 3 years is not worth the capital tie-up.
Find the gap. Verify the gap. Trade the gap. The market is doing the talking.