Prediction Market Arbitrage After Fees: How to Actually Calculate Net Opportunities
Prediction market arbitrage is the practice of exploiting price differences between venues—like Polymarket, Kalshi, and major sportsbooks—to attempt to lock in a profit regardless of the event outcome. But in reality, fees are the hurdle between theoretical and real-world outcomes. A pricing gap that looks profitable can evaporate (or even go negative) once you account for trading fees, transaction costs, and withdrawal charges.
This article gives a concrete, math-driven walkthrough of how to calculate net arbitrage opportunities after all relevant fees. We’ll use real-ish numbers, show you where the tricky parts are, and explain how automated scanners like ArbMonster do the heavy lifting—so you’re not caught off guard by hidden costs.
What Is Prediction Market Arbitrage?
At its core, arbitrage means buying low and selling high in two places at once. In prediction markets, that might mean:
- Buying YES shares on Polymarket at $0.48
- Selling NO shares (or the equivalent) on Kalshi at $0.53
If both venues resolve the same way, you’re locking in a $0.05 spread per share—before fees.
Where Do Fees Come In?
Every venue charges differently:
- Prediction markets (like Polymarket, Kalshi): Charge a percentage fee on each trade when it fills (taker fee), not on winnings. No deposit, withdrawal, or settlement fees from the venues themselves, though on-ramps or bridges may charge transaction costs.
- Sportsbooks: Bake a “vig” into their odds (implicit fee), plus possible withdrawal or deposit fees.
The headline arbitrage opportunity is only real if, after subtracting all these costs, there’s still positive expected value.
The Fee Checklist: What You Need to Include
To accurately calculate net arbitrage after fees, always account for:
- Market fees (taker, trading, or commission fees on each trade when it fills)
- Transaction fees (on-chain gas, bridge costs, etc. for prediction markets)
- Deposit and withdrawal fees (from on-ramps or bridges, not the venues themselves)
- Currency conversion or slippage if you need to move funds across currencies or blockchains
- Exchange rate spreads (if converting crypto to fiat or vice versa)
Let’s see how this plays out in a worked example.
Worked Example: Calculating Net Arbitrage After Fees
Suppose you spot a pricing gap:
- Polymarket: YES on "Candidate X wins" trading at $0.47
- Sportsbook: NO (i.e., Candidate X loses) equivalent at -110 (implies $0.524 odds)
You want to arbitrage by buying YES on Polymarket and betting NO on the sportsbook.
1. Calculate the Theoretical Spread (Before Fees)
- Polymarket: Buy YES at $0.47 (potential $1 payout)
- Sportsbook: Bet $0.524 to win $0.476 (NO at -110)
If you cover every outcome, you’re theoretically locking in a $0.024 profit per $1 exposure (2.4%).
2. Add Polymarket Fees
- Taker fee: Polymarket charges a fee on each trade when it fills, not on winnings. For most politics/finance/tech/mentions markets, the rate is about 4% × price × (1 − price) per share, peaking at about 1¢ per contract near 50¢.
- Transaction fee: Assume $0.50 per trade in gas (varies; can be higher for small trades)
- Withdrawal fee: Polymarket itself does not charge withdrawal fees, but on-ramps or bridges may charge.
Suppose you buy 100 YES shares ($47 total). The taker fee is calculated as: 100 × 0.04 × 0.47 × 0.53 ≈ $1.00 (rounded up to the nearest cent per fill).
3. Sportsbook Fees
- Vig: Already baked into -110 odds
- Withdrawal fee: $0 (varies by book)
4. Netting It All Out
If YES wins:
- Polymarket: $100 (payout) - $47 (cost) = $53 gross; minus ~$1.00 (taker fee) = $52.00 profit
- Sportsbook: Lose $52.40 (NO bet at -110)
- Net: $52.00 (Polymarket) - $52.40 (Sportsbook loss) = - $0.40 (a small loss)
If NO wins:
- Polymarket: Lose $47 (YES loses)
- Sportsbook: Win $47.60 (NO bet at -110 yields $47.60 for $52.40 risked)
- Net: $47.60 (Sportsbook) - $47 (Polymarket loss) = $0.60
Weighted for Probability
If you size your trades so each outcome nets the same (true riskless arbitrage), you’d need to adjust bet sizes. But as you see, fees have eaten the theoretical profit, and in the worst case, could turn it into a net loss.
Add Transaction and Withdrawal Fees
- Polymarket gas: $0.50 ($0.005 per share if 100 shares)
- Polymarket withdrawal: Only on-ramps or bridges may charge fees, not Polymarket itself.
- These can further erode returns, especially on small sizes.
Why Fee Math Is Tricky: Real-World Complexities
- Fees are charged on trades, not winnings. On Polymarket and Kalshi, taker fees are charged on each trade when it fills, not on winning trades. This complicates the math—netting everything out requires sizing positions to balance outcomes.
- Minimum and fixed fees matter. A $5 withdrawal fee from a bridge is negligible if you’re moving $10,000, but huge if you’re just testing with $100.
- Crypto markets are volatile. If you’re bridging USDC, ETH, or MATIC, exchange rates and gas fees can shift even within minutes.
- Liquidity and fillable size. If the arbitrage only exists for $50 but you want to trade $500, the fee impact per dollar can change.
How ArbMonster Automates This Math
Manually calculating net arbitrage after fees is tedious and error-prone. ArbMonster scans live prices across 20+ sportsbooks, Kalshi, and Polymarket, automatically factoring in all taker, transaction, and withdrawal fees. Opportunities shown are net of all these costs—at currently fillable size—so what you see is what you’d actually get if you can fill the quoted size.
To understand the formulas and fee schedules in more detail, see ArbMonster Learn.
Example: Spotting a Real Net Opportunity
Suppose ArbMonster shows:
- Polymarket YES: $0.49 (4% taker fee for politics/finance/tech/mentions)
- Sportsbook NO: -105 (implied $0.512)
- Fillable size: $100
- Polymarket gas: $0.30, withdrawal $4 (from bridge, not Polymarket)
ArbMonster's scanner will only show a net opportunity if, after buying 204 shares ($100), paying all fees, and sizing the sportsbook NO bet to cover the opposite outcome, you’d end up with a net positive balance in both cases. If not, it doesn’t appear as an opportunity.
Key Takeaways
- Headline arbitrage gaps are often eaten by fees. Always run the math for your actual trade size and withdrawal plans.
- Fees are charged on trades, not winnings. Make sure to model both outcomes, not just the winning scenario.
- Automated tools save time and avoid costly manual errors.
FAQ
Q1: Do all prediction markets charge fees on winnings only?
No—on Polymarket and Kalshi, taker fees are charged on each trade when it fills, not on winnings. Always check the venue's fee schedule. Some platforms or betting exchanges may charge per-trade commissions or additional transaction fees.
Q2: Are fees the same for every market on Polymarket or Kalshi?
No. Some categories (e.g., crypto, sports, politics) may have different taker fee rates. Special markets or high-liquidity events sometimes have promotional fees or higher rates. Always check the market's info page.
Q3: Can I avoid withdrawal fees by keeping funds on-platform?
You can minimize withdrawal costs by batching larger withdrawals, but eventually moving money off-platform may incur fees from bridges or on-ramps, not from Polymarket or Kalshi themselves. For crypto venues, bridging or swapping to fiat can add additional (sometimes hidden) costs.
ArbMonster is a data service. Nothing here is financial or betting advice; markets carry risk, venues have age and jurisdiction restrictions, and you are responsible for verifying everything before acting.