Prediction Market Arbitrage After Fees: A Worked Example on Polymarket and Kalshi

AM

Alex Mercer· Founder, Arbitrage Agent

Published 2026-10-27 · Last updated 2026-10-27

Key takeaway

A worked example of prediction market arbitrage after fees: how to subtract the Polymarket taker fee (C × feeRate × p × (1 − p)) and the Kalshi fee from a gross spread, with break-even tables.

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

Key terms: Spread · Two-Leg Execution · Prediction Market Arbitrage