A gross spread is not an edge. In a cross-platform prediction market arbitrage you buy YES on one venue and NO on the other, and each venue's fees come out of the gap before anything is left. This article shows the arithmetic with one worked example, then gives break-even tables you can reuse. The prices below are illustrative, not live quotes.
Step 1: the gross spread
Each contract pays $1 if it wins and $0 if it loses, so if the YES price on one platform plus the NO price on the other is below $1.00, the gap is the gross spread per share. Example: YES at 47¢ on Polymarket and NO at 50¢ on Kalshi cost 97¢ together, a gross spread of 3.00¢ per share. See How to Arbitrage Polymarket vs Kalshi for how to find these pairs.
Step 2: the Polymarket leg
Polymarket's documentation gives the taker fee as fee = C × feeRate × p × (1 − p), in USDC, with makers never charged and a rate that depends on the market category (details in Polymarket Fees Explained). Per share, the fee is feeRate × p × (1 − p). For a Sports market (feeRate 0.05) bought at 47¢:
0.05 × 0.47 × 0.53 = 1.25¢ per share (0.012455 exactly).
Remaining edge before the Kalshi fee: 3.00¢ − 1.25¢ = 1.75¢ per share.
Step 3: the Kalshi leg
Kalshi's help center says it charges a transaction fee on the expected earnings of the contract and that some markets have different fees, with the exact math in its published fee schedule. Read the schedule or the fee shown on the order ticket for your market and order type, convert it to cents per contract, and subtract it. In this example the trade stays profitable only while the Kalshi fee is below about 1.75¢ per contract; above that, the edge is gone.
Same spread, different categories
Using the same 47¢ Polymarket price and 3.00¢ gross spread, the Polymarket fee per share and the remaining edge before the Kalshi fee are:
- Geopolitics (0): 0¢ fee, 3.00¢ remaining
- Politics, Finance, Tech, Mentions (0.04): 0.04 × 0.2491 = 1.00¢ fee, 2.00¢ remaining
- Sports, Economics, Culture, Weather, Other (0.05): 1.25¢ fee, 1.75¢ remaining
- Crypto (0.07): 0.07 × 0.2491 = 1.74¢ fee, 1.26¢ remaining
The same gross number can leave very different amounts depending on the category, which is why a single flat fee assumption misleads.
Break-even gross spread by price
The gross spread you need just to cover the Polymarket leg is feeRate × p × (1 − p) per share, and it is largest at 50¢. For a taker buying on Polymarket:
- At 50¢: 0.04 → 1.00¢ · 0.05 → 1.25¢ · 0.07 → 1.75¢
- At 30¢ or 70¢: 0.04 → 0.84¢ · 0.05 → 1.05¢ · 0.07 → 1.47¢
- At 10¢ or 90¢: 0.04 → 0.36¢ · 0.05 → 0.45¢ · 0.07 → 0.63¢
Add the Kalshi fee on top. Whatever the gross spread is beyond the sum of both fees is the net edge before execution risk.
What the fee math does not cover
- Depth. A quoted price only holds for the size on the book; see Prediction Market Liquidity.
- Leg risk. If one order fills and the other does not, you hold a directional position.
- Resolution rules. Two markets with similar titles can resolve differently, in which case both legs can lose. Read both rule texts first: Resolution Risk.
- Capital lock-up. Money stays committed until both markets settle.
Our free arbitrage calculator lets you test prices, and /proof shows the net edges measured on live pairs. Arbitrage Agent reports net edge after fees for the pairs it tracks. See the plans.
Related articles
- Polymarket Fees Explained: What You Actually Pay in 2026
- Kalshi vs Polymarket: Fees, Liquidity & Which Is Better for Arbitrage (2026)
- Is Prediction Market Arbitrage Drying Up? How Much Edge Is Left in 2026
Key terms: Spread · Two-Leg Execution · Prediction Market Arbitrage