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
Founder & CEO of 0xinsider.com — the Bloomberg terminal for prediction markets.

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.


Trevor I. Lasn

Founder & CEO of 0xinsider.com — the Bloomberg terminal for prediction markets. Product engineer based in Tartu, Estonia, building and shipping for over a decade.


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.

Reflections
3 min read

Code Wins Arguments

How Meta and other companies use the 'code wins arguments' mindset to turn ideas into reality

Sep 19, 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
Webdev
8 min read

Become a Web Developer in 180 Days

A comprehensive roadmap to becoming a proficient web developer

Oct 29, 2019
Read article
Reflections
3 min read

When Tasked with a Problem, Start with the Bigger Picture

When faced with a challenge, I always step back to see the whole picture first. It's like pausing a complex strategy game to study the map. You might lose a few seconds of play time, but you gain a crucial understanding of the battlefield.

Oct 3, 2024
Read article
Javascript
7 min read

JavaScript Sets and Maps: Beyond Arrays and Objects

How to handle unique values and key-value pairs properly without type coercion and performance issues

Nov 17, 2024
Read article
Webdev
4 min read

How To Implement Content Security Policy (CSP) Headers For Astro

Content Security Policy (CSP) acts like a shield against XSS attacks. These attacks are sneaky - they trick your browser into running malicious code by hiding it in content that seems trustworthy. CSP's job is to spot these tricks and shut them down, while also alerting you to any attempts it detects.

Oct 16, 2024
Read article
Webdev
5 min read

SecretLint — A Linter for Preventing Committing Credentials

A guide to catching and preventing credential leaks in your code using Secretlint

Oct 22, 2024
Read article
Tech
5 min read

Repopack (now Repomix): Pack Your Entire Repository Into A Single File

A tool that packages your code to easily share with LLM models.

Oct 21, 2024
Read article
Tech
3 min read

Why Anthropic (Claude AI) Uses 'Member of Technical Staff' for All Engineers (Including Co-founders)

Inside Anthropic's unique approach to preventing talent poaching and maintaining organizational equality

Oct 23, 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.