Net edge is what is left of a cross-platform price gap after both platforms' fees, measured against what you put in. The gross gap is easy to see on a screen; the fees are what decide whether it is worth taking. This guide works through the arithmetic for the Polymarket side with real numbers, and shows where the Kalshi fee goes so you can finish the calculation yourself.
Step 1: the gross edge
Buy YES on one platform and NO on the other for the same event, and exactly one of them pays $1.00 per contract. If the two prices add up to less than $1.00, the difference is the gross edge. Polymarket YES at $0.47 plus Kalshi NO at $0.51 costs $0.98 per contract, so the gross edge is $0.02, or about 2.04% of the $0.98 you put in. These numbers are illustrative, not a real trade, and the gross edge assumes both legs fill at those prices and that the two markets resolve on the same rules.
Step 2: the Polymarket taker fee
Polymarket's documentation gives the taker fee as shares × category rate × price × (1 − price), with makers never charged. The rate depends on the market's category, from 0 for geopolitics up to 0.07 for crypto; the full category table is in Polymarket Fees Explained, and the official fee page has the current schedule, since it has changed during 2026.
Because of the price × (1 − price) term, the same rate costs very different amounts at different prices. For 100 shares in a 0.04 category:
- At $0.10 or $0.90: 100 × 0.04 × 0.09 = $0.36
- At $0.30 or $0.70: 100 × 0.04 × 0.21 = $0.84
- At $0.50: 100 × 0.04 × 0.25 = $1.00
Step 3: put it together
Take the example above with 100 contracts, assuming a politics market at 0.04. The gross edge is 100 × $0.02 = $2.00. The Polymarket taker fee at $0.47 is 100 × 0.04 × 0.47 × 0.53 = $0.9964. That leaves $1.0036 before the Kalshi fee, or about 1.02% of the $98 cost, and the Kalshi fee comes off that too. Kalshi's help centre says it charges a fee on the expected earnings of the contract and that some markets carry different fees from others, so read the exact amount Kalshi shows next to "You're buying" for your order rather than relying on a rule of thumb.
The result is a net edge roughly half the size of the gross edge before Kalshi's fee is even counted. A gross gap under about 1% will usually not survive.
What a maker leg changes
If the Polymarket leg fills as a resting order, Polymarket's documentation says no fee applies, so the $0.9964 above becomes zero and the full $2.00 remains before the Kalshi fee. The cost is fill risk: a resting order may not fill, or may fill after the price on the other platform has moved, leaving you holding one leg. That is leg risk, and it is the reason a lower fee is not automatically a better trade.
What the net edge still leaves out
- Depth: the prices above only hold for as many contracts as are resting at that price. See why liquidity caps your profit.
- Resolution rules: the two contracts can settle on different sources or deadlines, in which case it is not an arbitrage at all.
- Time: capital stays locked until the market resolves, so a 1% net edge over six months is a very different return from 1% over three weeks.
Detected is not realised: an edge on a screen is not profit until both legs fill at those prices, the fees are paid and the contracts settle the way you assumed. For the edge sizes we measure on live pairs, see /proof.
You can run the same arithmetic with our free arbitrage calculator, which needs no account. For the full fee breakdown, see Polymarket Fees Explained.