TL;DR. Over 30 days (Sep 6 – Oct 6, 2026) our scanner logged about 4.87 million arbitrage opportunities in esports across 27 books: sportsbooks, crypto sportsbooks and two prediction markets, Polymarket and Kalshi.
- About 1 in 6 arbs (15.9%) had a Polymarket or Kalshi leg. Polymarket alone appeared in 642,253, Kalshi in 138,017.
- Arbs between Polymarket and Kalshi themselves are rare: 4,435 in a month, 0.09% of all arbs. The other side of a prediction-market arb is almost always a sportsbook.
- Arbs with an exchange leg last longer. In live play, 23.9% of them survive 10 seconds or more, versus 14.4% for sportsbook-only arbs. The median lifetime of a Polymarket arb is 4.1 s, twice the overall 2.0 s.
- In prematch, exchange arbs pay more: median ROI 2.30% versus 1.54% for sportsbook-only.
Below: the dataset, how we measured it, the tables, and a short look at the pipeline that produces the numbers.
What counts as an arb
An arbitrage (a "surebet") is a set of bets on every outcome of the same market, placed at different books, where the implied probabilities add up to less than 1:
1/k1 + 1/k2 < 1 ROI = 1 / (1/k1 + 1/k2) - 1
Example: Team A to win the match at 2.10 on a sportsbook, Team B to win at a price that converts to 2.05 decimal on Polymarket (a 48.8¢ share). 1/2.10 + 1/2.05 = 0.964, so the arb returns about 3.7% whatever the result. Prediction-market prices are probabilities, so they need converting first: odds converter, surebet calculator.
Dataset and method
- Window: 30 days, Sep 6 – Oct 6, 2026.
- Coverage: esports only — CS2, Dota 2, League of Legends, Valorant, Rainbow Six and smaller titles. 25 sportsbooks and crypto sportsbooks plus Polymarket and Kalshi. Full list with per-book stats: bookmakers.
- Lifetime of an arb = last time it was seen minus first time it was seen. All books are read at the same time and every arb is recomputed on each cycle, so lifetime has a resolution of about 2 seconds.
- ROI = the best ROI the arb reached during its life.
- Caveats. The set of books changed during the window, so daily volumes are not a market trend. A slower scanner sees fewer short-lived arbs and a longer median. An arb seen in a single snapshot is often a timing difference between two quotes rather than a real mispricing — which is why we show price age on every leg.
Finding 1: prediction markets are in 1 of 6 arbs
| Arbs, 30 days | Share of all arbs | Live | Prematch | |
|---|---|---|---|---|
| All books | ~4.87M | 100% | 81% | 19% |
| With Polymarket | 642,253 | 13.2% | 64% | 36% |
| With Kalshi | 138,017 | 2.8% | 65% | 35% |
| Polymarket + Kalshi together | 4,435 | 0.09% | — | — |
Two things stand out. Exchanges are relatively stronger in prematch: a third of their arbs happen before the match starts, versus a fifth across all books. And Polymarket and Kalshi rarely disagree with each other on esports — when they are mispriced, they are mispriced against sportsbooks. If you are looking for "Polymarket vs Kalshi arbitrage" in esports, the volume is on the prediction market vs sportsbook side.
Finding 2: exchange arbs live longer
| Arb type | Mode | Median life | 90th percentile | Lasting ≥10 s | Lasting ≥60 s | Median ROI |
|---|---|---|---|---|---|---|
| Sportsbooks only | Live | 2.0 s | 14.2 s | 14.4% | 1.2% | 3.37% |
| With an exchange leg | Live | 2.0 s | 24.4 s | 23.9% | 2.9% | 3.09% |
| Sportsbooks only | Prematch | 14.1 s | 93.5 s | 55.9% | 17.8% | 1.54% |
| With an exchange leg | Prematch | 10.3 s | 177.4 s | 51.7% | 17.3% | 2.30% |
In live play the median is the same, but the tail is much fatter: an arb with a Polymarket or Kalshi leg is 1.7x more likely to survive 10 seconds and 2.4x more likely to survive a minute. Across both modes, 44.6% of exchange arbs live 5 seconds or more, versus 29.7% for sportsbook-only arbs.
By book, the median lifetime is 4.1 s for Polymarket and 4.0 s for Kalshi, against 2.0 s for all arbs. Arbs lasting a minute or more make up 8.3% of Polymarket arbs and 6.9% of Kalshi arbs, against 4.5% overall. Per-book pages: Polymarket, Kalshi.
Our reading (a hypothesis, not a measured cause): sportsbooks reprice esports lines with trading teams and feeds, while exchange prices move only when someone trades. A stale order sits in the book until it is taken.
Finding 3: the pairs that produce them
| Pair | Arbs | Lasting ≥60 s | Median life | Median ROI |
|---|---|---|---|---|
| Olimp – Polymarket | 135,476 | 7,738 | 6.1 s | 2.81% |
| Duel – Polymarket | 80,260 | 11,062 | 4.2 s | 1.96% |
| 1xBet – Polymarket | 69,719 | 5,437 | 4.0 s | 2.96% |
| BetBoom – Polymarket | 39,014 | 3,849 | 6.4 s | 3.91% |
| Marathon – Polymarket | 37,755 | 2,575 | 6.1 s | 3.47% |
| Kalshi – Olimp | 25,469 | 1,413 | 4.2 s | 2.82% |
All pairs with daily-updated stats: pairs.
Finding 4: which esports titles
CS2 dominates everywhere, but exchanges lean towards slower titles. League of Legends is 18% of Polymarket arbs and 26% of Kalshi arbs, against about 7% across all books. Dota 2 is 20% of Polymarket arbs. Slower games mean fewer price jumps per minute, which fits the longer lifetimes above. More on titles: esports arbitrage, live vs prematch.
How the pipeline works
For the developers reading this, a short version of what produces these numbers:
-
One adapter per book. Each sportsbook is read by its own process (Python) and normalized into a canonical market model:
(kind, scope, line)— match winner, map winner, handicap, total, rounds, kills. - Prediction markets in Go. Polymarket markets are discovered through the Gamma API and priced from the CLOB WebSocket order book; Kalshi comes in through its REST API and the v2 WebSocket feed. Exchange prices are converted from probabilities to decimal odds before they meet sportsbook lines.
- Event matching. The same match has different names, IDs and start times on 27 books. A matcher (Go) resolves them into one event using team-name normalization, tournament rules and a rules file that humans and strong automatic evidence can update.
- Server-side arb engine. Arbs are computed in one place, on the server, for every matched market on every cycle. When an arb disappears, its first/last seen time, max ROI, market kind and books go into a history table — the source of this article.
- Delivery. The browser gets a compact WebSocket stream with ROI, the age of every quote and a direct link to the event, because in live play the question is not "is there an arb" but "is it still there".
Practical notes
- Liquidity is the limit on exchanges. Polymarket and Kalshi do not limit winning accounts, but an arb is only as large as the depth at the quoted price.
- Fees and withdrawals differ. See Polymarket fees and withdrawal and Polymarket or a bookmaker.
- Sportsbooks limit arbers. The exchange is often the leg that stays open longest; the sportsbook leg is the one that gets restricted.
- Check quote age before you click. A 10% "arb" is more often a stale line than a gift.
Step-by-step guide: how to arbitrage Polymarket and Kalshi. Lifetime study across all books: how long do surebets last.
Data from Dozor, an esports arbitrage scanner covering 25 sportsbooks plus Polymarket and Kalshi; free plan without a card. Dozor is an information tool, not a bookmaker. 18+. Betting involves risk of loss, and sportsbooks may restrict arbitrage accounts.
Top comments (0)