Cross-Platform Arbitrage
Finding price discrepancies between Polymarket and Kalshi
Arbitrage is the practice of locking in a guaranteed profit by exploiting price differences for the same asset on different venues. In prediction markets, this means buying YES on the cheaper platform and NO on the more expensive one β when the total cost is less than $1.00, you profit on resolution regardless of the outcome.
## How Arbitrage Works (Concrete Example)
Same event: "Will the Fed cut rates in June 2026?"
Current prices:
- β’Polymarket: YES at $0.65, NO at $0.36 (the slight gap above $1.00 is the spread/fee)
- β’Kalshi: YES at $0.58, NO at $0.43
The cheapest combination:
- β’Buy YES on Kalshi at $0.58
- β’Buy NO on Polymarket at $0.36
- β’Total cost: $0.94 for $1.00 guaranteed payout
- β’**Profit: $0.06 per share = 6.4% return**
This works because no matter how the Fed acts, one of your two positions pays $1.00 and the other pays $0.00. Total payout: $1.00, total cost: $0.94, locked-in profit: $0.06.
## What Makes a Real Arb Opportunity
Several conditions must hold simultaneously:
- **Same event, same resolution criteria.** The markets must resolve based on the exact same underlying event. "Will the Fed cut rates in June" on Polymarket might use FOMC statement; Kalshi might use a different proxy. Read both resolution criteria carefully.
- β’**Spread > fees + slippage.** Polymarket and Kalshi each charge ~0.2-0.5% on takers. Slippage can be 1-2% on thin markets. Real arb needs at least 3-4% spread to be profitable after costs.
- β’**Sufficient liquidity on both sides.** You need to be able to execute the full size on both platforms at the quoted prices. Thin books mean your buy walks the price up.
- β’**Execution speed.** Arbs disappear in seconds as other traders spot them. You need to execute both sides as close to simultaneously as possible.
## Predite's Arbitrage Scanner
Go to **Dashboard β Arbitrage**. You'll see a table of currently-matched markets with:
- Event description (e.g., "Fed cuts June 2026")
- β’Polymarket YES price and 24h volume
- β’Kalshi YES price and 24h volume
- β’Implied spread (in pp and % return)
- β’Liquidity depth at each platform
- β’Recommended execution: which side to buy on which platform
The scanner runs every 4 hours and updates the table. For real-time monitoring, use the "Alert me" button to get notified when new arbs appear.
## Manual vs Automated Arbitrage
Manual execution requires speed. Even 30 seconds can mean missing the opportunity. We recommend the automated bot if you want to capture arbs reliably.
## Risks of Arbitrage
Arbitrage is described as "risk-free" but several things can go wrong:
- **Resolution divergence.** The two markets might have subtly different resolution criteria. Example: Polymarket might count any rate cut; Kalshi might require a specific basis-point cut. If they resolve differently, your hedge breaks.
- β’**One leg fails.** If you fill on Kalshi but the Polymarket order rejects (network error, insufficient liquidity), you're naked YES with no NO hedge. Position size goes from "locked in 6% profit" to "depends on the outcome".
- β’**Time-decay.** If resolution is far in the future, your capital is tied up. A 5% arb that takes 6 months to resolve is only 10% annualized β not great vs other opportunities.
- β’**Platform risk.** Either platform could be hacked, lose funds, or have a bug that mis-resolves a market. Don't put your entire bankroll into a single arb.
## When NOT to Arb
- **Spread under 3%.** Fees and slippage will eat the spread. Profit is mathematical but practically zero.
- β’**Either market is illiquid.** You can't execute the full size without moving the price, and your effective arb shrinks.
- β’**Resolution is more than 6 months out.** Your capital is locked up for too long.
- β’**You don't have accounts on both platforms with funded balances.** Setting up Kalshi takes 1-3 days (KYC, bank verification). If you don't have it ready, the arb is gone by the time you do.
## Tax Considerations
Both legs of an arb are reportable transactions in the US. Each side has its own cost basis, holding period, and gain/loss. Predite's tax export (Form 8949) handles this automatically for connected wallets. If you arb manually across platforms, make sure you're tracking the cost basis of each leg.
## Related Docs
- [Bot Strategy Templates](/docs/bot-strategies)
- β’[Live CLOB Trading](/docs/live-trading)
- β’[Tax & P&L Export](/docs/tax-reports)