// QUANT STRATEGIES
Cross-venue arbitrage between Kalshi and Polymarket
2026-07-16 · Mithril
The most obvious trade in prediction markets: the same real-world event trades on Kalshi and Polymarket at different prices, so you buy YES on the cheap venue and NO on the expensive one, lock in the difference, and wait for resolution. Whichever way the event goes, one leg pays $1 and the other pays zero; if the two prices summed to less than $1, the difference is yours.
That's the theory. In practice most gaps you'll see on a screen are not free money — they are compensation for fees, depth, resolution risk, or the operational friction of running money on two very different venues. This post walks through the mechanics, then through everything that eats the naive version of the trade.
The basic structure
Suppose an event trades at 44¢ YES on Kalshi and the equivalent Polymarket YES token trades at 0.49. You:
- Buy YES on Kalshi at 44¢.
- Buy NO on Polymarket at 0.51 (equivalently, sell YES at 0.49).
Total cost: $0.95 per $1.00 of guaranteed payout — a 5¢ gross edge, about 5.3% on capital deployed, realized at resolution regardless of the outcome.
Gross. Now the deductions.
Deduction 1: fees
Kalshi's standard taker fee is a formula, not a flat rate:
fee = 0.07 × contracts × price × (1 − price) (price in dollars)
rounded up to the next cent, and it peaks at 50¢ — exactly the region where cross-venue gaps tend to appear. For our example leg, 100 contracts at 44¢:
fee = 0.07 × 100 × 0.44 × 0.56 = $1.7248 → $1.73
That's roughly 1.7¢ per contract, so the 5¢ gross edge is down to ~3.3¢ before we even look at Polymarket. Polymarket charges no exchange trading fee on most markets, but the costs there are the spread you cross and Polygon gas on settlement — small per trade, not zero, and the spread is the big one in a thin book. Run your own numbers in the arbitrage calculator and the Kalshi fee calculator; the full fee treatment is in Kalshi fees explained.
Note the maker escape hatch: resting orders on Kalshi generally pay no trading fee on most markets. An arb executed by posting on Kalshi and taking on Polymarket has materially better economics than crossing both books — at the cost of fill uncertainty, which we'll get to.
Deduction 2: depth
The 44¢ / 0.49 prices you saw were top-of-book quotes. How many contracts were actually there? In prediction markets the honest answer is often "a few hundred dollars' worth." The arb exists at the touch and disappears two levels down. Sizing the trade means walking both books level by level and finding where the marginal pair of prices stops summing to less than $1 after fees — usually a far smaller size than the headline gap suggests. More on this failure mode in slippage in thin prediction markets.
Deduction 3: it might not be the same market
This is the one that turns "arbitrage" into "losing both legs." Two markets on nominally the same event can differ in:
- Resolution criteria. One venue resolves on an official government statistic, the other on a news-organization call. In a contested or ambiguous outcome these diverge — and a divergent resolution means both of your "hedged" legs can lose.
- Deadlines and cutoffs. "By March 31" on one venue vs "before April 1, 11:59 PM ET" on the other sounds identical until an announcement lands in the gap.
- Thresholds and rounding. "CPI above 3.0%" vs "CPI 3.0% or higher" are different contracts when the print is exactly 3.0.
Reading both rule sets, every time, is not optional. Mapping which Kalshi ticker corresponds to which Polymarket condition ID is itself unsolved at the venue level — there is no shared identifier — which is the problem unified market IDs exist to fix.
Deduction 4: legging risk
You cannot fill both legs atomically. Between your Kalshi fill and your Polymarket order landing, the price can move — and it moves against you more often than chance suggests, because the same news that created the gap is being traded by others. If leg two slips from 0.51 to 0.55, your 3.3¢ post-fee edge is now a coin flip held to resolution.
Standard mitigations:
- Fill the less liquid leg first; the deep side is more likely to still be there.
- Use limit orders with a max-slippage bound on leg two, and have a plan for the single-legged state (hold, or unwind at a known cost).
- Automate. A human tabbing between two browser windows is legging risk personified.
Deduction 5: capital and account constraints
The unglamorous deductions:
- Two regulatory regimes. Kalshi is a CFTC-regulated US exchange with KYC and US-person eligibility; Polymarket's access rules and permitted jurisdictions differ and have shifted over time. Whether you can legally and practically hold funded accounts on both is a question to resolve before building anything — check each venue's current terms rather than relying on a blog post.
- Capital is trapped until resolution. Both legs post full collateral, and a 3¢ locked edge on a market that resolves in four months is a poor annualized return. The best arbs are short-dated.
- Balances live in USD on one venue and USDC on Polygon on the other. Rebalancing between them has its own cost and delay.
The worked example, end to end
100 contracts, gap as above, taking on both venues:
| Item | Amount |
|---|---|
| Buy 100 YES on Kalshi at 44¢ | −$44.00 |
| Kalshi taker fee (0.07 × 100 × 0.44 × 0.56, rounded up) | −$1.73 |
| Buy 100 NO on Polymarket at 0.51 | −$51.00 |
| Polygon gas (varies; assume well under a dollar) | −$0.10 |
| Payout at resolution | +$100.00 |
| Net locked profit | ≈ $3.17 |
About 3.2% on ~$97 of capital until resolution, assuming perfect fills at the touch, correct market mapping, and no legging slip. Whether that's attractive depends entirely on time-to-resolution and how much size the books actually supported.
Making it systematic
One-off arbs are found by luck; a book of them is found by infrastructure: a live mapping of equivalent markets, fee-adjusted price comparison on every pair, depth-aware sizing, and fast two-legged execution with slippage bounds. That stack is most of what smart order routing does — and it's the layer Mithril provides as a service: one API over both venues with unified market IDs, fee-aware routing, server-side slippage bounds, and an execution receipt on every fill so you can verify what the trade actually cost. If you'd rather not build the plumbing, the docs are here.
Cross-venue price gaps are real and recurring. The edge goes to whoever prices the whole trade — fees, depth, rules, and legs — not the screen gap.
Fees, market rules, and access requirements change. Details above reflect public documentation as of July 2026 — always confirm against the venues' own docs before trading real money.
One API + MCP for Kalshi and Polymarket
Fee-aware routing, unified market IDs, and hard server-side risk limits — live today, free during beta.
Keep reading
- Quantitative trading on prediction markets: a field guide
- Kalshi fees explained (with worked examples)
- Unified market IDs: mapping the same event across Kalshi and Polymarket
- What is smart order routing? Applied to prediction markets
- Slippage in thin prediction markets and how to avoid it
Terms used