How Prediction Market Arbitrage Works (Polymarket, Kalshi)

Buy YES and NO for less than a dollar. One of them pays out a dollar. Keep the difference.

Trevor I. Lasn Trevor I. Lasn
· 4 min read

Polymarket and Kalshi are prediction markets. You trade on the outcome of real events — elections, economic data, whether it’ll snow in April. Every question has two contracts: YES and NO.

Each contract pays out $1 if it’s right, $0 if it’s wrong. You buy at whatever price the market sets.

Here’s where it gets interesting. In a perfectly efficient market, YES + NO always equals $1.00. But markets aren’t always efficient.

Take a question like “Will Bitcoin hit $100k by March?”

ContractPrice
YES$0.42
NO$0.55
Total$0.97

YES + NO = $0.97. That’s less than a dollar.

You buy both. One YES contract for $0.42 and one NO contract for $0.55. Total cost: $0.97.

Now think about what happens:

  • Bitcoin hits $100k → YES pays $1.00, NO pays $0. You get $1.00.
  • Bitcoin doesn’t hit $100k → YES pays $0, NO pays $1.00. You get $1.00.

Either way, you get $1.00 back. You paid $0.97. That’s $0.03 profit per pair, no matter what happens.

YOU
pay $0.97
┌────┴────┐
▼ ▼
YES NO
$0.42 $0.55
│ │
▼ ▼
┌─────────────────┐
│ ONE of these │
│ pays out $1.00 │
└────────┬────────┘
You get $1.00
Profit: $0.03

This is arbitrage. You’re not predicting anything. You’re exploiting a pricing gap.

Why the Gap Exists

In theory, YES + NO should always equal $1.00. In practice, they drift apart:

Efficient market After news breaks
YES $0.50 YES $0.58 ← buyers rush in
NO $0.50 NO $0.39 ← hasn't adjusted
────────── ──────────
Sum $1.00 Sum $0.97 ← gap opens

New information hits. A news story breaks and traders rush to buy YES. The YES price jumps, but NO hasn’t adjusted yet. For a brief moment, the sum drops below $1.00.

Low liquidity. If barely anyone is trading a market, prices get stale. One side updates while the other lags behind.

Different platforms. Polymarket might price YES at $0.45 while Kalshi prices NO on the same event at $0.52. Same event, different markets, different prices.

Same event: "Will X happen?"
Polymarket Kalshi
┌──────────┐ ┌──────────┐
│ YES $0.45│ │ YES $0.51│
│ NO $0.58│ │ NO $0.52│
└──────────┘ └──────────┘
Buy YES here ───────────────────► Buy NO here
$0.45 + $0.52
──────────
Total: $0.97
Payout: $1.00
Profit: $0.03

Three cents doesn’t sound like much. But it scales linearly.

PairsCostPayoutProfit
1$0.97$1.00$0.03
100$97$100$3
1,000$970$1,000$30
10,000$9,700$10,000$300

The return is small per unit, but it’s risk-free. The only question is how many pairs you can buy before the price moves.

The Catches

Fees. Polymarket only charges taker fees — if you place a limit order that sits on the book (maker), you pay zero fees. You only pay when you take someone else’s order. Kalshi charges a transaction fee on your expected earnings, and some markets also have maker fees on resting orders (common during elections, big sporting events, awards). A $0.03 gap can disappear after fees eat into it, so how you place orders matters. Maker orders on Polymarket keep the full spread.

Slippage. The price you see isn’t always the price you get. If you try to buy 1,000 YES contracts at $0.42, there might only be 200 available at that price. The rest fill at $0.43, $0.44, and now your gap is gone.

Order book for YES:
Price Available
$0.42 200 contracts ← you want 1,000
$0.43 300 contracts
$0.44 500 contracts
───
1,000 total
Average price: $0.434, not $0.42
Your gap just shrank from $0.03 to $0.016

Speed. These windows last seconds, not minutes. By the time you spot the gap and click buy, someone else already took it. This is why most prediction market arbitrage is done by bots — programs that watch prices across markets and execute trades in milliseconds.

Liquidity. Thin markets have bigger gaps but you can’t buy enough pairs to make meaningful money. Liquid markets have smaller gaps but can absorb larger orders.

The gap has to be large enough to survive fees, slippage, and execution time. In practice, that means most opportunities aren’t worth it for humans clicking buttons. But for automated systems watching hundreds of markets simultaneously, the small edges add up.


Found this article helpful? You might enjoy my free newsletter. I share dev tips and insights to help you grow your coding skills and advance your tech career.


Check out these related articles that might be useful for you. They cover similar topics and provide additional insights.

Webdev
5 min read

WebAssembly (Wasm): When (and When Not) to Use It

Understanding the real use cases for WebAssembly beyond the performance hype

Nov 25, 2024
Read article
Node.js
19 min read

Common Causes of Memory Leaks in JavaScript

Identify and fix common JavaScript memory leaks (Node.js and Deno.js)

Aug 10, 2024
Read article
Webdev
5 min read

Add Auth to Astro 5 with Clerk in 5 Minutes

The simplest setup for adding Clerk authentication to your Astro project, with minimal code

Dec 18, 2024
Read article
Tech
3 min read

The Credit Vacuum

Being a developer sometimes feels like being the goalkeeper in a soccer match. You make a hundred great saves, and no one bats an eye. But let one ball slip through, and suddenly you're the village idiot.

Oct 7, 2024
Read article
Tech
3 min read

Original work is now an endangered species

When everything looks the same, being different becomes valuable again

Oct 24, 2025
Read article
Webdev
4 min read

Understanding Vue's Suspense

How the Suspense component manages async dependencies and improves loading states in Vue apps

Aug 23, 2024
Read article
Webdev
6 min read

Inside the CSS Engine: CSSOM Explained

A deep dive into how browsers parse and manipulate CSS, its impact on web performance, and why it matters

Oct 25, 2024
Read article
Tech
5 min read

Can OSSPledge Fix Open Source Sustainability?

The Open Source Pledge aims to address open source sustainability challenges by encouraging companies to pay $2,000 per developer per year

Nov 17, 2024
Read article
Javascript
6 min read

AggregateError in JavaScript

Handle multiple errors at once

Sep 2, 2024
Read article

This article was originally published on https://www.trevorlasn.com/blog/how-prediction-market-polymarket-kalshi-arbitrage-works. It was written by a human and polished using grammar tools for clarity.