How to Find Arbitrage Opportunities in Prediction Markets
A step-by-step guide to finding and profiting from cross-platform arbitrage in prediction markets like Kalshi and Polymarket. Learn to spot price discrepancies, calculate guaranteed profits, and automate scanning.
Arbitrage — the ability to lock in risk-free profit by exploiting price differences across platforms — is one of the most reliable strategies in prediction market trading. This guide explains how to find and act on arbitrage opportunities systematically.
What is prediction market arbitrage?
Arbitrage occurs when the same event is priced differently on two or more platforms, and you can bet on all outcomes for a guaranteed profit regardless of the result.
Example: An event trades on two platforms:- Platform A: "Yes" at 55¢ (implying 55%)
- Platform B: "No" at 40¢ (implying 40%)
Why prediction markets have more arbs than traditional finance
Unlike stock markets with unified order books and high-frequency arbitrageurs, prediction markets are fragmented:
- Different platforms, different users — Kalshi attracts US political traders; Polymarket draws crypto-native global users
- No unified clearing — Each platform is its own silo with separate liquidity pools
- Slower price discovery — Lower trading volumes mean mispricings persist longer
- Regulatory barriers — US users can't access Polymarket; international users can't access Kalshi
Step-by-step: Finding arbitrage
### 1. Identify overlapping markets
First, find events that trade on multiple platforms. Common overlapping categories:
- US elections — Kalshi, Polymarket, PredictIt
- Economic data (Fed rates, CPI, GDP) — Kalshi, Polymarket
- Sports outcomes — Polymarket, sportsbooks
- Crypto events — Polymarket, decentralized markets
Each platform uses different formats. Convert everything to implied probabilities:
from evsignals import markets
# Get cross-platform comparison
comparison = markets.compare("Fed rate decision March 2026")
print(comparison.implied_probabilities)
### 3. Check for arbitrage condition
Sum the cheapest "Yes" and "No" prices across platforms. If the sum is less than $1.00, an arbitrage exists.
from evsignals import scanner
# Find all active arbitrage opportunities
arbs = scanner.find_arbitrage(
min_profit=0.02, # At least 2% guaranteed profit
platforms=["kalshi", "polymarket"]
)
arbs.head(10)
### 4. Account for fees and execution risk
Real arbitrage profits must exceed:
- Trading fees on both platforms
- Withdrawal fees (especially PredictIt's 5%)
- Slippage if the order book is thin
- Capital lock-up cost until settlement
Automating arbitrage detection
Manual scanning is slow. The EVSignals +EV scanner runs continuously across 500+ sources and flags arbitrage opportunities in real time:
- Cross-platform price comparison updated every second
- Configurable minimum profit thresholds
- Fee-adjusted profit calculations
- Alert delivery via webhook, email, or dashboard
Risk management
Even "risk-free" arbitrage has practical risks:
- Settlement risk — Platforms may resolve the same event differently
- Execution risk — Prices may move between your two trades
- Counterparty risk — Platform solvency and withdrawal reliability
- Regulatory risk — Rules may change, especially for offshore platforms
Getting started
1. Open accounts on multiple platforms (Kalshi for US, Polymarket for global) 2. Use EVSignals to scan for cross-platform arbitrage automatically 3. Start small — verify execution before scaling 4. Track your results in a notebook to refine your approach