Cross-Platform Edge Calculator

A price gap between two platforms is not an edge until both fee structures have been subtracted. Enter the prices you can actually see on each venue and your intended size, and this calculator shows whether anything survives — and how much slippage the position can absorb before it stops working.

Interactive tool · Prediction Markets · Updated October 2026

Read this before you enter any numbers. This calculator does arithmetic on the figures you type in. It does not fetch live prices, and it cannot tell you whether two markets are the same bet. That judgement is yours, and it is the part that decides whether the result below means anything at all.

Step 1 — Is This Even the Same Bet?

An arbitrage requires two contracts that describe the identical underlying outcome. Four keys must match. If any one of them differs, you are not arbitraging — you are holding two separate directional bets, and the calculator output below would be meaningless.

Contract identity check

Tick each key only if you have personally verified it on both market pages. The verdict stays blocked until all four are confirmed — that is deliberate.

  • Same outcome definitionBoth contracts resolve on the same factual question — the same numeric threshold, the same definition of what counts. A rate “cut” and a rate “change” are not the same event.
  • Same resolution dateThe same deadline governs both. Two contracts about the same meeting can differ on which session, or close on a listed timestamp rather than the event.
  • Same resolution sourceBoth cite the same declaring body or data release. Different sources can disagree on the same day's outcome.
  • Same binary framingYES on one maps to the same real-world outcome as YES on the other — no inverted or negated wording, and equal share counts on both legs.

Step 2 — Your Prices, Size and Fees

Enter the price you would actually pay on each platform — the price you can get at your size, not the mid-market quote. On Kalshi the applicable fee for an order is shown behind the “i” icon next to “You're buying”; enter that figure rather than a rate from a general schedule, because Kalshi's fees vary by market.

Leg 1 — Polymarket

Taker fee is calculated as shares × rate × price × (1 − price), charged when the order matches. Makers who rest limit orders pay nothing — if you are resting rather than crossing, set the rate to 0.

Rates shown are the category figures published on this site. Confirm them against Polymarket's live fee documentation before relying on a marginal result — rates can change.

Leg 2 — Kalshi

Kalshi charges a transaction fee on expected earnings, and the amount differs by market. Rather than guess a rate, enter the fee your own order ticket shows for this trade.

If the order ticket shows no fee for this market, enter 0. If you are resting an order on a market that carries a maker fee, enter the fee that would apply on execution.

Size

Both legs must run in equal share counts for the payoff to be fixed. Unequal sizes leave you net long or short, which is not an arbitrage.

Step 3 — Does the Edge Survive?

Confirm all four identity keys above to unlock the verdict.
All-in cost per pair—Both legs plus both fees
Net edge per pair—$1.00 payout less all-in cost
Net profit, total—Across both legs at your size
Return on capital—Net profit ÷ capital committed
Fees paid, both legs—Polymarket + Kalshi combined
Slippage you can absorb—Per pair, before the trade goes flat

How to read “slippage you can absorb”. It is the margin between your all-in cost per pair and the $1.00 payout. If it reads 1.2¢, then the moment your two fills come in a combined 1.2¢ worse than the prices you typed, the “arbitrage” returns nothing — and any further deterioration makes it a loss on a position where you have already paid both fees.

A Worked Example

The defaults on this page are a real pairing on purpose: 48¢ NO on Polymarket against 49¢ YES on Kalshi, 100 share pairs, a Politics category rate and a 1¢ per-contract Kalshi fee. Walking through the arithmetic shows what the tool is actually doing:

Entry cost, both legs = 48¢ + 49¢ = 97¢ per pair
Polymarket taker fee = 100 × 0.04 × 0.48 × (1 − 0.48) = $0.9984 ≈ 1.00¢ per pair
Kalshi fee = 1¢ × 100 contracts = 1.00¢ per pair
All-in cost per pair = 97¢ + 1.00¢ + 1.00¢ = 99.00¢
Payout per pair = $1.00
Net edge per pair = $1.00 − 99.00¢ = 1.00¢

Two points are worth taking from that sequence. First, the raw gap looked like 3¢ — 48¢ plus 49¢ leaves three cents of headroom under the $1.00 payout — and after both fee bases it is down to one cent. Fees ate two thirds of the apparent edge. Second, the position is still positive, which is exactly the case where a careless trader sizes up without checking depth.

The number that matters is the last line, not the gap you started with. Compare the raw gap against the all-in cost: a pair priced at 97¢ with 2¢ of fees has no edge at all, no matter how attractive the two prices look side by side.

Change either price by a single cent and the result flips. That fragility is the real message of the tool: on a pair this tight, the entire outcome depends on whether the prices you typed are the prices you can actually get at your size, which is why Step 2 asks for the price at your size rather than the mid-market quote.

Why This Tool Has No Live Data

A live cross-platform comparison would need to read current prices from both venues in the browser. That is not possible here, for a specific and verifiable reason: Kalshi's market-data API does not return the cross-origin header a browser requires to read a response from another domain, so a page on poly-sim.com cannot fetch its prices client-side. Polymarket's public endpoints do permit it.

The choice was therefore between showing a half-populated comparison — one leg live, one stale or absent — or building an honest tool that takes the numbers you can see and does the fee arithmetic correctly. A comparison page that guesses the missing leg would be worse than no page at all. This is the honest version.

For the underlying mechanics, see Kalshi Fees Explained, the practical obstacles in prediction market arbitrage, and why identical-looking contracts often are not in Kalshi vs Polymarket.

What This Tool Deliberately Does Not Do

The honest scope of this page is narrow, and stating the boundary plainly is more useful than implying capabilities it does not have:

TaskThis toolWhere it belongs instead
Fetching live prices from either venueNo — you type them inThe market pages themselves, and any server-side tooling
Deciding whether two markets are the same betNo — it gates on your own four ticksYour reading of both rule sets
Arithmetic on prices, size and feesYes — this is the whole function—
Choosing a stake sizeNoKelly Calculator
Estimating whether an edge is realNo — it takes your inputs as givenExpected Value Calculator
Executing anythingNo — nothing on this site places tradesYour own accounts with each venue

The reason for the identity gate in Step 1 is the failure mode it prevents. A calculator that produces a confident green verdict while the trader has paired two different contracts is worse than no calculator at all, because it manufactures conviction out of nothing. The gating is deliberately annoying.

Turning the Number Into a Decision

Once the output is on screen, the remaining work is not arithmetic — it is deciding whether the situation the number describes is the situation you are actually in:

  1. Check depth at your size on both legs. The prices you entered were the top of the book. Confirm enough resting size exists to fill your whole order, or re-run the tool at the price your full size would actually pay.
  2. Ask which leg fills first. If you cross one side and the other moves before the pair completes, you are briefly holding an unhedged directional position — and you have already paid one fee for the privilege.
  3. Note the resolution timing difference. Two contracts can settle hours apart. The capital tied up on the slower leg is a real cost even when the fees are zero.
  4. Size from the net edge, not the raw gap. Use the Kelly Calculator with the post-fee figure — sizing from the headline gap is how a positive-expectation trade becomes an oversized one.
  5. Decide the exit before entry. Holding to resolution pays one fee; closing early pays two. That choice changes the arithmetic in Step 2.

Read alongside Prediction Market Arbitrage for the structural obstacles, Kalshi Fees Explained for the fee basis on each leg, and the Kalshi Hub for how the venue itself operates.

Frequently Asked Questions

What are the inputs to a cross-platform arbitrage?

Buy YES on one platform and NO on the other in equal share counts. The pair costs the two prices plus both fees, and pays exactly $1.00 whichever way the event resolves. The edge exists only while the all-in cost per pair stays below $1.00.

Why is the fee on the Polymarket leg different at different prices?

Because the formula is shares × rate × price × (1 − price). The product of a price and its complement peaks at 50¢ and falls away toward both extremes, so a mid-priced contract carries the largest fee for its category and an extreme-priced one carries much less.

Why can't I just enter a Kalshi fee rate?

Because Kalshi's fee varies by market — its documentation notes that some markets carry different fees, typically around special events, and some carry maker fees. A rate pulled from a general schedule may not be the fee your order actually incurs, so the calculator asks for the per-contract figure from your own order ticket.

Is this financial advice?

No. This is an arithmetic tool. It evaluates the numbers you enter and nothing else — it does not verify that the two contracts are the same bet, does not fetch live prices, and does not recommend any trade. Any position you take is your own responsibility.

Why did the verdict stay locked while I filled in the prices?

Because all four identity keys in Step 1 have to be ticked first. The lock is intentional: without confirming the same outcome, date, source and binary framing on both venues, any arithmetic the tool produces would be describing a pairing that may not exist.

Which number should I look at first?

The all-in cost per pair, then the net edge. The raw gap between the two quoted prices is the least informative figure on the page, because it ignores both fee bases and both spreads — in the worked example a 3¢ apparent gap became a 1¢ net edge after fees alone.

What does “slippage you can absorb” mean in practice?

It is the distance between your all-in cost per pair and the fixed $1.00 payout — the total buffer available before the pair stops returning anything. If two fills come in worse than the prices you typed by more than that figure, the position is flat or negative and both fees have already been paid.

Size the Position Once You Know the Net Edge

A surviving edge still needs a stake size. The Kelly calculator turns your probability estimate and the price you can get into a fraction of bankroll.

Open Kelly Calculator →

Trade on Polymarket — World's Largest Prediction Market

Non-custodial, USDC-settled, 1,000+ active markets. No account required — connect your wallet and trade.

Open Polymarket →

Prefer a Rule-Based Process to Improvised Entries?

The arithmetic above only helps if your entries follow a written rule set rather than a hunch. Coinrule builds rule-based crypto strategies without code — useful for keeping a systematic process disciplined across venues.

Explore Coinrule →