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?
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:
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:
| Task | This tool | Where it belongs instead |
|---|---|---|
| Fetching live prices from either venue | No — you type them in | The market pages themselves, and any server-side tooling |
| Deciding whether two markets are the same bet | No — it gates on your own four ticks | Your reading of both rule sets |
| Arithmetic on prices, size and fees | Yes — this is the whole function | — |
| Choosing a stake size | No | Kelly Calculator |
| Estimating whether an edge is real | No — it takes your inputs as given | Expected Value Calculator |
| Executing anything | No — nothing on this site places trades | Your 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:
- 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.
- 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.
- 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.
- 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.
- 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 →