Prediction markets pay out at $1.00 on the winning side of a binary event. That's the rule. Every contract resolves either to $1.00 or to zero - no exceptions, no partial outcomes, no ambiguity about the settlement amount.
That rule creates an opportunity: if you can buy YES on one platform and NO on another at a combined cost below $1.00, you're guaranteed a profit regardless of outcome. The event settles. One of your positions collects $1.00. Your other position expires at zero. You come out ahead on every scenario, because you already locked in the positive gap at entry.
This is prediction market arbitrage. The profit isn't contingent on predicting what happens next. It's contingent on finding two platforms that disagree on the price of the same outcome.
How the math works
Take any binary event. Let p_A be the YES price on Platform A and p_B be the YES price on Platform B.
If p_A < p_B, the setup is:
- Buy YES on Platform A at
p_A - Buy NO on Platform B at
1 − p_B - Total cost:
p_A + (1 − p_B) = 1 − (p_B − p_A)
Since p_B > p_A, the combined cost is below $1.00. The spread between the two platforms is your locked-in gross profit:
gross_profit = p_B − p_A
gross_ROI = (p_B − p_A) / (p_A + 1 − p_B)
If YES resolves: your YES position pays $1.00, your NO position expires worthless. Net: $1.00 minus total cost.
If NO resolves: your NO position pays $1.00, your YES position expires worthless. Net: $1.00 minus total cost.
Same result either way. That's the hedge. The outcome doesn't matter.
A worked example
Event : Will the Federal Reserve cut rates before June 2026?
- Polymarket YES: 55¢
- Kalshi YES: 64¢
Position:
- Buy 100 YES contracts on Polymarket at 55¢ - $55.00
- Buy 100 NO contracts on Kalshi at 36¢ - $36.00
- Total cost: $91.00
Guaranteed payout when the market resolves: $100.00
Gross profit: $9.00. Gross ROI: 9.9%.
That 9¢ spread exists because Polymarket's user base and Kalshi's user base have reached different prices for the same question. One community sees a 55% chance the Fed acts. The other sees a 64% chance. You don't need a view on which is right. You're being paid to close the pricing gap between two platforms that can't agree.
Fees change the picture
$9.00 gross profit has to clear both fee legs before you're in the black.
Polymarket's Politics fee formula:
fee = contracts × feeRate × price × (1 − price)
At 55¢ on 100 contracts (feeRate = 0.040): 100 × 0.040 × 0.55 × 0.45 = $0.99
Kalshi's taker fee formula:
fee = 0.07 × contracts × price × (1 − price)
At 36¢ on 100 contracts: 0.07 × 100 × 0.36 × 0.64 = $1.61
Total fees: $2.60. Net profit: $6.40. Net ROI: 7.0%.
The chart below shows how the guaranteed $100 payout decomposes across the two position costs, fee drag, and net profit - and how net ROI scales with spread size at different price midpoints.

Prediction market arbitrage - trade breakdown and net ROI curve
At a 50¢ midpoint on the Polymarket Politics + Kalshi Taker combination, the break-even spread is roughly 2.75¢. Any spread below that produces negative net ROI after fees - it looks like profit on the surface but isn't once the fee legs are deducted. A system with a defined minimum ROI threshold - Polytrage filters at 0.5% net - avoids entering positions where the gross spread is real but the net return isn't.
Why the same event prices differently
If markets were fully efficient and capital moved freely between platforms, spreads would close immediately. They don't, for four reasons.
Liquidity fragmentation. Polymarket and Kalshi run separate order books with no direct connection. A wave of buying on Polymarket pushes YES up without any automatic pressure on Kalshi's price. The gap can persist until external capital comes in to close it - which only happens when someone actively decides to place the trades.
Different user bases. Kalshi attracts financially-oriented, primarily US-based traders operating in a regulated exchange environment. Polymarket's audience is broader, global, and crypto-native. A Fed rate decision is the kind of event both platforms cover in depth - and the two communities may weight different economic data differently, or carry different structural biases about what central banks are likely to do. Persistent soft disagreement is the result.
Regulatory access. Not everyone who could arbitrage these platforms is able to. State-level restrictions, KYC requirements, and crypto onboarding friction limit the pool of capital that can freely deploy on both platforms simultaneously. A smaller active arbitrage pool means windows close more slowly than they would in a fully open market - spreads that should last seconds can sit for minutes or longer.
Information flow timing. News hits Polymarket first on some events, Kalshi first on others. The platform that reprices first creates the spread. The other follows on a lag. In fast-moving markets - when a Fed statement drops, or an unexpected jobs report lands - that lag is measurable and tradeable before both order books catch up to each other.
Is this actually risk-free?
The math is airtight. Execution introduces caveats.
Execution risk. Placing the YES order and then failing to fill the NO order at the expected price leaves you with a naked directional position you didn't intend. Manual execution is unreliable for this reason. Automated simultaneous order placement reduces the exposure, but slippage on the second leg can still shrink or eliminate the spread if prices moved between the two fills.
Resolution disputes. Both platforms resolve markets consistently in the vast majority of cases. But if one platform resolves YES and the other resolves NO on the same event - due to ambiguous market wording, contested data, or platform-specific interpretation rules - both legs lose. This is rare. It isn't impossible, and any serious model of the strategy accounts for it.
Partial fills. Order books have depth limits. If you can't buy the full quantity at the listed price, the executed spread may be narrower than the displayed one. Execution at your target size assumes enough resting liquidity to fill against - on thinner markets, that assumption can fail mid-order.
Capital lock-up. Your money is committed from entry to resolution. Markets can run for weeks or months. 7.0% looks good until you annualize it against how long the capital is tied up - a three-month lock-up at 7.0% nominal is roughly 28% annualized if you can source consistent flow, but zero if the market sits dormant with no new qualifying opportunities.
None of these break the strategy. They're the reason that disciplined execution - simultaneous order placement, minimum ROI thresholds, position size limits, resolution monitoring - separates the theoretical return from the realized one.
Why this doesn't scale manually
Finding the opportunity is one problem. Acting on it before it closes is another.
Spreads large enough to clear the fee threshold don't usually sit around. When a 9¢ gap appears on a liquid Fed rate market, other participants see the same order books. The window between identification and closure can be minutes in active markets - and the spread doesn't pause while you're running the fee calculation.
Manual execution against that timeline means monitoring dozens of markets across two platforms continuously, calculating combined costs in real time, and placing two orders fast enough that neither fills at a stale price. The math is simple. The operational execution is not.
Beyond speed, there's the volume problem. Any single arbitrage opportunity at retail scale - $91 in capital, $6.40 in profit - is not meaningful on its own. The strategy only produces real returns by running many positions simultaneously across many matching markets. That requires watching every qualifying market on every platform at all times, which is the definition of a full-time job dedicated to individual positions with marginal per-trade returns.
Automated systems solve both bottlenecks: WebSocket feeds monitoring both platforms in real time, a scanner that identifies qualifying spreads the moment they appear and rejects those below the minimum ROI threshold, and an execution layer that places both orders simultaneously before the spread can close.
The underlying logic of prediction market arbitrage is clean. A guaranteed profit embedded in a price discrepancy, captured by holding both sides. The distance from that logic to a consistently profitable operation is where the real work lives - in fee modeling, execution speed, position sizing, and market matching across dozens of events at once.
Top comments (0)