NexusFi: Find Your Edge


Home Menu

 



Arbitrage in Prediction Markets: Cross-Platform and Same-Event Opportunities

Looking for NinjaTrader Brokerage pricing, features, reviews, and community ratings? Visit the directory listing.
NinjaTrader Brokerage Directory →
Looking for Tradovate pricing, features, reviews, and community ratings? Visit the directory listing.
Tradovate Directory →

When two markets price the same event differently, one of them is wrong. Understanding how to identify, evaluate, and execute on prediction market arbitrage — and why it's harder than it looks.


Overview #

Arbitrage is the practice of exploiting price discrepancies for the same asset in different markets. In prediction markets, this takes two main forms:

  1. Cross-platform arbitrage: The same event contract is priced differently on Kalshi vs. Polymarket
  2. Same-platform arbitrage: Related contracts within a single platform are inconsistently priced

True arbitrage is risk-free profit. In practice, prediction market arbitrage involves execution risk, criteria mismatch risk, counterparty risk, and fee drag that make it considerably more complex than it appears.

Fi documented the institutional scale of prediction markets in Tradeweb Takes Minority Stake in Kalshi — Prediction Market Data Coming to Institutional Screens — the presence of professional arbitrageurs means obvious mispricings get corrected quickly. Exploitable opportunities require either genuine information advantage or careful cross-platform analysis.

The academic foundation for prediction market efficiency was laid by Wolfers and Zitzewitz (2004), who showed that market-generated forecasts consistently outperform most benchmarks — and that well-functioning prediction markets aggregate dispersed information effectively. The implication for arbitrageurs: markets get efficient fast, and persistent mispricings usually reflect structural friction, not informational disagreement.

@bobwest raised a fundamental question in the NexusFi community when CME event contracts launched: are these instruments legitimate trading tools or basically "rolling the bones?" The all-or-nothing payout structure makes arbitrage one of the clearest legitimate uses — locking in a spread across platforms converts a binary gamble into a defined-edge trade.

Key Takeaway

The 10-cent price gap looks like free money. After fees, criteria verification, capital lockup, and liquidity limits, it is often 3-4 cents on capital you cannot redeploy for 30 days. The math has to work at scale.


Cross-Platform Arbitrage: Kalshi vs. Polymarket #

The Basic Structure #

Cross-platform arbitrage works by buying complementary outcomes on different platforms. If Kalshi prices YES at 62c and Polymarket prices YES at 72c for the same event, the arbitrage trade is:

  • Buy YES on Kalshi at 62c
  • Buy NO on Polymarket at 28c (since NO = 100c - 72c = 28c)

Total cost per contract pair: 62c + 28c = 90c. Guaranteed payout: 100c regardless of outcome.

If YES resolves:

  • Kalshi: Receive $1.00, spent $0.62 = +$0.38
  • Polymarket: Receive $0.00, spent $0.28 = -$0.28
  • Gross profit: +$0.10

If NO resolves:

  • Kalshi: Receive $0.00, spent $0.62 = -$0.62
  • Polymarket: Receive $1.00, spent $0.28 = +$0.72
  • Gross profit: +$0.10

In both outcomes, you make +$0.10 gross before fees on a 10c price discrepancy. The key math: when the cheapest YES and the cheapest NO across both platforms sum to less than $1.00, an arbitrage exists. The further below $1.00, the larger the edge.

Why Fees Destroy Most Apparent Arbitrage #

Fees on both legs substantially reduce the gross arbitrage:

Kalshi entry fee (62c YES): 7% x 0.62 x 0.38 = $0.016 Polymarket fee (28c NO, equivalent ~72c YES): ~2% on winning side = ~$0.014 estimated

Total fees: ~$0.030 on a $0.100 gross opportunity Net arbitrage: $0.100 - $0.030 = $0.070

But wait — you also pay fees on exit if you don't hold to resolution: Kalshi exit fee at resolution: $0 Polymarket exit fee at resolution: $0 (fees charged on fill)

Holding to resolution eliminates exit fees. The net $0.070 holds if you hold both positions to resolution. But capital is locked on both platforms until resolution.

The Resolution Criteria Trap #

The most dangerous assumption in cross-platform arbitrage: that the two contracts resolve on the same event with the same criteria.

Reality: Kalshi and Polymarket often write criteria differently for the same underlying event.

Example: "Will the Fed cut rates in November?"

Kalshi: "Resolves YES if the FOMC target range upper bound decreases by >= 25 basis points at the November 2025 scheduled meeting, as stated in the FOMC statement released on November 7, 2025."

Polymarket: "Resolves YES if the Federal Reserve cuts interest rates in November 2025, based on the official FOMC decision."

Difference: Kalshi specifies >=25bps and the scheduled meeting only. Polymarket says any cut (could be an emergency unscheduled cut as small as 12.5bps). These are different contracts.

If the Fed implements an emergency 12.5bp cut, Polymarket resolves YES, Kalshi resolves NO. Your supposed arbitrage produces losses on both legs.

Recent academic research quantifies this problem at scale. Gebele and Matthes (2026) analyzed over 100,000 events across ten major prediction market venues and found that roughly 6% of all events are concurrently listed across platforms — and semantically equivalent markets still exhibit persistent price deviations of 2-4% on average, driven by what they call "semantic non-fungibility." The absence of a shared, machine-verifiable definition of event identity across platforms means true arbitrage is harder than headline price gaps suggest.

Mandatory step: Before any cross-platform arbitrage, read BOTH platforms' resolution criteria word by word and verify they're economically equivalent.


Cross-platform arbitrage profit calculation showing Kalshi YES at 62 cents vs Polymarket NO at 28 cents with net 7.8 cent profit
Buying YES on Kalshi at 62u00a2 and NO on Polymarket at 28u00a2 locks in +7.8u00a2 net after fees in both resolution scenarios -- but only if resolution criteria are economically identical.
Bar chart showing fee drag on arbitrage profit across different price discrepancy sizes from 3 cents to 20 cents
A 3u00a2 apparent arbitrage is fully consumed by fees (~2.2u00a2). Arbitrage is only profitable when the price discrepancy significantly exceeds fee drag.
Resolution criteria trap: same Fed rate cut event, different Kalshi vs Polymarket contract wording that could resolve differently on an emergency cut
The same Federal Reserve rate cut question reads differently on Kalshi (u226525bp, scheduled meeting) vs Polymarket (any cut). An emergency 12.5bp cut makes one YES and one NO -- your arbitrage loses on both legs.
Order book depth walk showing VWAP erosion as contracts are consumed across Kalshi YES price levels from 62 cents to 64 cents
The quoted 62u00a2 price is only available for the first 50 contracts. Filling 1,000 contracts walks the book to 64.1u00a2 -- reducing a 10u00a2 apparent spread to a 5.9u00a2 executable edge before Polymarket fees.

Same-Platform Arbitrage: Internal Consistency Checks #

Multi-Outcome Contracts That Don't Sum to 100% #

When a platform offers multiple mutually exclusive contracts for the same event, their implied probabilities should sum to approximately 100% (allowing for spread).

Example: Who wins the election?

  • Candidate A YES: 58c
  • Candidate B YES: 35c
  • Candidate C YES: 12c
  • Total: 105c = 5c above 100

This excess is normal — it represents the market maker's spread across three separate order books. It's not arbitrage-able in practice because the spread on each leg would consume more than the excess.

“if you buy an above and a below at the same time your net economics are guaranteed to be zero before transactions fees. To the extent this is not the case, this defines the vig you need to make back before you can even think about being profitable.”

When YES + NO sums to more than $1.00, that excess is the embedded market maker vig — not exploitable arbitrage edge.

If the total much exceeds 100%, buying the NO of the most expensive contract (or the cheapest YES of underpriced candidates) can generate edge.

When to exploit: Total implied probability exceeds 110% or falls below 90% AND you can identify which contract is mispriced AND the fees don't consume the edge.

Conditional Contract Arbitrage #

Some platforms offer contracts like:

  • "Will Y happen given X occurs?" (conditional)
  • "Will X AND Y both occur?" (conjunction)

These can be inconsistent with unconditional contracts:

P(Y|X) x P(X) should equal P(X AND Y)

If the market prices these inconsistently, an arbitrage opportunity may exist.

Worked Example 1: Fed Rate Cut Path

Suppose the market prices:

  • P(Fed cuts in March) = 45c
  • P(Fed cuts in June given March cut) = 75c
  • Implied P(cuts in March AND June) = 45% x 75% = 33.75c

If a P(Fed cuts both March AND June) contract exists and is priced at 40c, there's a 6.25c theoretical edge. You could sell the conjunction contract at 40c and buy the conditional components.

Execution: Sell "Both March AND June" at 40c (receive 40c now, owe $1 if both happen). Buy "March cut" at 45c. If March cut happens, buy "June cut given March" at 75c.

If both resolve YES: Owe $1 on conjunction, receive $1 on March + $1 on June conditional. Net position depends on your hedge sizing and the conditional execution.

The complication: the conditional leg only becomes available after the first condition resolves, so you're carrying directional risk between legs.

Worked Example 2: Multi-Outcome Overpricing

A presidential primary market prices five candidates:

  • Candidate A: 42c
  • Candidate B: 28c
  • Candidate C: 18c
  • Candidate D: 11c
  • Candidate E: 9c
  • Total: 108c (8c overpriced)

The theoretical arbitrage is buying NO on all five candidates at (100c - price) each:

  • NO A: 58c + NO B: 72c + NO C: 82c + NO D: 89c + NO E: 91c = 392c total cost
  • Four of the five NO contracts pay $1 each (the loser pays $0) = $4.00 payout
  • Gross profit: $4.00 - $3.92 = $0.08 per set

After Kalshi's ~7% fee structure applied to five separate transactions, total fees could reach $0.07-$0.10, consuming the entire theoretical edge. This is why multi-outcome arbitrage on a single platform almost never works at retail scale — the cumulative fee drag across multiple legs eliminates the overpricing.


Three scenarios showing multi-outcome contract consistency: normal 105 cent sum, exploitable 118 cent overpriced, and 85 cent underpriced
When mutually exclusive outcomes sum above 110u00a2 or below 90u00a2, internal inconsistency may be exploitable after verifying fees do not consume the edge.
Probability tree diagram showing P(March cut) at 45 cents times P(June cut given March cut) at 75 percent equals 33.75 cents fair value versus 40 cent conjunction contract mispricing
When the conjunction contract trades at 40u00a2 but the implied probability from individual legs is 33.75u00a2, the 6.25u00a2 gap may be exploitable -- but only if resolution criteria across all three contracts are truly equivalent.

Monitoring for Opportunities: APIs and Automated Scanning #

Platform API Access #

Both Kalshi and Polymarket offer public APIs that enable automated price monitoring:

Kalshi REST API (https://trading-api.kalshi.com/trade-api/v2/):

  • Market data: GET /markets for current order book prices, bid/ask depth, volume
  • Event data: GET /events for event metadata, resolution criteria, close dates
  • Rate limits: 10 requests/second for unauthenticated, higher for authenticated
  • WebSocket feed available for streaming price updates

Polymarket CLOB API (https://clob.polymarket.com/):

  • Order book: GET /book with token ID for full depth ladder
  • Price snapshots: GET /prices for current YES/NO token prices
  • Condition data: GET /markets for event metadata and resolution sources
  • Built on Polygon blockchain — USDC settlement, near-instant finality

Building a Price Comparison System #

The minimum viable arbitrage monitor needs:

  1. Contract mapping table: Match Kalshi events to Polymarket conditions by event name, resolution date, and outcome labels. Fuzzy matching helps find candidates, but resolution criteria must be verified manually.
  1. Price ingestion loop: Poll both APIs at regular intervals (5-30 seconds). Store timestamped bid/ask/last for each contract. Track order book depth at each price level, not just top-of-book.
  1. Arbitrage signal computation: For each matched pair, compute:
  • Cheapest YES across both platforms
  • Cheapest NO across both platforms
  • Sum of cheapest YES + cheapest NO
  • If sum < $1.00, flag the discrepancy
  • Subtract estimated fees from both legs
  • Only signal if net edge > minimum threshold (typically 1.5-2%)
  1. Staleness filter: Only compare prices captured within a tight time window (under 5 seconds). Comparing a 30-second-old Kalshi quote against a fresh Polymarket quote is not a valid signal — the market may have moved.

Existing Scanning Tools #

Several open-source and commercial tools exist for cross-platform scanning:

  • PredictMarketCap (predictmarketcap.com/arbitrage) — live cross-platform spread detection across Polymarket, Kalshi, and Limitless. Scans ~2,000 markets, showing profitable opportunities after fees with APY calculations.
  • Open-source arbitrage bots (GitHub) — multiple TypeScript implementations exist that demonstrate the architecture: API polling, price comparison, simultaneous leg execution. These are useful as reference architectures but carry significant execution risk in production.
  • Polymarket Scanner API — REST endpoint that detects exclusive outcome mispricings, ladder contradictions, and cross-market conflicts within Polymarket's 10,000+ markets.

Critical caveat: No scanner can verify resolution criteria equivalence. That step is always manual and always required. A scanner showing a 5c spread between "same" events is worthless if the events aren't actually the same.


Prediction market arbitrage scanner architecture diagram showing Kalshi REST API, Polymarket CLOB API, contract mapping table, staleness filter, signal processor, manual criteria verification gate, and execution flow
A minimum viable arbitrage scanner needs four components: dual API ingestion, a contract mapping table, a staleness filter (u22645s), and a signal processor -- plus a mandatory manual step to verify resolution criteria before any order.

Sizing Your Arbitrage Position #

Order Book Depth Limits #

The quoted price is not the executable price. If Kalshi shows YES at 62c, that might be for 50 contracts. To fill 1,000 contracts, you might need to walk the book:

  • 50 contracts at 62c
  • 200 contracts at 63c
  • 300 contracts at 64c
  • 450 contracts at 65c

Your volume-weighted average price: ~64c, not 62c. The apparent 10c arbitrage just shrank to 8c — and that's before the same depth problem on the Polymarket side.

Practical depth analysis: Before sizing, check the order book on both platforms for your intended quantity. The executable arbitrage is based on the VWAP (volume-weighted average price) for your fill size, not the best bid/ask. Most retail-accessible arbitrage opportunities support $1,000-$5,000 in deployable capital before depth exhaustion.

Maximum Deployable Capital Per Opportunity #

Your arbitrage capacity is constrained by the smaller of the two legs. If Kalshi has $3,000 in executable depth at attractive prices but Polymarket only has $800, your max deployable capital is $800 per side.

Capital allocation framework:

  • Never deploy more than you can fill simultaneously on both legs
  • Account for partial fill risk: if you fill 100% on Kalshi but only 60% on Polymarket, you have $400 in unhedged directional exposure
  • Set a hard cap per event: even "risk-free" arbitrage carries settlement risk, so diversify across multiple events rather than concentrating
  • Reserve capital for potential margin/collateral requirements and withdrawal delays

Position Sizing Rules #

  1. Maximum single-event exposure: Cap at 10-15% of total prediction market capital per event — the same principle behind portfolio heat management applies here, even when individual legs look risk-free. Even verified arbitrage can fail if resolution criteria are interpreted differently than expected.
  1. Minimum net edge threshold: Below 1.5% net (after all fees and estimated slippage), the trade isn't worth the execution risk, capital lockup, and operational complexity.
  1. Liquidity ratio check: If your intended order would consume more than 30% of visible depth on either platform, reduce size. Taking more than a third of displayed liquidity risks moving the market against your second leg and alerting competing arbitrageurs to the same opportunity.
  1. Time-to-resolution weighting: A 3% edge on a contract resolving in 7 days (annualized ~156%) is far more attractive than 3% on a 180-day lockup (annualized ~6%). Factor capital opportunity cost into your go/no-go decision.

The 30 percent depth rule visualization showing Kalshi YES order book with 800 total contracts and why trading above 30 percent triggers market impact and front-running by competing arbitrageurs
Limiting orders to 30% of visible depth (240 of 800 contracts) keeps your execution footprint small enough that the book replenishes before your second leg. Exceeding 30% signals the opportunity to competing arbitrageurs.
Bar chart showing annualized return for 3 percent net edge across different lockup durations from 7 days at 156 percent annualized to 180 days at 6 percent annualized
A 3% net edge annualizes to 156% on a 7-day contract but only 6% on a 180-day lockup. Capital opportunity cost is the hidden variable: the same dollar return on longer contracts may not justify the deployment.

Historical Arbitrage Window: 2024 US Election Night #

The 2024 US presidential election provided one of the most documented cross-platform arbitrage episodes in prediction market history.

What happened: On election night (November 5, 2024), Polymarket — which allowed global participation including large whale traders — called the race for Trump hours before Kalshi, which had a more US-retail-oriented user base. During a roughly 90-minute window between 9:30 PM and 11:00 PM EST, Polymarket priced Trump YES above 90c while Kalshi still had Trump YES in the 70-80c range.

The theoretical trade: Buy Trump YES on Kalshi at ~75c, buy Trump NO (Biden/Harris YES) on Polymarket at ~8c. Total cost: ~83c. Guaranteed payout: $1.00. Gross edge: ~17c.

Why it was difficult to capture in practice:

  • Execution speed: The discrepancy narrowed rapidly as information propagated. By the time most retail participants noticed, Kalshi prices had already moved.
  • Account funding: You needed pre-funded accounts on both platforms. Kalshi required KYC and ACH funding (days to set up). Polymarket required a funded crypto wallet on Polygon.
  • Order book depth: At the peak discrepancy, Kalshi's order book was thin. Large market orders walked through multiple price levels.
  • Settlement timing: Kalshi didn't settle until the AP called the race; Polymarket's market resolved based on different criteria and timing.

Lesson: The largest arbitrage windows occur during fast-moving news events, but they also close fastest. The infrastructure (funded accounts, API connections, automated execution) must be in place before the event, not during it. Traders who profited from election night arbitrage had spent weeks or months preparing their cross-platform setup.

For context on how rapidly the prediction market environment evolved around this period, see the NexusFi community discussion on Kalshi, Polymarket, and the prediction market ecosystem.


Election night 2024 cross-platform arbitrage window timeline showing Trump YES price divergence between Polymarket and Kalshi from 9pm to 11pm with 90-minute 15-cent gap
Polymarket (global crypto-native users) priced Trump YES above 90u00a2 while Kalshi (US retail) lagged at 75u00a2 for ~90 minutes -- creating a documented 15u00a2 gross arbitrage window that required pre-funded accounts to capture.

Practical Challenges of Prediction Market Arbitrage #

Challenge 1: Capital Locked on Two Platforms #

Cross-platform arbitrage requires capital on both Kalshi and Polymarket simultaneously. If you want to execute $10,000 of arbitrage:

  • $6,200 locked on Kalshi (62c YES position)
  • $2,800 locked on Polymarket (28c NO position)
  • Total: $9,000 locked until resolution
  • Opportunity cost: This $9,000 can't be deployed elsewhere

For a $700 gross profit (7c x 10,000 contracts), your ROI is $700/$9,000 = 7.8% over the life of the contract. For a 30-day contract, that's ~7.8% monthly, but the capital is fully locked. Is this better than your alternatives? It depends on your opportunity cost.

Challenge 2: Settlement Timing Difference #

Kalshi settles in USD via ACH/wire. Polymarket settles in USDC on the blockchain. Settlement timing differs:

  • Kalshi: 2-5 business days after resolution
  • Polymarket: Near-instant (blockchain confirmations)

Capital freed from one platform before the other creates a gap period.

Challenge 3: Minimum Position Sizes #

Most arbitrage on 10c discrepancies requires significant volume to generate meaningful dollar returns. 1,000 contracts at 10c gross = $100 gross before fees. After fees: ~$70. Is deploying $9,000 for $70 return worthwhile? Only if it's truly risk-free — and the criteria trap means it may not be.

Challenge 4: Liquidity Mismatch #

The discrepancy exists because one platform is less liquid. You may be able to buy 500 contracts at the attractive price before the spread widens, but not the 5,000 you calculated for your target return. Partial fills are common.

Challenge 5: Partial Fill and Leg Risk #

The most dangerous execution scenario in cross-platform arbitrage: one leg fills completely but the other doesn't. You buy 1,000 YES contracts on Kalshi at 62c but Polymarket's book moves before you fill the NO side. Now you're holding a directional position — exactly what arbitrage was supposed to avoid.

Unlike futures or equities where you can hedge instantly on the same exchange, cross-platform prediction market execution is never atomic. There is always a gap between your first and second fill — even if only milliseconds when automated, much longer when manual. Managing that gap is the difference between profitable arbitrage and losing money on "risk-free" trades.

Which Leg to Execute First #

The conventional advice — "execute both legs simultaneously" — ignores the reality that you always have one leg before the other. The sequencing decision matters.

Scenario Execute First Why
One platform has noticeably less depth The less liquid platform Lock the harder-to-fill side while conditions are favorable — the deeper platform is more likely to still have size when you arrive
One platform is cheaper for your side The cheaper platform Lock the better entry price — if the second leg doesn't fill, your entry cost is lower on the exposed position
Latency differs between platforms The slower platform Gives the faster platform time to settle around any price impact from your first fill
Both platforms look similar The platform with the tighter spread Tighter spreads mean less slippage on the anchor leg

The dominant rule across practitioners: execute the less liquid leg first. If you fill the easy side first and the hard side falls through, you're stuck with directional exposure. If you fill the hard side first and the easy side falls through, you can usually still hedge on the deeper platform at an acceptable price. This asymmetry makes the sequencing decision straightforward in most cases.

Handling Partial Fills: Three Response Modes #

When the first leg fills but the second doesn't match, you have three options. Each fits a specific situation:

Mode 1: Cancel and wait. Cancel all remaining orders, unwind the exposed position, and wait for the next window. Use this when your risk limits are tight and the spread has narrowed enough that continuing would lock in a loss. The downside: opportunity cost and extra fees from the unwind. But you end the sequence with zero exposure. Best for: very tight spreads where any slippage destroys the edge.

Mode 2: Accept directional exposure with a defined stop. Let the filled leg stand and place a time-limited hedge order on the other platform within a defined price band — your target price plus 1-2 cents. If the hedge fills within that band, your arbitrage works at a slightly reduced edge. If it doesn't fill within your timeout (30-60 seconds is typical), unwind the first leg at market. This works when the price discrepancy is wide enough that a slightly worse fill still generates positive edge. The key: define your maximum acceptable exposure duration and price band before you start — not after you're sitting on an open position wondering what to do.

Mode 3: Scale back the second leg to match (recommended for most traders). If you intended to fill 1,000 contracts but only got 600 on the first leg, immediately adjust your second leg to 600 contracts. This keeps the position perfectly hedged on the filled portion and eliminates excess directional exposure. The unfilled 400 contracts on the first leg get cancelled.

This is the approach most practitioners converge on because it handles the common case cleanly. You rarely get zero fills, but you frequently get partial fills. The key requirement: your second-leg order must be updated as first-leg fill reports come in. If you're doing this manually, set up both orders simultaneously and cancel the excess on whichever side fills short.

Practical workflow for partial fills:

  1. Set a fill threshold — 80% of your intended size is a reasonable default
  2. Monitor the first leg. When fills hit your threshold, snap the second leg's quantity to match the actual filled amount
  3. If fills fall below 80% after your timeout window (30-60 seconds): cancel the remainder, re-evaluate whether the spread still works, and either re-enter at adjusted size or abort
  4. If both legs fill but at different sizes, cancel the excess on the larger side to restore balance
  5. Keep a small cash buffer (roughly 0.5% of your total deployed notional) to cover any brief gap between fills where you're carrying unhedged exposure

Position Sizing Relative to Order Book Depth #

The order book display tells you the maximum you should trade — but most traders overshoot it. The depth you see at the best price is not the depth you can realistically take without moving the market against yourself.

The 30% depth rule: limit your order size to no more than 30% of the displayed depth across the best 2-3 price levels on either platform. This cap exists for two reasons. First, taking more than a third of visible liquidity signals your intent and can trigger other participants to pull their orders or front-run the second leg. Second, the remaining 70% acts as a buffer — if prices move slightly during your execution window, there's still liquidity to work with.

Worked example: Kalshi shows a 10-cent discrepancy on a mid-liquidity political contract. The order book has 800 contracts available across the best three price levels on the YES side. Your maximum order: 240 contracts (30% of 800). At 62c per contract, that's roughly $150 of capital on the Kalshi leg. If Polymarket shows 1,200 contracts of NO depth, your Polymarket cap is 360 contracts — but since Kalshi is the binding constraint, you cap at 240 contracts on both sides. Total capital deployed: about $220 (240 x 62c + 240 x 28c). Net profit at 7c after fees: roughly $17. Not exciting, but genuinely hedged.

For high-liquidity contracts — major elections, marquee macro events — visible depth may reach several thousand contracts across the top levels, supporting larger deployments in dollar terms. But the percentage rule still applies: 30% of whatever is visible, regardless of the absolute dollar amount.

Why not take more? Prediction market order books replenish slowly — minutes to hours, not milliseconds like equity or futures markets. Taking 50%+ of displayed depth can visibly move the price, alerting other arbitrageurs to the same opportunity and creating competition for your second leg before you even submit it. The 30% ceiling keeps your execution footprint small enough to avoid this self-defeating dynamic.

Challenge 6: Regulatory and Platform Risk #

Prediction markets operate in evolving regulatory territory. As @SMCJB noted in the NexusFi community, Kalshi faces class action lawsuits alleging unlicensed sports betting — raising the question of whether these platforms are CFTC-regulated event trading or state-regulated gambling. If a platform is forced to halt trading or restructure by regulators mid-contract, your locked capital and open positions face uncertainty that no amount of arbitrage math can hedge. The regulatory environment is still being written, and arbitrageurs who deploy capital across multiple platforms carry platform-specific regulatory risk on each leg.


Three modes for handling partial fills in cross-platform arbitrage: Mode 1 cancel and wait, Mode 2 accept directional exposure with stop, Mode 3 scale back to match filled quantity
When leg 1 fills 600 of 1,000 contracts, three response modes determine your risk. Mode 3 (scale back) is recommended: match leg 2 order to the actual filled quantity and cancel the unfilled remainder.
Capital lockup analysis showing $6200 on Kalshi and $2800 on Polymarket locked until resolution with 5.3 percent 30-day ROI
$9,000 of capital locked for a $480 net profit is 5.3% over 30 days (64% annualized) -- but capital opportunity cost and execution risk must both justify the deployment.
Leg sequencing decision matrix for cross-platform prediction market arbitrage showing when to execute which platform first based on liquidity depth, price, latency, and spread
Executing the less liquid leg first is the dominant rule across practitioners: if the hard side fails, you have no exposure; if the easy side fails after the hard side fills, you can still hedge on the deeper platform.
Cross-platform execution gap timeline showing microsecond-to-millisecond gap between leg 1 fill confirmation and leg 2 order submission where directional exposure exists
Even automated execution has a gap between leg 1 fill confirmation and leg 2 submission -- typically 50-200ms. During this window price can move, closing or reversing the arbitrage. Cross-platform execution is never atomic.

When Arbitrage Is Actually Worth Pursuing #

Scenario 1: Large Discrepancy, Verified Equivalent Criteria #

Both contracts have been carefully verified to be truly equivalent. Price discrepancy exceeds 10c. After all fees, positive net profit is clear. Capital deployment fits within your overall risk limits.

This is rare but does occur after major events when one platform's market makers update pricing faster than the other.

Scenario 2: Internal Inconsistency With Clear Direction #

Within a single platform, two related contracts are clearly inconsistent, and one must be wrong. You can identify which one the market is likely to correct toward, and trade that direction even without perfectly locking in a two-sided position.

This isn't true arbitrage — it's a high-confidence directional trade based on internal market consistency.

Scenario 3: Platform Market Making #

Some sophisticated participants effectively act as market makers, posting prices on both sides and capturing the spread rather than finding external arbitrage. This requires deep technical infrastructure and isn't accessible to most retail participants.


The Arbitrage Discovery Process #

If you want to systematically scan for arbitrage opportunities (see the pm.wiki arbitrage methodology guide for a detailed walkthrough of this process):

  1. Build a contract comparison spreadsheet: List all active contracts on Kalshi and their Polymarket equivalents. Update prices daily or more frequently.
  1. Verify criteria equivalence: For any price discrepancy > 5c, read both platforms' resolution criteria word-for-word.
  1. Calculate net profit after fees: Use the specific fee formulas for each platform. A 7c gross arbitrage may yield only 3-4c net.
  1. Estimate maximum deployable size: Check order book depth on both platforms. How many contracts can you actually transact at the displayed price?
  1. Execute simultaneously where possible: Cross-platform execution creates a window between legs. If the market moves between your first and second fill, the arbitrage may no longer exist.

Common Mistakes in Prediction Market Arbitrage #

Mistake 1: Assuming Criteria Equivalence #

The title sounds the same. The criteria are different. You're not arbitraging; you're taking two separate directional risks that happen to be opposite.

Mistake 2: Ignoring Opportunity Cost #

Locked capital has an opportunity cost. A 5% return on a 90-day lock-up is 5% annualized, which may not beat simpler strategies.

Mistake 3: Partial Fill Risk #

You execute one leg fully but get only partially filled on the second. Now you have directional exposure you didn't intend. Three specific response modes exist: cancel and unwind the exposed leg immediately, accept defined directional exposure with a time-limited hedge order in a bounded price band, or scale back the second leg to match the actual filled quantity (the recommended default). See Which Leg to Execute First and Handling Partial Fills: Three Response Modes in the Practical Challenges section above for the complete decision framework, including when to use each mode and the 80% fill threshold rule.

Mistake 4: Forgetting Bid-Ask Spread Direction #

You can buy at the ask or sell at the bid — and the difference matters more than most arbitrageurs expect (see The Bid-Ask Spread for the mechanics that make this gap persistent). The arbitrage calculation must use the direction of each transaction, not the mid-price.

Mistake 5: Overestimating Available Depth #

A scanner shows 5c of edge on a contract, but only 50 contracts sit at that price. Your $10,000 deployment plan requires 1,000 contracts. By the time you walk the book, your effective edge is 2c — below the fee threshold. The practical cap: limit your order to no more than 30% of the displayed depth across the top 2-3 price levels on either platform. At 800 contracts of visible depth, that means 240 contracts maximum — which on a typical 10-cent discrepancy translates to roughly $150 deployable per side on the Kalshi leg. See the 30% Depth Rule in Sizing Your Arbitrage Position above for the full worked example and rationale.


Citations #

Citations

  1. @FiTradeweb Takes Minority Stake in Kalshi (2025)
    “Institutional participation and arbitrage efficiency in prediction markets”
  2. @FiCME Group Event Contracts Blast Past 100 Million Traded (2025)
    “Cross-platform competitive dynamics creating arbitrage opportunities”
  3. @FiCFTC Withdraws Prediction Market Ban (2025)
    “Regulatory framework enabling cross-platform participation”
  4. @SMCJBKalshi, Polymarket, Prediction Markets etc (2025) 👍 4
    “Critical perspective on prediction market regulatory risks and class action litigation”
  5. @bobwestThe mysterious but colossal world of arbitrage (2022) 👍 4
    “How arbitrage keeps correlated markets in sync through price discrepancy exploitation”
  6. @LaconicEvent Contracts - New Way to trade the CME Futures markets (2022) 👍 1
    “Zero-sum arithmetic of YES+NO pricing and embedded market maker vig in event contracts”
  7. Wolfers & Zitzewitz (2004), Prediction Markets, Journal of Economic Perspectives
  8. Gebele & Matthes (2026), Semantic Non-Fungibility and Violations of the Law of One Price in Prediction Markets, arXiv:2601.01706
  9. Polymarket CLOB Documentation
  10. Polytrage: Why the Same Market Trades at Different Prices on Polymarket and Kalshi
  11. pm.wiki: How to Arbitrage Between Polymarket and Kalshi

Help Improve This Article

NexusFi Elite Members can help keep Academy articles accurate and comprehensive.

Unlock the Full NexusFi Academy

832 in-depth articles across 17 categories — written by traders, backed by community research. Includes knowledge maps, citations with community excerpts, and the ability to help improve articles.

We add approximately 297 new Academy articles every month and update approximately 614 with fresh content to keep them highly relevant.

Strategies (91)
  • Order Flow Analysis
  • Volume Profile Trading
  • plus 89 more
Market Structure (44)
  • Initial Balance: The First Hour That Defines Your Entire Trading Day
  • Opening Range: Why the First 15 Minutes Define Your Entire Trading Session
  • plus 42 more
Concepts (44)
  • Futures Order Types: Market, Limit, Stop, and Conditional Orders
  • High Volume Nodes & Low Volume Nodes
  • plus 42 more
Exchanges (44)
  • Futures Exchanges: Understanding Where and How Futures Trade
  • plus 42 more
Indicators (56)
  • Delta Analysis & Cumulative Volume Delta (CVD)
  • Market Internals: Reading the Broad Market to Trade Index Futures
  • plus 54 more
Risk Management (44)
  • Risk Management for Futures Trading
  • Position Sizing Methods for Futures Trading
  • plus 42 more
+ 11 More Categories
832 articles total across 17 categories
Instruments (60) • Automation (44) • Data (43) • Platforms (54) • Psychology (45) • Prop Firms (45) • Brokers (44) • Prediction Markets (43) • Regulation (44) • Cryptocurrency (44) • Infrastructure (43)
Become an Elite Member


© 2026 NexusFi®, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Downloads - Top