Guide
Prediction market arbitrage math after fees
Last checked 2026-09-08
A 4 cent spread between Kalshi and Polymarket is not 4 cents of profit. Both venues charge a fee that peaks at the 50 cent price and shrinks toward 0 and 100, so the net edge on a pair depends on the prices you trade at and which side of the book you hit.
This guide works the math with the formulas each venue publishes, then covers the risk the math cannot price: the two contracts settling on different rules.
The raw spread
A cross-venue arbitrage buys Yes on one venue at price a and No on the other at price b, in the same quantity, on what looks like the same event. One side pays $1 at settlement, so if a plus b is below $1, the difference is the raw spread per pair.
Example used below: Yes on Kalshi at 40 cents, No on Polymarket at 56 cents. Cost per pair is 96 cents, raw spread is 4 cents, gross on 100 pairs is $4.00.
Kalshi's fee formula
Kalshi's help center says it "makes money by charging a transaction fee on the expected earnings on the contract" and points to the fee schedule at kalshi.com/docs/kalshi-fee-schedule.pdf. The July 2026 schedule gives the taker formula as fees = round up(M x 0.07 x C x P x (1-P)), where P is the contract price in dollars, C is the number of contracts and M is a per-series multiplier that defaults to 1. Rounding is such that the fee plus position cost lands on a centicent.
The maker formula is round up(M x 0.0175 x C x P x (1-P)), one quarter of the taker rate. Kalshi's help center adds that maker fees apply only in some markets, are charged only when a resting order executes, and that special events can carry different fees.
For the example: 100 Yes contracts at 40 cents as a taker cost 0.07 x 100 x 0.40 x 0.60 = $1.68. As a maker the same fill costs $0.42. At 50 cents the taker fee peaks at 1.75 cents per contract.
Polymarket's fee formula
Polymarket's docs give the taker fee as fee = C x feeRate x p x (1 - p), with C the shares traded and p the share price. "Makers are never charged fees. Only takers pay fees." Fees are rounded to 5 decimal places; the smallest fee charged is 0.00001 USDC.
The feeRate depends on category: 0.07 for Crypto; 0.05 for Sports, Economics, Culture, Weather and Other; 0.04 for Finance, Politics, Mentions and Tech; 0 for Geopolitics, which the docs call fee-free. Deposits and withdrawals of USDC carry no Polymarket fee.
For the example, 100 No shares at 56 cents on a Sports market cost 100 x 0.05 x 0.56 x 0.44 = 1.232 USDC. On a Politics market the same fill costs 0.9856 USDC; on Crypto, 1.7248 USDC.
Net spread, worked
Take the Sports case with both legs as taker fills. Gross $4.00, minus $1.68 on Kalshi, minus $1.232 on Polymarket, leaves $1.088 on 100 pairs. The 4 cent raw spread is a 1.09 cent net spread; 73% of the headline edge went to fees.
Change the assumptions and the result moves fast. Post the Kalshi leg as a maker and the net rises to $2.348. Put the Polymarket leg in a Crypto market and the taker-taker net falls to $0.595. Prices nearer 50 cents grow both fees.
Two costs sit outside the formulas. Capital in both legs is locked until both markets settle, and quoted prices are top of book, so filling 100 contracts can move one leg before the other is done.
- Net per pair = (1 - a - b) - Kalshi fee per contract - Polymarket fee per share.
- Kalshi taker fee per contract = 0.07 x P x (1-P), rounded up per the schedule; maker = 0.0175 x P x (1-P).
- Polymarket taker fee per share = feeRate x p x (1-p), by category, 0 for Geopolitics; makers pay nothing.
Settlement mismatch: the risk the math skips
The arbitrage assumes exactly one leg pays $1. That holds only if both contracts resolve on the same fact from the same source at the same deadline. Neither venue guarantees that against the other.
Kalshi's help center says each market operates under its own rules on the market page, with a named verification source that "acts as an authoritative point of reference", and that "a market remaining open or undetermined is in no way an indication of the resolution criteria being met or not being met."
Polymarket markets are resolved by the UMA Optimistic Oracle according to rules found under the order book. A proposer posts a USDC.e bond, a 2 hour challenge period follows, and a dispute goes to UMA's resolution process. A failed proposal forfeits the bond, which the help center puts at $750.
Read both rule texts before sizing a pair. Different sources, different cutoff times, a postponement clause on one side only, or a Polymarket dispute that runs past the Kalshi settlement date can leave one leg lost with the other still open.
FAQ
Is a 3 cent Kalshi vs Polymarket spread worth trading?
Run both fee formulas at the actual prices first. At prices near 50 cents, taker fees on the two legs together can exceed 3 cents per pair; near the extremes they are much smaller. Then check that both markets name the same settlement source and deadline.
Which venue is cheaper for the arbitrage leg?
It depends on price and category. Polymarket charges makers nothing and charges takers a category rate between 0 and 0.07 times p(1-p). Kalshi's general taker rate is 0.07 times P(1-P) with a maker rate of 0.0175, and some series carry a different multiplier.
Do arbitrage scanners include fees?
Some do. EventArb describes itself as a fee-adjusted calculator across Kalshi, Polymarket and other venues, and Oddpool attaches fee and spread context to the divergences it shows. Check each tool's stated fee assumptions against the formulas above, since Kalshi multipliers and Polymarket category rates change.
Trackers find the edge. Calculators size it. Alerts time it.
When it is time to execute, the free Kairos terminal trades Kalshi, Polymarket and Predict.fun from one book.