NEW: Live arbitrage across 10+ prediction markets.Arbitrage →
← Index
BasicsAug 13, 202613 min read

Prediction Market Arbitrage Calculator: The Math

Prediction Market Arbitrage Calculator: The Math

The Short Answer

A prediction market arbitrage calculator does one job: check whether two opposing prices still sum to under $1.00 after fees. Buy N of YES on one venue at p and N of NO on the other at q, and exactly one leg pays $1.00 per pair, so the gross condition is p + q < 1 and the real one is p + fee(p) + q + fee(q) < 1. Fees at both venues are shaped like price × (1 − price), so break-even runs 1.75 to 3.5 cents of spread at the midpoint and 0.6 to 1.3 cents at 90/10, depending on which Polymarket exchange and category the second leg sits on.

Most people searching for a prediction market arbitrage calculator have already found the gap: Kalshi shows YES at 42 cents, Polymarket shows the matching NO at 55, that sums to 97, and three cents of what looks like free money is sitting on the screen. Turning it into what you actually keep takes four lines of arithmetic. Here they are in the order a spreadsheet wants them, with pA the Kalshi price, qB the Polymarket price, m the Kalshi series fee multiplier and r the Polymarket rate:

  • gross = 1 - (pA + qB)
  • fK = 0.07 * m * pA * (1 - pA), rounded up to the next cent across the whole order
  • fP = r * qB * (1 - qB)
  • net = gross - fK - fP, and net / (pA + fK + qB + fP) is the return on capital

The rest of this page covers where each coefficient comes from, how to size two legs that cannot share capital, and the one check no calculator can run for you. For how the trade is constructed in the first place, start with our guide to cross-venue locks. Fee rates, series multipliers and endpoints below were checked on 8 August 2026.

Key Takeaways

  • The post-fee lock condition is p + fee(p) + q + fee(q) < 1, with equal contract counts on both legs. Matched quantity, not matched dollars.
  • Both fee schedules are shaped like price × (1 − price), so break-even collapses at the extremes: 1.75 to 3.5 cents at the midpoint, 0.6 to 1.3 cents at 90/10, depending on the pairing.
  • Polymarket is two exchanges. Kalshi against Polymarket US costs a flat 0.06 taker coefficient, not the International category rates, and the same spread can clear one and lose on the other.
  • The arithmetic can be verified. Whether two markets resolve identically cannot, and that is where the money goes.

The Two-Leg Lock Condition

Every binary contract at both venues pays exactly $1.00 on the winning side and nothing on the loser: Kalshi's settlement docs say so, and Polymarket backs each YES and NO pair with $1 of collateral. Buy N contracts of YES on venue A at pA and N of NO on venue B at qB, and one leg always redeems for a dollar. Gross edge per pair is 1 − (pA + qB), so a lock exists only when pA + qB < 1. Note the N on both sides. Split capital evenly between legs priced at 42 and 55 cents and you finish holding more contracts on one side than the other, which leaves you directional.

Netting Out Both Venues' Fees

Before any coefficient, settle which Polymarket you are on, because there are two and they do not share a schedule. Polymarket International is the crypto-settled exchange and charges category rates. Polymarket US is a separate CFTC-designated contract market built for US residents, and it charges one flat taker coefficient of 0.06 across every category, capped at $1.50 per 100 contracts, with makers paid a rebate rather than charged. Kalshi is CFTC-regulated and open to US persons, so for a US trader the pair that actually executes is Kalshi against Polymarket US and the number to use is 0.06. The rest of this section describes the International exchange. Both schedules are published: docs.polymarket.com/trading/fees and docs.polymarket.us/fees, with our own breakdown in the Polymarket fees guide.

Polymarket International publishes its taker fee, what you pay for crossing the spread to hit an order already resting on the book, as contracts × feeRate × p × (1 − p), charged at match time. Category rates as published: 0.04 for Politics, Finance and Tech, 0.05 for Sports, Economics, Culture and Weather, 0.07 for Crypto, and 0 for Geopolitics. Makers, whose orders rest on the book and wait to be hit, pay nothing in any category and split taker revenue through a rebate program paying 15% to 25% of category fees. That is the largest single lever on this page: a resting Polymarket leg prices at r = 0 whatever its category, which is the second-to-last column of the table below. What you trade for it is fill risk, and a leg that never fills leaves you directional on the Kalshi side.

Kalshi's model has the same shape, and its parameters are readable without an account. GET /trade-api/v2/series/{series_ticker} needs no key and returns fee_type, which reads quadratic, quadratic with maker fees, or flat, alongside fee_multiplier, which events can override. Quadratic means the p × (1 − p) curve, and the coefficient usually quoted, used below, is 0.07. Pull those two fields for the series you are actually trading rather than trusting any published table, this one included. We could not retrieve Kalshi's fee schedule PDF on 8 August 2026, two of the three worked examples in Kalshi's own fee-rounding documentation do not reconcile with a flat 0.07, and multipliers move: nineteen MLB series went to a 0.5 multiplier on 7 August 2026, while the S&P 500 and Nasdaq-100 series sat at a full multiplier. More in our Kalshi fees guide.

The Break-Even Spread, Priced Out

Put them together and the lock survives only when 1 − (pA + qB) > fA(pA) + fB(qB). With a small spread, qB sits close to 1 − pA, so both fee terms use nearly the same p × (1 − p) and break-even collapses to (0.07m + r) × p × (1 − p), where m is the Kalshi series multiplier and r the Polymarket rate. At m = 1:

Price, either legIntl politics (0.04)Intl sports (0.05)Intl crypto (0.07)Intl geopolitics, or maker (0)Polymarket US (0.06)
0.502.75¢3.00¢3.50¢1.75¢3.25¢
0.552.72¢2.97¢3.47¢1.73¢3.22¢
0.582.68¢2.92¢3.41¢1.71¢3.17¢
0.602.64¢2.88¢3.36¢1.68¢3.12¢
0.702.31¢2.52¢2.94¢1.47¢2.73¢
0.801.76¢1.92¢2.24¢1.12¢2.08¢
0.900.99¢1.08¢1.26¢0.63¢1.17¢
0.950.52¢0.57¢0.67¢0.33¢0.62¢
0.990.11¢0.12¢0.14¢0.07¢0.13¢

p × (1 − p) is symmetric, so a leg at 0.42 reads the same row as one at 0.58. Read whichever price you are holding. Because both schedules are quadratic, the fee burden collapses toward the extremes, and where a spread sits on the probability curve matters more than how wide it is. A one-cent gap at 90/10 clears in the 0.04 categories and against a resting Polymarket order, but dies in sports, in crypto and against Polymarket US. A two-cent gap at 50/50 clears in none of the columns. Every figure scales linearly with the Kalshi multiplier: on a 0.5-multiplier series such as MLB, subtract 0.035 × p × (1 − p) from the row, which moves the sports midpoint from 3.00 cents to just over 2.1. The shape of the curve holds either way. Only its height moves.

A Worked Example

Illustrative prices, real fee formulas, Polymarket International. A politics market with Kalshi YES at $0.42 and Polymarket NO at $0.55, summing to $0.97. Gross edge is 3.00 cents per pair, which looks enormous on a screen.

Kalshi rounds its fee up to the next cent across the whole order rather than per contract, so size the order first: 1,000 pairs cost 0.07 × 1000 × 0.42 × 0.58 = $17.052, rounded up to $17.06, or $0.01706 a pair. The Polymarket leg at the Politics rate is 0.04 × 1000 × 0.55 × 0.45 = $9.90, or $0.0099 a pair. Fees of $0.02696 against a 3.00 cent gap leave $0.00304 a pair, so those 1,000 pairs commit $437.06 at Kalshi and $559.90 at Polymarket, $996.96 in total, to make $3.04. That is 0.30% for the cycle.

Run the identical prices against Polymarket US, where the coefficient is 0.06 regardless of category, and the second leg costs $14.85 instead of $9.90. Total fees per pair reach $0.03191 against a $0.0300 gap, so the trade loses about 0.2 cents a pair. The screen and the spread are identical; the answer reverses. For a US trader, the losing version is the one on the table.

Position Sizing Across Two Venues

Two venues means two balances, and neither one backs the other. Both legs must be pre-funded separately, there is no cross-margining, and money cannot move between venues at trade speed. Maximum pairs is min(BalanceA / (pA + fA), BalanceB / (qB + fB)), and you fund each venue in proportion to its leg's all-in cost, which is 43.8% Kalshi and 56.2% Polymarket in the example above. Split the same $996.96 down the middle instead and it supports 1,140 pairs at Kalshi but only 890 at Polymarket, so profit falls to $2.71 with $109.50 sitting idle and return on parked capital drops to 0.27%.

Getting to a funded state costs money too, and none of the arithmetic above sees it. Kalshi takes US dollars; Polymarket settles in USDC. An on-ramp spread, a wire or withdrawal charge, or a conversion in or out of stablecoin is a fixed cost against the $3.04 that cycle earns on $996.96, and the first round trip of capital can easily cost more than several cycles of edge. Fund once, size up, and amortise the transfer across many trades rather than pricing it into each one.

Then there is the clock, which dominates everything else. That 0.30% is per cycle, not per year: simple annualisation puts it near 3.7% at 30 days to resolution, 15.9% at seven days, 37.1% at three. Capital is locked at both venues until settlement, and the legs release asynchronously. Kalshi settles shortly after expiration, with timing that varies by market and review; Polymarket's optimistic oracle takes roughly two hours undisputed and four to six days if disputed, per docs.polymarket.com/concepts/resolution.

Rounding, Ticks, and Depth

Three mechanical details break small trades. The venues round in opposite directions: Kalshi rounds the trade fee up to the next cent per order and rounds your balance change down, both adverse; Polymarket rounds to five decimals; Polymarket US uses banker's rounding to the cent. In Kalshi's own documented example, three one-lot fills at $0.055 carry $0.0255 of stated trade fees but $0.0350 of net fees, which is worth reading in full on the fee-rounding page before you model anything small.

Ticks quantize the rest: on a one-cent grid a 2.75 cent break-even makes three cents the smallest tradable winner. Do not assume that grid. Kalshi deleted its tick_size field in March 2026 and now quotes fixed-point decimal prices carrying four places, its own fee examples price at $0.055, and Polymarket publishes a minimum tick per token rather than one increment across the exchange. Pull the market's actual increment before rounding anything, and especially above 0.90, which is where the table says the surviving edge lives.

Depth is the third detail, and it is the one you cannot read anonymously. Kalshi's order book endpoint is the single market-data route that requires signed authentication, so a scanner running on public data alone sees top of book and overstates what it can fill. The key itself is free; the point is that a tool without one is guessing. Top-of-book size is also small in absolute terms more often than screenshots suggest: the Kalshi ask on KXIMPEACH-29-JAN20 we priced on 8 August 2026 was quoted for 0.96 contracts, a genuine sub-contract quantity in the fixed-point book rather than a rounding artefact. Our Kalshi API guide covers the wiring.

What a Prediction Market Arbitrage Calculator Cannot Check

A calculator can verify the fee-adjusted break-even, both venues' prices and depth, the matched-quantity split, and tick-grid feasibility. It cannot verify that the two markets are the same question. A live Kalshi Bitcoin market settles on a sixty-second average of CF Benchmarks' Bitcoin Real-Time Index, and its own secondary rules warn that not all cryptocurrency price data is the same. Kalshi's S&P 500 series lists its settlement source as, verbatim, "For example, Google Finance." Polymarket settles the same underlying through an optimistic oracle with a bond, a challenge window and a token-holder vote. Two markets sharing a headline but diverging there are not one position hedged; they are two bets on two sources agreeing, and when the sources disagree both legs can lose the full dollar.

The tooling is plentiful and uneven. A GitHub search for "polymarket kalshi arbitrage" returned 267 public repositories on 8 August 2026, and we came away without one we would put a name to: several of the top results are keyword-stuffed, and at least one ships a simulation mode that generates synthetic opportunities and then reports a headline win rate computed off them. The better-documented scanners reach for keyword matching, embeddings and an LLM step just to decide whether two markets ask the same thing, which is the clearest available signal that matching is the hard part rather than the arithmetic. It is also why the data we build at Predictefy carries settlement-source fields next to prices.

Frequently Asked Questions

What does a prediction market arbitrage calculator do?

A prediction market arbitrage calculator checks whether two opposing prices still sum to less than $1.00 after fees, then sizes the legs. It should test p + fee(p) + q + fee(q) < 1 using each venue's own formula, use equal contract counts, and report net edge per pair rather than the raw gap. It cannot confirm the two markets resolve on the same source.

How do you calculate prediction market arbitrage?

Add the YES price on one venue to the NO price on the other and subtract from $1.00 for gross edge per pair. Compute each venue's fee at its own price and subtract both. Divide what remains by the total cost basis for return on capital, then divide by days to resolution. What survives is usually a fraction of a cent.

What is the prediction market arbitrage formula?

Gross edge per pair is 1 − (pA + qB), and the lock survives fees only when 1 − (pA + qB) > fA(pA) + fB(qB). Most Kalshi series and every fee-charging Polymarket category use coefficient × contracts × p × (1 − p), so break-even approximates to (0.07 + r) × p × (1 − p), where r is the Polymarket category rate. Kalshi also has a flat fee type and per-series multipliers, and Polymarket US charges a flat 0.06 instead of category rates, so confirm both coefficients against the published schedules before sizing.

Is there an arbitrage calculator for Polymarket and Kalshi?

Many exist as open-source projects, and a GitHub search for the phrase returned 267 public repositories on 8 August 2026. We found none we would recommend by name: star counts are not a quality signal here, several top results are keyword-stuffed, and at least one ships a mode that manufactures synthetic opportunities. Whatever you build or trust has to price each venue's fee formula separately, and Kalshi's order book endpoint requires authentication, so a tool reading only public data sees top of book and will overstate how much you can fill.

Why does my prediction market arb calculator show profit that never appears?

Usually one of four things. It reported the gross gap instead of the fee-adjusted edge. It modelled a single fill at the best price when your order actually ate through several levels of the book. The size quoted at that best price was a fraction of what you assumed, sometimes under one contract. Or the two markets do not resolve identically. The first three cost the edge; the fourth can cost the full dollar.

Conclusion

The math fits on an index card, and running it properly disqualifies most of what looks like an opportunity. A calculator that kills most candidates is doing its job. What no spreadsheet catches is a settlement source that differs by sixty seconds, or an oracle that resolves by token-holder vote rather than by exchange determination. Pull your Kalshi coefficient from GET /trade-api/v2/series/{series_ticker} rather than any table, check which of the two Polymarket exchanges your quote came from, and read both sets of resolution rules before committing capital; for the platform differences start with Polymarket vs Kalshi. Kalshi is CFTC-regulated; Polymarket International is the crypto-settled exchange and lists the United States as close-only. Availability differs by state and country, and none of this is financial, tax or legal advice.