Prediction Market Arbitrage: How It Actually Works
A YES share and a NO share on the same event always pay out $1 combined when one side wins. If you can buy both sides across two venues for less than $1 total, after fees, you've locked a riskless profit no matter which side resolves true. That's prediction market arbitrage in one sentence — and the "after fees" clause is where most of the apparent opportunities die. If you haven't traded either venue before, start with the mechanics in what prediction markets are and how price equals probability before layering arbitrage math on top.
The Core Mechanic
Say Kalshi prices YES on an event at $0.55 and Polymarket prices NO on the same event at $0.40 (illustrative numbers, not a live quote). Buy both: you've spent $0.95 to guarantee $1.00 back regardless of outcome. That $0.05 gap is your gross edge before fees, slippage, and execution risk. The trade only works if the two contracts resolve on the exact same criteria — same event, same deadline, same data source determining the outcome. A subtle wording difference between venues can turn what looks like a locked spread into two independent bets.
This is different from directional trading, where you're betting the market's probability estimate is wrong. Arbitrage doesn't care what the "true" probability is — it only cares that the combined price of both sides is under $1. For the venue-specific mechanics on each side, see how Polymarket arbitrage works and how Kalshi arbitrage works.
Fee Math on Both Legs
Gross spread means nothing until you subtract what each venue charges to enter. Polymarket introduced category-based taker fees in 2026 — makers are never charged, and takers pay a fee that's symmetric around the 50-cent mark and tapers toward the extremes. Per 100 shares, the max taker fee runs: Sports $0.75, Politics/Finance/Tech $1.00, Economics/Culture/Weather/Other $1.25, Crypto $1.80. Geopolitical and world-events markets are fee-free. Full current schedule: docs.polymarket.com/trading/fees.
Kalshi's taker fee follows a formula: round_up(0.07 × C × P × (1−P)), where C is contracts and P is price in dollars. Simplify it to 7¢ × contracts × P × (1−P). At the worst point, P = $0.50, on 100 contracts that's 0.07 × 100 × 0.25 = $1.75. Near the edges it drops fast — 100 contracts at $0.90 costs 0.07 × 100 × 0.90 × 0.10 = $0.63. Kalshi's maker fee is 25% of the taker fee. Current schedule: kalshi.com/fee-schedule.
| Scenario | Polymarket cost (100 shares) | Kalshi cost (100 contracts) |
|---|---|---|
| Price near 50¢, Politics category | up to $1.00 taker fee | up to $1.75 taker fee |
| Price near 90¢/10¢ | fee tapers toward edges | $0.63 taker fee |
| Crypto category (Polymarket only) | up to $1.80 taker fee | n/a |
| Maker order (both venues) | never charged; 25% of taker fees rebated daily (20% crypto) | 25% of taker fee |
Run both legs' fees before you size a trade. A spread that looks like 5 cents can shrink to 2 cents or less once both taker fees land near the 50-cent midpoint — where fees are highest on both venues simultaneously. This is exact math you should be doing per-trade, not per-strategy; see a full arbitrage fee-math breakdown for the worked formulas.
Slippage: The Quote You See Isn't the Fill You Get
Top-of-book price only tells you the cost of the first share. Order books on both venues thin out fast past the best bid/ask, especially on lower-volume markets. If you need to buy 500 shares to make the arbitrage worth the effort, and only 80 shares are resting at your target price, the next chunk fills at a worse price — eating into or erasing your edge before you've even placed the second leg. Check depth on both sides of the trade, not just the headline quote, before committing size.
Execution Risk: The Two Legs Don't Fill Together
You are not trading on one exchange with atomic settlement — you're trading on two separate platforms with two separate order books, two separate wallets or accounts, and no mechanism linking the trades. Place the Kalshi leg, and by the time you've placed the Polymarket leg, the price you were counting on may have moved or the depth you saw may be gone. Fill one side and miss the other, and you're no longer arbitraging — you're holding a naked directional position you didn't intend to take. This is the single biggest reason "free money" spreads don't survive contact with real execution: the gap between seeing the opportunity and completing both legs is where most of the theoretical edge disappears.
Capital Lockup and Settlement Timing
Both legs tie up capital until the market resolves — which for a contested Polymarket outcome can mean a 4–7 day UMA dispute escalation on top of the event itself playing out. That's capital you can't redeploy elsewhere. Withdrawal costs matter too: Polygon withdrawals typically run under $0.01, but bridging funds back to Ethereum can cost $1–$20+ depending on congestion. None of this kills a real arbitrage opportunity, but it does mean the annualized return on a multi-day locked position is lower than the raw spread suggests.
When the Spread Isn't Real
Most price gaps that look like arbitrage on a quick glance fall apart under closer inspection. The two most common false positives: the contracts sound identical but resolve on different criteria — one venue might settle against a different data source or a different cutoff time than the other — and the displayed price is stale, meaning by the time you'd actually get filled the gap has already closed. A genuine arbitrage opportunity survives three checks: identical resolution wording on both venues, enough depth on both books to fill your intended size without material slippage, and a net-of-fee spread wide enough to still be positive after both taker fees land. If a spread fails any one of those checks, it's not arbitrage — it's a directional bet wearing an arbitrage costume.
Spotting a real cross-venue spread — one where fees, depth, and resolution wording all line up — takes watching both order books at once, with fee math applied automatically rather than eyeballed. PolyMarketMaker's predictive arbitrage scanner tracks Polymarket US, Polymarket global, Kalshi, and PredictIt simultaneously and applies per-market fee math to every flagged spread, so you're comparing net edge, not gross quotes. Simulation $149/mo, Live Trading $299/mo.
FAQ
What is prediction market arbitrage?
Taking offsetting positions on the same real-world outcome across two venues — buying YES on one and NO on the other — when the combined cost is less than the guaranteed $1 payout, after fees.
Is prediction market arbitrage free money?
Rarely once costs are counted. Polymarket's taker fee runs up to $1.80 per 100 shares on crypto markets; Kalshi's peaks at $1.75 per 100 contracts at 50 cents. Slippage and capital lockup further erode most visible spreads.
Do Polymarket and Kalshi ever price the same event differently?
Yes — different user bases and liquidity depth mean the same event can carry different implied probabilities on each venue at the same moment, especially during fast-moving news.
What's the biggest risk in cross-venue arbitrage?
Execution risk and resolution mismatch. A delay between filling each leg, or a subtle wording difference in how each venue resolves the contract, can turn a hedge into an unintended directional bet.
Stop eyeballing spreads across tabs
Real arbitrage math needs live depth on both venues and fees applied per market, not a mental estimate. PolyMarketMaker's scanner watches Polymarket and Kalshi side by side and surfaces net-of-fee edge in real time. Simulation $149/mo, Live Trading $299/mo.
This article is for educational purposes only and is not financial advice. Trading involves risk of loss.