Prediction market arbitrage: how Polymarket–Kalshi gaps work (and why most are not free money)
Cross-platform arbitrage, negative-risk baskets and the costs that eat them: fees, spreads, capital lock-up and resolution risk. With a worked example.
When the same question trades at different prices on Kalshi and Polymarket, you can, in theory, buy both sides and lock in a profit whatever happens. That is prediction market arbitrage. In practice the gaps that survive fees, spreads and rule differences are small and short-lived. Here is how it works and how to judge a gap.
Cross-platform arbitrage in one example
Say "Fed cuts rates in December" trades:
- Polymarket: best ask for "Yes" at 40¢
- Kalshi: best bid for "Yes" at 50¢, so "No" can be bought at 50¢
Buy "Yes" on Polymarket (40¢) and "No" on Kalshi (50¢): 90¢ for a pair that pays exactly $1 whichever way the Fed goes. Gross edge: 10¢ per pair.
Now subtract what it costs:
- Fees. Kalshi's taker fee at 50¢ is 1.75¢; Polymarket's depends on the category (fees compared). The 10¢ edge becomes roughly 7–8¢.
- Spread and depth. The best ask may only have a few hundred contracts; larger orders fill at worse prices.
- Capital lock-up. Your money sits until both markets resolve. 7¢ on 90¢ is about 8%: excellent over a week, mediocre over a year.
The risk that matters most: different rules
Two markets with the same headline can resolve differently: different sources, different deadlines, a "by" date versus an "on" date, or different treatment of a postponed event. If they do, you can lose both legs. Always read both rulebooks before treating a gap as locked in.
Negative-risk (basket) arbitrage on Polymarket
In a multi-outcome market (candidates, teams, price ranges) exactly one outcome wins, so the "Yes" prices should add up to $1. When they add up to less, say 96¢, buying one share of every outcome costs 96¢ and pays $1. Polymarket's negative-risk markets let you convert "No" shares across outcomes, which is how these baskets are usually traded. Fees, gaps between outcomes and "other" outcomes not being listed are the catches. More on these markets in how Polymarket works.
Why gaps exist at all
- Separate order books and separate user bases react to news at different speeds.
- Capital is siloed: dollars on Kalshi and USDC on global Polymarket do not move instantly.
- Not everyone can use both, which limits how fast arbitrageurs close gaps (who can use which).
How to find and judge gaps
- Compare executable prices (best ask on both sides), not last trade or mid prices.
- Include both taker fees.
- Check depth at those prices.
- Compute return to the later resolution date, ideally annualised.
- Read both rules, every time.
Our spread scanner does steps 1–4 for every pair listed on both platforms: the cost of buying Yes on one side and No on the other at the best ask, the edge after fees, return to resolution and a 24-hour history of each gap. Mid-price comparisons and a fee calculator are on the Compare page.
Arbitrage: frequently asked questions
Is prediction market arbitrage legal?
Yes. Buying on one regulated platform and selling on another is ordinary trading. Each platform's terms still apply.
How big are typical gaps?
Most cross-platform gaps on liquid markets are a few points or less, and many disappear after fees. Large gaps usually mean different rules or a thin book.
What is negative-risk arbitrage?
Buying every outcome of a multi-outcome market when their prices add up to less than $1. One outcome must win, so the basket pays $1.
Can bots do this better?
Speed matters for the biggest gaps, but most lasting gaps survive because of fees, capital lock-up and rule risk, not speed. Judging those is where a scanner helps.



