How to Arbitrage Polymarket and Kalshi: Mechanics and Fees
Arbitraging Polymarket and Kalshi against bookmakers: ROI, fees, depth. Dozor snapshot of September 6, 2026: 2,280 surebets with Polymarket, 497 with Kalshi.
Arbitraging Polymarket and Kalshi means buying a contract on one outcome on the exchange and betting on the opposite outcome with a bookmaker or on a second exchange, when the sum of inverse odds is below one. The sequence never changes: find the gap, subtract the exchange fee, check order book depth, buy the contract at the price you used. From a arbs.json snapshot dated September 6, 2026 (a 30-day window, 27 books), Dozor recorded 2,280 surebets with Polymarket and 497 with Kalshi; their median lifetime is 4.0 and 2.0 seconds.
The four-step sequence
| Step | What you do | Which number decides |
|---|---|---|
| 1. Find the gap | compare the contract price with the bookmaker odds | Σ 1/k < 1, ROI |
| 2. Subtract the fee | work the exchange taker fee out of your leg | share of the exchange leg, % |
| 3. Check the book | see how many contracts sit at the surebet price | depth in dollars |
| 4. Buy the contract | place a limit order at the price you used | fill price |
Step 1. Find the gap
A contract price on the exchange is a probability: the contract pays $1 if the event happens and $0 if it doesn't. The equivalent odds are 1 / price, so the surebet math is the usual one.
Say the “Team A wins” contract costs $0.45 (odds 1/0.45 = 2.22) and a bookmaker offers 2.10 on Team B. Sum of inverses: 1/2.22 + 1/2.10 = 0.450 + 0.476 = 0.926. It is below one, so the surebet exists and ROI before fees is about 8.0%. Leg sizes come from the surebet leg formula, and the amounts are easy to check with the calculator.
Step 2. Subtract the exchange fee
Both platforms charge a fee only to the taker — the one who fills someone else's resting order immediately. The formula is the same; the coefficient differs.
| Parameter | Polymarket (sports) | Kalshi |
|---|---|---|
| Taker fee formula | 0.05 × contracts × price × (1 − price) | 0.07 × contracts × price × (1 − price) |
| 100 contracts at $0.50 | $1.25 | $1.75 |
| 100 contracts at $0.30 | $1.05 | $1.47 |
| 100 contracts at $0.45 | $1.24 | $1.74 |
| 100 contracts at $0.90 | $0.45 | $0.63 |
| Maker (limit order) | 0, plus a rebate | 0 on standard markets |
For the example above: on a $100 bankroll the exchange leg is $48.6, which is 108 contracts at $0.45. Kalshi's fee: 0.07 × 108 × 0.45 × 0.55 = $1.88. Profit before fees is $7.99, after fees $6.11, so ROI drops from 8.0% to roughly 6.1%. On Polymarket, with a coefficient of 0.05, the fee on the same leg would be $1.34 and ROI would stay higher. Hence the practical rule: the further the contract price from $0.50, the lower the fee — at $0.10 and $0.90 it is three times lower than at $0.50.
Step 3. Check order book depth
The odds for a surebet come from the price at which the contract can actually be bought, but only a limited size sits at that price. If the book is thin, a large order fills partly at a worse price and the calculated ROI does not happen.
Look at depth in dollars at the price you need and compare it with the size of the exchange leg. The Dozor card has a “minimum exchange order book depth” filter that drops surebets you can't get into with the calculated stake. More on how an exchange diverges from a bookmaker line is in the article about Polymarket, Kalshi and bookmaker arbitrage.
Step 4. Execute the contract
Place a limit order at the price you used for the surebet, not a market order: a market order crosses the spread and pays the taker fee. A limit order that doesn't fill immediately rests in the book as a maker — on standard Kalshi markets the maker is free, and Polymarket shares part of the collected fees with makers. The exchange has one advantage over a bet: you can sell the contract before the match ends if the second leg falls through.
What breaks the arbitrage
- The second leg didn't go through. The contract is bought, the bet isn't placed or the odds moved — the exchange leg is left as a regular position with regular risk.
- The exchange rate. The exchange leg is in dollars or USDC, the bookmaker leg in rubles. The rate at the time of the trades goes into the math, and movement before the match settles is a separate risk.
- Settlement rules. The contract is defined in text: what counts as a win, what happens if the match is canceled. The bookmaker's rules for the same match may differ.
- Access and KYC. Polymarket Global is unavailable in a number of countries, including Russia (help.polymarket.com, checked October 5, 2026); Kalshi restricts event-contract trading in a list of jurisdictions that also names Russia (Member Agreement, checked October 5, 2026). Check availability before building a strategy.
How it works in Dozor
Polymarket and Kalshi are connected as regular books: their contracts are mapped to the same markets as bookmaker lines and take part in surebet search alongside them. In the card, the exchange leg shows the contract price, the equivalent odds and the order book depth. Over the snapshot window, 2,280 surebets came with Polymarket and 497 with Kalshi; their median ROI is 2.88% and 1.96% respectively, and the most frequent Polymarket partners are Olimp (695 surebets), Duel and Betcity (189 each). For a full exchange-versus-bookmaker comparison, see Polymarket or a bookmaker; for fees and withdrawal, see the dedicated breakdown.
FAQ
How many steps are there in exchange arbitrage?
Four: find the gap, subtract the fee, check order book depth, execute the contract with a limit order.
Should the exchange fee be counted separately from the odds?
Yes. The contract price gives the odds, and the taker fee of 0.05–0.07 × contracts × price × (1 − price) is deducted from profit and lowers ROI by a fraction of a percent. On a thin book, slippage is added to that.
What if order book depth is smaller than the leg size?
Either cut the bankroll to the available size or skip the surebet. A part of the order filled at a worse price will eat the calculated ROI.