kacho.io
Writing
15 min read

I ran an arbitrage bot on Polymarket. Here are the real numbers.

In early 2026 my bot netted ~$5k on Polymarket. The guaranteed arbitrage made +$8.3k — but capturing it forced directional bets that lost $3.2k. The whole story, with every number.

  • polymarket
  • arbitrage
  • python
  • build-in-public

All "I built a Polymarket trading bot" posts I've read on X are absolute LARPs that are completely out of touch with reality. Whenever you come across articles claiming $X,XXX/mo, do yourself a favour and don't spend your time reading nonsense.

The story I'm going to share with you is not like that. It's nowhere near as impressive as those made-up stories, but it's real. I've got the numbers to back it up, and I believe you can genuinely learn from my experience — what I did right, and the mistakes I made along the way. Between January and late March 2026, my bot placed 3,858 bets on Polymarket and finished up $4,973. It never once tried to predict who would win. The only bets it actually made money on were the ones where it locked in an arbitrage — a bet on both teams at once.

My public Polymarket profile, @b00k13 — all-time profit/loss and stats
$4,960.77 all-time profit, biggest win $267.75. The 2,785 'predictions' are unique markets — the bot placed 3,858 bets across them, since a hedged arb is two bets in one market.

You don't have to trust me on any of it — the wallet is public: polymarket.com/@b00k13 — you can have a look at the all-time graph and number of predictions and confirm for yourself.

Polybot · cumulative P&L (Jan–Apr 2026)completed
Net P&L
+$4,973
Total bets
3,858
Volume
$95,830
Win rate
47.5%

The graph above gives you a more in-depth look into the bot's metrics — $4,973 of net profit from 3,858 bets, on just under $96k of volume. A slow, boring grind upward, which is exactly what you want it to be.

But that headline number hides the real story. One part of what the bot did made far more than $4,973, and another part quietly handed a big chunk of it back. Pulling those two apart is the whole point of this post — I'll get to it once I've explained how the thing actually worked.

The strategy of this bot is very simple — fetch odds from sports bookmakers, convert those odds into implied probabilities, and then place limit orders with a minimum 7% edge with respect to the implied prob. If we get filled for both teams of a game, we have locked in an arbitrage. If we get filled only for one team, we have a directional bet.

Either way, we should always be profitable, as we only place bets with a positive edge — but this wasn't the case. Obviously, there were some errors in my execution. Nothing fatal, since the bot was still profitable. But by the end I'd built an entire analytics stack just to understand why.

How I ended up betting on esports

Long story short — I didn't have much to do during the Christmas holidays and I was playing around with Polymarket. I was doing a thorough analysis (AI-assisted, of course) of whether the Trump administration would release the UFO files that week, or whether Israel was about to bomb some neighbouring country. To spare you a mouthful, I was gambling.

At some point I took an interest in esports games, such as CS2, Dota 2, and LoL. I know these games well from my childhood, but it's not nostalgia that grabbed my attention. I made a key observation — the spreads on these markets were unusually wide (sometimes 20–30¢) and, more importantly, these markets had volume. To put that in simpler terms, people were placing bets on Polymarket for esports games at significantly worse odds than the bookmakers — simply because there were not enough market makers competing in the order book.

It seemed too good to be true, so I decided to give it a quick try. I placed a 100-share limit order on the favourite team in a Dota 2 game that was about to start in an hour or two. The spread was >20¢. It wasn't long before the order got filled. I'd checked the odds beforehand and already calculated my edge at roughly 12%. Nevertheless, I decided to try to close an arbitrage on the position — so I placed a bet on the other team too, another 100 shares. My order got filled before the game even started. I'd bought 200 shares for a combined $81, locking in $19 of riskless profit.

I wasn't predicting anything

Let's run through the math very quickly. If you are familiar with odds, vig, and Polymarket orderbooks, you can skip this part. For the strategy of the bot to work, all you need is odds from sportsbooks for the games you want to bet on and a bot that correctly places and updates bets based on these odds. That's it. Sounds simple, but it really isn't, at least from an execution POV.

Say you are betting on a CS2 game, FaZe Clan vs. NAVI. The odds are 1.57 and 2.28 respectively. What you need to do here is compute the underlying probabilities and remove the vig (the extra that bookmakers add to guarantee profit). You do this the following way:

First, turn each decimal odd into an implied probability — that's just one over the odds:

pFaZe=11.57=0.637,pNAVI=12.28=0.439p_{\text{FaZe}} = \frac{1}{1.57} = 0.637, \qquad p_{\text{NAVI}} = \frac{1}{2.28} = 0.439

Add them up and you get more than 100%:

0.637+0.439=1.0760.637 + 0.439 = 1.076

That extra 7.6% is the vig — the margin the bookmaker bakes in. To get the fair probabilities, normalise so they sum to one:

p^i=pipFaZe+pNAVI\hat{p}_i = \frac{p_i}{p_{\text{FaZe}} + p_{\text{NAVI}}} p^FaZe=0.6371.076=0.592,p^NAVI=0.4391.076=0.408\hat{p}_{\text{FaZe}} = \frac{0.637}{1.076} = 0.592, \qquad \hat{p}_{\text{NAVI}} = \frac{0.439}{1.076} = 0.408

So the books make FaZe Clan about a 59% favourite and NAVI 41%. That's the fair value I line up against Polymarket.

The bot never guessed a winner. It arbitraged the gap between two venues:

  • Sportsbooks (Spinbetter, GGBet…) — easily scraped. I treat their odds as "fair value."
  • Polymarket — a binary prediction market where shares settle at $1 or $0, with a thinner, occasionally mispriced order book.

If the books imply a team has a 59% chance to win, a fair price on Polymarket is about 59¢. In such scenarios, we'd place a +1¢ bet with respect to the current best bid, up to 52¢ per share. The instant our order gets filled, we'd chase a hedge for the opposite outcome. In our example, if we got filled at 52¢, we'd bid up to 41¢ for the other team, locking in a minimum 7¢ per share. That way, whoever wins is completely meaningless for us, as we managed to buy $1 shares for 93¢ or less.

The hedge, one game — buy both sides for less than $1
Books implyFaZe 59%·NAVI 41%
Buy FaZe
≤ 52¢
+
Hedge NAVI
≤ 41¢
=
Total cost
93¢
One side settles at $1 — locked ≥ 7¢/share, whoever wins

Why esports games

The reason why I focused on esports games is that these opportunities that I described above are mostly found there. At the time of writing this post, I was still able to find a market for a Mobile Legends: Bang Bang (a mobile version of League of Legends) which satisfies both conditions that are necessary for this specific bot — high spread and a decent volume.

A Mobile Legends market on Polymarket — Bigetron By Vitality vs EVOS, MPL Indonesia
Bigetron vs EVOS (MPL Indonesia), 5 Jun 2026 — best bid 46¢, best ask 73¢: a 27¢ spread on $237.54 of volume.

The above image is a perfect example for the kind of games you should be placing limit orders on. The market already has a decent volume of $237.54 despite the high spread of 27¢. I took this screenshot on 5 Jun in the morning, meaning that there are still genuine opportunities on Polymarket to compete as a market maker.

The hard part — execution

Disclaimer: I coded my Polymarket bot all with the help of AI. I barely ever wrote a line of code. Nevertheless, don't even consider this will be trivial for any AI model to code on its own. The hard part is not the scraping of odds from bookies and writing those to a relational database. You can get your AI buddy to do this in under 30 minutes. What's challenging is to build a Polymarket bot that keeps track of hundreds of markets simultaneously and acts according to your strategy.

I'm not going to go into great detail here on what the bot is supposed to do. I will save this for another thorough writeup of the whole architecture of the bot and what it's supposed to do in different scenarios. How to outbid, downbid, update orders when odds change, handle differences in team names between Polymarket and sportsbooks, to name a few. If you want to play this game you will have to compete head to head with other hustlers who are also chasing that bread. There's no easy money anywhere in the world, and when there is, it never lasts long — so you have to make it count.

The headline numbers

If you've got to this part, congrats, this is where things start to get interesting. Here's the whole run, start to finish:

MetricJanFebMarAprTotal
PeriodJan 6–31Feb 1–28Mar 1–31Apr 1–28Jan 6 – Apr 28
Total bets1,4201,2421,153433,858
Closed positions1,3551,1351,090423,622
Volume traded$22,890$43,095$29,532$313$95,830
Net realized P&L+$1,897.61+$2,505.56+$390.40+$179.50+$4,973.06
Win rate50.2%48.3%43.4%42.9%47.5%
Biggest single win$165.22$207.31$267.75$65.99$267.75

Two things jump out month over month. First, the run was front-loaded — February alone made +$2,506, then March collapsed to +$390 and the win rate slid from 50% into the low 40s. The edge was decaying in real time, which is most of the reason I eventually pulled the plug. Second, April is just the tail — 43 trades settling out as I wound the bot down.

There are several reasons why performance decayed in March. To name a few: for some time I had a bug where the implied probabilities for the teams were swapped — the bot was confidently placing bets on the wrong team. I was also using another approach for removing vig called Shin's method, which resulted in the bot being overconfident on the favourite teams and also lost me money.

That's just a couple of examples off the top of my head. I ended up building a complete analytics suite and a dashboard so I could investigate not-so-obvious issues like that. In the next article I will go into detail about all the mistakes I made and all the things I'd have done better if I were to start this over again.

A few of the metrics in the table may surprise people. A 47.5% win rate sounds like losing — but for this strategy it's fine. Half my bets are the hedge side of an arbitrage, deliberately placed on the less likely outcome, and the profit is locked across the pair, not won on either leg. So a win rate hovering around 50% is exactly what you'd expect.

You can even sit below 50% and still finish up — as long as your directional bets, the ones on the underdog, come good often enough to pay for themselves. On its own, the win rate tells you almost nothing here. The P&L is what matters.

Also, the biggest win being only $267.75 is the whole thesis: this wasn't a few lucky moonshots. It was 3,858 small, mostly-hedged bets, worth roughly ~$25 on average, grinding upward.

The arbs won. Capturing them is what cost me.

Split the P&L by what kind of bet it was and the run tells a different story:

BucketWhat it isP&L
Arbitrage (1,075 arbs)Both sides matched → guaranteed+$8,293.46
Directional (unhedged)The leftover leg when a hedge didn't fill−$3,184.78
Cancelled matches (236)50/50 refunds — see below−$134.43
Fees / gas / rounding−$1.19
Net realized+$4,973.06

The arbitrage profit is genuinely impressive for a ~3 month run. But here's what people miss about this strategy: you can't capture those arbs without taking the directional bets. In a wide-spread market you can't just buy both sides at a good price — you post a limit order and wait. When one leg fills, you're already holding that side; you post the hedge and wait for it to fill too. If it does, the arb is locked. If it doesn't — the price moves, the game starts — you're left with an unhedged, directional position you never chose.

So the directional book isn't a clever side bet I decided to make. It's the unavoidable cost of capturing the arbs — the leftover legs that never got hedged. It cost me −$3,184. The +$8,293 and the −$3,184 are two halves of the same strategy: you don't get the guaranteed profit without risking the legs that don't complete. The real question isn't "why did I make bad bets" — it's why the directional residual leaked so much, and that's where my execution mistakes come in.

I found out many things to improve and I will cover those in one of my next articles, simply because it's a lot to cover. I was eager to expand the bot to cover as many markets as possible. I was overconfident with some changes when I shouldn't have been. I've overlooked mistakes that the AI made and deployed them, only to find out later that I'd lost money because of that.

Where the money was made and lost: P&L by game

As soon as I confirmed that the strategy works for Dota 2 and CS2, I instantly started expanding into other esports markets. Eventually, I also gave some sports markets a shot that satisfied the condition of a decent volume and a sufficiently large spread.

Here's that same arb-vs-spec split broken down by game, and you can see exactly where the directional book bled (rounded; excludes cancelled matches, so it sums a little above net):

GameVolumeP&LROIW–LArb P&LSpec P&L
CS2$30,123+$2,380+7.9%571–609+$3,322−$942
Valorant$11,503+$875+7.6%230–233+$973−$98
Dota 2$8,485+$743+8.8%166–184+$825−$82
HoK$1,513+$584+38.6%68–64+$228+$355
LoL$17,376+$502+2.9%308–324+$1,983−$1,480
CoD$2,236+$356+15.9%41–48+$496−$140
MLBB$70+$13+18.1%7–7+$12+$1
Rugby$1,120−$54−4.8%27–26+$95−$150
Hockey$156−$56−35.8%1–5$0−$56
Other$12,178−$235−1.9%300–403+$359−$594

The shape of it is brutal: the arbitrage column is green almost everywhere, and the directional column is red almost everywhere. LoL is the cautionary tale — the arbs there made nearly $2k, but the directional bets gave back −$1,480, so a market that should have been a goldmine netted just +$502. The only game where the directional book actually made money was Honor of Kings (+$355), and I still don't have a clean explanation for why — it also had the best ROI of the lot at 38.6%, on a tiny $1,513 of volume. It was probably just luck.

The big, "efficient" markets paid worse: CS2 turned $30k of volume into 7.9%. That made sense anyway, as there is more competition for these markets with higher volume. And high competition in trading means that you are paying for your mistakes and inefficiencies in cash. In trading there are opportunities around every corner, and if you are not capturing those opportunities, you probably are the opportunity.

The weird one: getting paid (and losing) on cancelled matches

I will give you an example of something I was not even aware was losing me money one month into the project. I had no idea that for esports events it's common for the games to be cancelled, and how Polymarket resolves these cancelled events.

So, when a match is cancelled, Polymarket refunds 50¢ per share regardless of which side you held. That sounds neutral, but it isn't: if I'd bought a favourite at 70¢ and the match got cancelled, I got 50¢ back — a 20¢ loss per share on an outcome that never happened.

And as I mentioned before, my earlier strategy was actually biased towards the favourites, so at the point I found out about this I had lost ~$500. I balanced the strategy eventually and things evened out, so I wasn't hurt from this — but it's just one of the many things you have to be aware of.

Across the whole run, 236 matches were cancelled. A cheap longshot I'd bought at 13¢ turns a tidy profit on the 50¢ refund; a favourite I'd bought at 70¢ takes a loss. Netted out across all 236, they cost me −$134.43 — a whole P&L line from games that were never even played:

Cancelled matches
236
Total cost
$11070.56
Refund (50¢/share)
$10936.13
P&L from cancellations
−$134.43
MatchPositionSharesEntryCostRefundP&LDate
Atrix Esports vs Isurus (BO3) - ESL Challenge
Atrix Esports
393.214¢$54.91$196.60+$141.692026-03-21
MIBR vs FOLHA AMARELA (BO3) - PGL Bucharest:
FOLHA AMARELA
299.911¢$32.99$149.97+$116.982026-02-27
4 SWINES & A BUM vs Lundqvist Lightside (BO1)
4 SWINES & A BUM
300.013¢$40.00$150.00+$110.002026-02-26
SkinRave vs Outfit 49 (BO3) - ESL Challenger
Outfit 49
200.015¢$30.00$100.00+$70.002026-02-22
The Otter Side vs Vantex Esports (BO5) - LPLO
Vantex Esports
200.027¢$54.00$100.00+$46.002026-03-03
Rooster vs Skele (BO3) - CCT Oceania Series #
Skele
108.613¢$14.12$54.30+$40.182026-02-24
ODDIK vs Procyon Gaming (BO3) - ESL Challenge
Procyon Gaming
100.012¢$12.00$50.00+$38.002026-02-18
largadosypelados vs Curralzinho (BO3) - CCT S
Curralzinho
80.3$4.81$40.13+$35.312026-02-04
FUZOS vs kONO.ECF (BO3) - European Pro League
FUZOS
171.030¢$51.59$85.50+$33.912026-03-02
ex-RUBY vs megoshort (BO3) - ESL Challenger L
megoshort
100.018¢$18.00$50.00+$32.002026-03-17
EC BANGA vs MANA eSports (BO3) - ESL Challeng
EC BANGA
100.019¢$19.00$50.00+$31.002026-03-19
ShindeN vs Bounty Hunters Esports (BO3) - PGL
Bounty Hunters Esports
158.731¢$49.01$79.33+$30.322026-02-27
paiN Gaming vs OG (BO2) - DreamLeague Stage 1
paiN Gaming
100.020¢$20.00$50.00+$30.002026-02-18
Bounty Hunters Esports vs Crashers (BO3) - Ao
Crashers
85.015¢$12.75$42.50+$29.752026-03-22
Yakutou Brothers vs Team Yandex (BO2) - Dream
Yakutou Brothers
98.620¢$19.71$49.28+$29.572026-02-18
BetBoom Team vs REKONIX (BO2) - ESL One Birmi
REKONIX
89.017¢$15.13$44.49+$29.372026-03-22
home vs FORZE Reload (BO3) - ESL Challenger L
home
100.024¢$24.00$50.00+$26.002026-02-13
GOAL vs Team Insidious (BO2) - HLL Regular Se
Team Insidious
134.231¢$41.60$67.09+$25.502026-01-29
AaB esport vs Alliance (BO3) - United21 Playo
AaB esport
100.025¢$25.00$50.00+$25.002026-02-11
FUZOS vs Nexus (BO3) - European Pro League Se
FUZOS
100.026¢$26.00$50.00+$24.002026-02-26
MOUZ NXT vs ARCRED (BO3) - NODWIN Clutch Seri
MOUZ NXT
172.436¢$62.46$86.22+$23.772026-01-31
FUT Academy vs Fire Flux Esports (BO1) - ESEA
FUT Academy
50.0$3.50$25.00+$21.502026-01-22
BIG vs ARCRED (BO3) - CCT Europe Series #13 P
ARCRED
100.029¢$29.00$50.00+$21.002026-01-29
B8 Academy vs DRGN TEAM (BO1) - ESEA Advanced
DRGN TEAM
50.010¢$5.00$25.00+$20.002026-01-23
Lazer Cats vs FUZOS (BO3) - JB Pro League Sea
FUZOS
100.032¢$32.00$50.00+$18.002026-02-28
HEROIC Academy vs EC BANGA (BO3) - NODWIN Clu
HEROIC Academy
100.032¢$32.00$50.00+$18.002026-03-11
DOCISK vs Lodis (BO2) - Rift Legends Challeng
DOCISK
100.032¢$32.00$50.00+$18.002026-02-18
Level UP vs Inner Circle (BO3) - EPL Champion
Level UP
49.114¢$6.88$24.55+$17.682026-01-24
PARIVISION vs Team Yandex (BO2) - DreamLeague
Team Yandex
100.033¢$33.00$50.00+$17.002026-02-19
PARIVISION vs Team Liquid (BO2) - DreamLeague
PARIVISION
188.841¢$78.07$94.41+$16.342026-02-18
Tundra Esports vs MOUZ (BO2) - DreamLeague St
MOUZ
105.635¢$36.56$52.78+$16.222026-02-17
WW Team vs Eternal Fire (BO3) - CCT Europe Cl
WW Team
100.034¢$34.00$50.00+$16.002026-03-06
SaD Esports vs NRG Academy (BO3) - VCL North
NRG Academy
43.013¢$5.59$21.50+$15.912026-02-17
ENCE Academy vs MASONIC (BO3) - CCT Europe Cl
MASONIC
108.536¢$39.47$54.24+$14.762026-02-27
FUSION X vs Legiowon (BO3) - VCT Game Changer
Legiowon
51.323¢$11.76$25.65+$13.892026-03-26
MASONIC vs HyperSpirit (BO3)
HyperSpirit
60.027¢$16.20$30.00+$13.802026-01-15
MASONIC vs Eternal Fire (BO3) - European Pro
MASONIC
62.329¢$18.33$31.14+$12.822026-01-22
Rune Eaters vs NPC's IRL (BO3) - European Pro
NPCs IRL
36.916¢$5.98$18.46+$12.482026-02-12
MASONIC vs Supernova (BO3) - CCT Europe Close
Supernova
100.038¢$38.00$50.00+$12.002026-03-19
ALLINNERS vs Brute (BO3) - NODWIN Clutch Seri
Brute
100.038¢$38.00$50.00+$12.002026-01-27
Rooster vs Skele (BO3) - ESL Challenger Leagu
Skele
106.639¢$41.52$53.28+$11.762026-02-21
Imperial vs Galorys (BO3) - PGL Bucharest: So
Galorys
37.020¢$7.40$18.50+$11.102026-02-27
Leviatán GC vs Polar Squad Esports GC (BO3) -
Leviatán GC
100.039¢$39.00$50.00+$11.002026-03-25
ALMO Players vs Team Phantasma (BO2)
ALMO Players
30.016¢$4.80$15.00+$10.202026-01-15
CSDIILIT vs UNiTY esports (BO3) - ESL Challe
CSDIILIT
100.040¢$40.00$50.00+$10.002026-03-19
Bounty Hunters Esports vs Vasco Esports (BO3)
Vasco Esports
69.736¢$25.10$34.87+$9.762026-03-04
megoshort vs Prestige (BO3)
Prestige
30.019¢$5.70$15.00+$9.302026-01-15
HOWL Esports vs Team Phantasma (BO2) - HLL Re
HOWL Esports
23.611¢$2.60$11.80+$9.202026-01-30
ex-GANK Esports vs MANA eSports (BO1) - ESEA
MANA eSports
100.041¢$41.00$50.00+$9.002026-01-27
B8 Academy vs DRGN TEAM (BO1) - ESEA Advanced
B8 Academy
50.033¢$16.50$25.00+$8.502026-01-23
Rebels Gaming vs BASEMENT BOYS (BO3) - ESL Ch
BASEMENT BOYS
70.738¢$26.85$35.33+$8.482026-02-13
BBBMBCBS vs Muttley Crew (BO3) - ESL Challeng
BBBMBCBS
18.5$1.11$9.24+$8.132026-03-20
Partizan Sangal vs Crvena zvezda Esports (BO3
Crvena zvezda Esports
18.5$1.11$9.23+$8.122026-02-14
ENCE Academy vs MASONIC (BO3) - CCT Europe Cl
ENCE Academy
200.046¢$92.00$100.00+$8.002026-02-27
magic vs Omega (BO1) - META Cup Group B
Omega
25.020¢$5.00$12.50+$7.502026-02-21
MASONIC vs HyperSpirit (BO3)
MASONIC
60.039¢$23.10$30.00+$6.902026-01-15
Howlers vs AlQadsiah Esports (BO3) - VCL MENA
Howlers
15.6$0.94$7.81+$6.872026-02-07
Team Spirit vs Team Falcons (BO2) - DreamLeag
Team Spirit
44.136¢$15.76$22.04+$6.282026-02-19
HEROIC Academy vs EC BANGA (BO3) - NODWIN Clu
EC BANGA
15.610¢$1.56$7.78+$6.222026-03-11
MOUZ NXT vs AY4S (BO1) - IEM Atlanta: Global
AY4S
100.045¢$45.00$50.00+$5.002026-02-08
FC Famalicão Esports vs ALLINNERS (BO3) - ESL
FC Famalicão Esports
19.224¢$4.70$9.61+$4.902026-02-13
PARIVISION vs Team Liquid (BO2) - DreamLeague
Team Liquid
106.946¢$48.93$53.45+$4.532026-02-18
DUNDU vs Pigeons (BO3) - JB Pro League Season
Pigeons
10.212¢$1.23$5.12+$3.892026-02-19
PARIVISION vs Aurora (BO2) - DreamLeague Stag
Aurora
100.047¢$47.00$50.00+$3.002026-02-19
BBBMBCBS vs Rooster (BO3) - ESL Challenger Le
Rooster
5.4$0.38$2.69+$2.312026-02-20
Heroic vs NRG (BO3)
NRG
8.625¢$2.17$4.30+$2.132026-01-14
Yangon Galacticos vs Ivory (BO3) - EPL World
Ivory
100.048¢$48.00$50.00+$2.002026-03-13
ex-GANK Esports vs 777 (BO1) - ESEA Advanced
777
5.011¢$0.55$2.50+$1.952026-01-29
Skele vs Mindfreak (BO3) - CCT Oceania Series
Skele
5.014¢$0.70$2.50+$1.802026-02-26
SPIKE Syndicate vs BeFive (BO3) - EBL Regular
SPIKE Syndicate
2.7$0.16$1.35+$1.192026-02-13
STATE vs MINLATE (BO3)
MINLATE
7.735¢$2.69$3.85+$1.152026-01-15
Atreides vs Oxuji Esports (BO3) - CCT Europe
Atreides
99.949¢$48.93$49.93+$1.002026-02-12
Tundra Esports vs MOUZ (BO2) - DreamLeague St
Tundra Esports
3.926¢$1.00$1.93+$0.932026-02-17
BASEMENT BOYS vs HyperSpirit (BO3)
HyperSpirit
15.044¢$6.60$7.50+$0.902026-01-13
Tundra Esports vs Xtreme Gaming (BO2) - Dream
Xtreme Gaming
2.312¢$0.27$1.14+$0.862026-02-18
1H Moneyline
Nuggets
4.837¢$1.76$2.38+$0.622026-01-25
Favbet vs Metizport (BO1) - IEM Rio: Global O
Favbet
2.932¢$0.94$1.46+$0.532026-01-17
BASEMENT BOYS vs HyperSpirit (BO3)
BASEMENT BOYS
10.045¢$4.50$5.00+$0.502026-01-13
ex-KRÜ Esports vs RED Canids (BO3) - ESL Chal
ex-KRÜ Esports
1.1$0.05$0.53+$0.472026-02-18
magic vs Omega (BO1) - META Cup Group B
magic
1.1$0.10$0.55+$0.452026-02-21
TNT vs AM Gaming (BO1) - ESEA Advanced Europe
AM Gaming
15.047¢$7.05$7.50+$0.452026-01-25
MANA eSports vs STATE (BO3) - European Pro Le
STATE
3.237¢$1.17$1.59+$0.412026-01-16
MANA eSports vs STATE (BO3) - European Pro Le
MANA eSports
3.237¢$1.17$1.58+$0.412026-01-16
FC Famalicão Esports vs ALLINNERS (BO3) - ESL
ALLINNERS
19.248¢$9.23$9.62+$0.382026-02-13
megoshort vs CSDIILIT (BO3) - BC Game Master
CSDIILIT
1.426¢$0.35$0.68+$0.322026-03-05
Xtreme Gaming vs GamerLegion (BO2) - DreamLea
GamerLegion
1.430¢$0.41$0.69+$0.282026-02-19
Astini+5 vs Zero Tenacity (BO3) - European Pr
Zero Tenacity
1.845¢$0.82$0.91+$0.092026-03-21
VP.Prodigy vs los kogutos (BO1) - ESEA Advanc
los kogutos
2.050¢$1.00$1.00+$0.002026-01-27
ex-KRÜ Esports vs Prison Breakers (BO3) - Bet
ex-KRÜ Esports
6.050¢$3.00$3.00+$0.002026-03-03
AM Gaming vs WATERMELON (BO1) - ESEA Advanced
AM Gaming
4.050¢$2.00$2.00+$0.002026-01-27
Isurus vs paiN Academy (BO3) - BetBoom Storm
Isurus
51.150¢$25.54$25.54+$0.002026-03-10
FC Famalicão Esports vs ex-RUBY (BO3) - ESL C
ex-RUBY
100.050¢$50.00$50.00+$0.002026-02-19
paiN Gaming vs OG (BO2) - DreamLeague Stage 1
OG
138.050¢$69.00$69.00+$0.002026-02-18
PRIME vs Bushido Wildcats (BO3) - NODWIN Clut
Bushido Wildcats
100.050¢$50.00$50.00+$0.002026-02-16
los kogutos vs CSDIILIT (BO3) - A1 Gaming Le
los kogutos
50.050¢$25.00$25.00+$0.002026-01-24
los kogutos vs UNiTY esports (BO1) - ESEA Adv
UNiTY esports
2.050¢$0.98$0.98+$0.002026-01-28
Aurora Young Blood vs DEPO (BO1) - ESEA Advan
Aurora Young Blood
4.050¢$2.00$2.00+$0.002026-01-27
WATERMELON vs Endless Journey (BO3) - Exort S
WATERMELON
9.050¢$4.50$4.50+$0.002026-01-16
ex-RUBY vs CSDIILIT (BO3) - NODWIN Clutch Se
ex-RUBY
100.050¢$50.00$50.00+$0.002026-03-19
Leo Team vs OldBoys (BO1)
Leo Team
10.051¢$5.10$5.00−$0.102026-01-15
STATE vs MINLATE (BO3)
STATE
9.253¢$4.90$4.60−$0.302026-01-15
ENJOY vs VP.Prodigy (BO3) - CCT Europe Closed
VP.Prodigy
10.954¢$5.87$5.43−$0.432026-02-13
Team Spirit vs Team Falcons (BO2) - DreamLeag
Team Falcons
44.151¢$22.48$22.04−$0.442026-02-19
AM Gaming vs SIUUUUUU (BO1) - ESEA Advanced E
AM Gaming
2.966¢$1.94$1.47−$0.472026-01-29
Fluxo vs Fake do Biru (BO3) - Circuit X Betbo
Fluxo
50.051¢$25.50$25.00−$0.502026-01-21
Wildcard vs Wanted Goons (BO3) - ESL Challeng
Wildcard
3.067¢$2.03$1.52−$0.522026-04-27
BASEMENT BOYS vs Bebop (BO3) - CCT Europe Ser
Bebop
30.052¢$15.60$15.00−$0.602026-01-20
Morningstar vs Eruption (BO3)
Morningstar
30.052¢$15.60$15.00−$0.602026-01-18
Team Spirit vs Natus Vincere (BO2) - DreamLea
Natus Vincere
135.350¢$68.28$67.63−$0.652026-02-18
Heroic vs NRG (BO3)
Heroic
6.760¢$4.04$3.37−$0.672026-01-14
ARCRED vs 777 (BO3)
ARCRED
10.058¢$5.80$5.00−$0.802026-01-12
illwill vs FC Famalicão Esports (BO3) - ESL C
illwill
100.051¢$50.98$49.98−$1.002026-02-14
PARIVISION vs Team Yandex (BO2) - DreamLeague
PARIVISION
100.051¢$50.99$49.99−$1.002026-02-19
DUNDU vs CSDIILIT (BO3) - JB Pro League Seas
DUNDU
100.051¢$51.00$50.00−$1.002026-02-17
los kogutos vs HAVU (BO3) - CCT Europe Series
los kogutos
100.051¢$51.00$50.00−$1.002026-03-05
ex-Fingers Crossed vs CSDIILIT (BO3) - BC Ga
ex-Fingers Crossed
100.051¢$51.00$50.00−$1.002026-03-03
CSDIILIT vs WHITEBIRD (BO3) - ESL Challenger
WHITEBIRD
100.051¢$51.00$50.00−$1.002026-03-18
SINQU vs GenOne (BO3) - ESL Challenger League
GenOne
100.051¢$51.00$50.00−$1.002026-03-19
Alliance vs VP.Prodigy (BO3) - United21 Playo
Alliance
100.051¢$51.00$50.00−$1.002026-02-13
Fire Flux Esports vs Flame Sharks (BO1) - ESE
Fire Flux Esports
100.051¢$51.00$50.00−$1.002026-01-27
Morningstar vs Take me away (BO3) - ESL Chall
Morningstar
100.051¢$51.00$50.00−$1.002026-03-20
Pigeons vs home (BO3) - NODWIN Clutch Series
home
100.051¢$51.00$50.00−$1.002026-02-13
WHITEBIRD vs Mousquetaires (BO3) - ESL Challe
WHITEBIRD
100.051¢$51.00$50.00−$1.002026-03-18
ex-CPH Wolves vs Washington (BO3) - A1 Gaming
ex-CPH Wolves
50.052¢$26.00$25.00−$1.002026-01-24
WW Team vs AIRLYA (BO3) - ESL Challenger Leag
WW Team
100.051¢$51.00$50.00−$1.002026-02-16
Nemiga vs Eternal Fire (BO3) - A1 Gaming Leag
Nemiga
100.051¢$51.00$50.00−$1.002026-02-15
MIBR vs ODDIK (BO3) - CCT South America Serie
MIBR
50.052¢$26.00$25.00−$1.002026-01-26
BAAM Esports vs Team RA'AD (BO3) - VCL MENA:
Team RAAD
4.377¢$3.35$2.17−$1.172026-02-08
University War GC vs Olimpo Gold (BO3) - VCT
Olimpo Gold
14.860¢$8.86$7.38−$1.482026-03-26
Imperial vs 9z (BO3) - IEM Rio: Americas Clos
Imperial
50.053¢$26.50$25.00−$1.502026-01-21
petardka vs BASEMENT BOYS (BO3)
BASEMENT BOYS
30.055¢$16.50$15.00−$1.502026-01-15
SkinRave vs LAG Gaming (BO3) - CCT North Amer
SkinRave
86.352¢$44.88$43.15−$1.732026-02-10
ReThink vs Sangal ALTERS (BO3) - United21 Gro
ReThink
100.052¢$52.00$50.00−$2.002026-02-21
Bebop vs home (BO3) - CCT Europe Closed Quali
Bebop
100.052¢$52.00$50.00−$2.002026-02-13
ex-Zero Tenacity vs Pigeons (BO3) - ESL Chall
ex-Zero Tenacity
100.052¢$52.00$50.00−$2.002026-03-19
FUT Academy vs Fire Flux Esports (BO1) - ESEA
Fire Flux Esports
50.055¢$27.50$25.00−$2.502026-01-22
megoshort vs Prestige (BO3)
megoshort
48.955¢$27.03$24.44−$2.592026-01-15
SaD Esports vs NRG Academy (BO3) - VCL North
SaD Esports
100.053¢$53.00$50.00−$3.002026-02-17
ALLINNERS vs Brute (BO3) - NODWIN Clutch Seri
ALLINNERS
100.053¢$53.00$50.00−$3.002026-01-27
ex-CPH Wolves vs CSDIILIT (BO3)
ex-CPH Wolves
30.060¢$18.00$15.00−$3.002026-01-16
ShindeN vs Imperial (BO3) - PGL Bucharest: So
Imperial
100.053¢$53.00$50.00−$3.002026-02-28
CSDIILIT vs UNiTY esports (BO3) - ESL Challe
UNiTY esports
100.053¢$53.00$50.00−$3.002026-03-19
LAG Gaming vs regain (BO3) - ESL Challenger L
LAG Gaming
100.053¢$53.00$50.00−$3.002026-02-18
MOUZ NXT vs ARCRED (BO3) - NODWIN Clutch Seri
ARCRED
272.451¢$139.56$136.22−$3.352026-01-31
LAGUNA vs AaB esport (BO3) - United21 Playoff
AaB esport
38.659¢$22.84$19.28−$3.572026-02-12
BakS eSports vs BIG EQUIPA (BO1)
BakS eSports
10.086¢$8.60$5.00−$3.602026-01-13
Rune Eaters vs CSDIILIT (BO3) - BC Game Mast
Rune Eaters
100.054¢$54.00$50.00−$4.002026-03-07
MAJOR WINNERS vs Dark Tigers (BO3) - Exort Se
MAJOR WINNERS
50.058¢$29.00$25.00−$4.002026-01-25
Team Nemesis vs VP.Prodigy (BO3) - ESL Challe
Team Nemesis
100.054¢$54.00$50.00−$4.002026-02-13
Leviatán GC vs Polar Squad Esports GC (BO3) -
Polar Squad Esports GC
100.054¢$54.00$50.00−$4.002026-03-25
Rebels Gaming vs BASEMENT BOYS (BO3) - ESL Ch
Rebels Gaming
100.054¢$54.00$50.00−$4.002026-02-13
Supernova vs EC BANGA (BO3) - NODWIN Clutch S
Supernova
100.054¢$54.00$50.00−$4.002026-03-11
MASONIC vs Eternal Fire (BO3) - European Pro
Eternal Fire
112.354¢$60.50$56.14−$4.362026-01-22
Universe vs STATE (BO3) - A1 Gaming League Gr
STATE
50.059¢$29.50$25.00−$4.502026-01-24
BIG vs ARCRED (BO3) - CCT Europe Series #13 P
BIG
37.163¢$23.38$18.55−$4.822026-01-29
megoshort vs CSDIILIT (BO3) - BC Game Master
megoshort
100.055¢$55.00$50.00−$5.002026-03-05
HAVU vs Leo Team (BO3) - ESL Challenger Leagu
Leo Team
100.055¢$55.00$50.00−$5.002026-03-18
WW Team vs Pigeons (BO3) - BC Game Masters Gr
WW Team
100.055¢$55.00$50.00−$5.002026-03-07
MASONIC vs Supernova (BO3) - CCT Europe Close
MASONIC
100.055¢$55.00$50.00−$5.002026-03-19
JiJieHao vs Change The Game (BO3)
JiJieHao
30.068¢$20.40$15.00−$5.402026-01-18
Sangal vs Nemiga (BO3) - NODWIN Clutch Series
Nemiga
100.056¢$56.00$50.00−$6.002026-02-03
TDK vs Rebels Gaming (BO3) - ESL Challenger L
TDK
100.056¢$56.00$50.00−$6.002026-02-17
MAJOR WINNERS vs CYBERSHOKE Prospects (BO3) -
MAJOR WINNERS
58.161¢$35.25$29.05−$6.192026-01-24
Lynn Vision vs Unsettled Resentment (BO3)
Lynn Vision
30.071¢$21.30$15.00−$6.302026-01-19
OG vs Ever Growing (BO3)
OG
30.071¢$21.30$15.00−$6.302026-01-19
PRIME vs illwill (BO3) - ESL Challenger Leagu
illwill
101.156¢$57.09$50.54−$6.542026-02-16
The Huns Esports vs Just Swing (BO3)
The Huns Esports
30.072¢$21.60$15.00−$6.602026-01-18
ex-Zero Tenacity vs UNiTY esports (BO3) - ESL
UNiTY esports
100.057¢$57.00$50.00−$7.002026-02-15
Yawara Esports vs Bounty Hunters Esports (BO3
Bounty Hunters Esports
100.057¢$57.00$50.00−$7.002026-02-18
eternal premium vs MASONIC (BO3) - ESEA Advan
MASONIC
100.057¢$57.00$50.00−$7.002026-03-10
ex-Zero Tenacity vs WW Team (BO3) - BC Game M
WW Team
100.057¢$57.00$50.00−$7.002026-03-03
Bounty Hunters Esports vs Vasco Esports (BO3)
Bounty Hunters Esports
167.454¢$90.80$83.72−$7.072026-03-04
Omega vs FUZOS (BO3) - BC Game Masters Group
Omega
103.157¢$58.73$51.57−$7.162026-03-04
GenOne vs los kogutos (BO3)
GenOne
34.073¢$24.90$17.00−$7.902026-01-18
DOCISK vs Lodis (BO2) - Rift Legends Challeng
Lodis
100.058¢$58.00$50.00−$8.002026-02-18
BC.Game Esports vs GRINGOS (BO1) - Roman Impe
BC.Game Esports
100.058¢$58.00$50.00−$8.002026-03-13
DUNDU vs Pigeons (BO3) - JB Pro League Season
DUNDU
100.058¢$58.00$50.00−$8.002026-02-19
BetBoom Team vs REKONIX (BO2) - ESL One Birmi
BetBoom Team
89.059¢$52.50$44.49−$8.012026-03-22
Curralzinho vs Alzon (BO3) - CCT South Americ
Alzon
115.057¢$65.80$57.50−$8.302026-02-25
Rare Atom vs TEAM XDM (BO3)
Rare Atom
30.080¢$24.00$15.00−$9.002026-01-17
EC BANGA vs MANA eSports (BO3) - ESL Challeng
MANA eSports
100.059¢$59.00$50.00−$9.002026-03-19
FOLHA AMARELA vs Players (BO3) - ESL Challeng
FOLHA AMARELA
100.059¢$59.00$50.00−$9.002026-03-21
Lazer Cats vs FUZOS (BO3) - JB Pro League Sea
Lazer Cats
187.855¢$103.78$93.90−$9.882026-02-28
largadosypelados vs METANOIAGG (BO3) - CCT So
largadosypelados
100.060¢$60.00$50.00−$10.002026-03-01
1WIN vs EC BANGA (BO3) - ESL Challenger Leagu
1WIN
100.060¢$60.00$50.00−$10.002026-03-18
GOAL vs Team Insidious (BO2) - HLL Regular Se
GOAL
134.258¢$77.19$67.10−$10.102026-01-29
Bounty Hunters Esports vs Crashers (BO3) - Ao
Bounty Hunters Esports
85.062¢$52.70$42.50−$10.202026-03-22
RED Canids vs Vasco Esports (BO3) - CCT South
RED Canids
100.061¢$61.00$50.00−$11.002026-02-13
Nuclear TigeRES vs Nexus (BO3) - ESL Challeng
Nuclear TigeRES
100.062¢$62.00$50.00−$12.002026-02-15
FUZOS vs kONO.ECF (BO3) - European Pro League
kONO.ECF
171.057¢$97.77$85.50−$12.272026-03-02
Nexus vs GRINGOS (BO1) - Roman Imperium Cup G
Nexus
100.063¢$63.00$50.00−$13.002026-03-14
Team Spirit vs GamerLegion (BO2) - DreamLeagu
Team Spirit
100.063¢$63.00$50.00−$13.002026-02-20
FUZOS vs Eternal Fire (BO3) - CCT Europe Clos
Eternal Fire
100.063¢$63.00$50.00−$13.002026-03-02
Level UP vs Inner Circle (BO3) - EPL Champion
Inner Circle
100.064¢$64.00$50.00−$14.002026-01-24
aimclub vs EC BANGA (BO3) - ESL Challenger Le
aimclub
100.064¢$64.00$50.00−$14.002026-03-18
K27 vs Bebop (BO3) - CCT Europe Series #16 Pl
K27
100.065¢$65.00$50.00−$15.002026-02-25
BetBoom Team vs Team Liquid (BO2) - DreamLeag
Team Liquid
134.361¢$82.56$67.13−$15.432026-02-19
home vs FORZE Reload (BO3) - ESL Challenger L
FORZE Reload
100.066¢$66.00$50.00−$16.002026-02-13
OG vs GRINGOS (BO1) - Roman Imperium Cup Grou
OG
200.058¢$116.00$100.00−$16.002026-03-14
WHITEBIRD vs CSDIILIT (BO3) - NODWIN Clutch
WHITEBIRD
100.066¢$66.00$50.00−$16.002026-02-23
AaB esport vs Alliance (BO3) - United21 Playo
Alliance
131.462¢$82.02$65.70−$16.312026-02-11
Sakura Esports vs dnp (BO3) - Dust2.us Eagle
dnp
100.067¢$67.00$50.00−$17.002026-02-05
WW Team vs Eternal Fire (BO3) - CCT Europe Cl
Eternal Fire
200.059¢$117.99$100.00−$18.002026-03-06
SAW vs TEAM ASCEND (BO1) - Roman Imperium Cup
SAW
100.068¢$68.00$50.00−$18.002026-03-29
SkinRave vs Outfit 49 (BO3) - ESL Challenger
SkinRave
200.059¢$118.00$100.00−$18.002026-02-22
Imperial vs Galorys (BO3) - PGL Bucharest: So
Imperial
100.068¢$68.00$50.00−$18.002026-02-27
Rooster vs Skele (BO3) - ESL Challenger Leagu
Rooster
500.054¢$269.00$250.00−$19.002026-02-21
Sharks vs METANOIAGG (BO3) - Circuit X Betboo
Sharks
50.088¢$44.00$25.00−$19.002026-01-22
Aomqu and friends vs Ivory (BO3) - EPL World
Ivory
110.167¢$74.27$55.07−$19.202026-02-15
ALMO Players vs Team Phantasma (BO2)
Team Phantasma
60.083¢$49.50$30.00−$19.502026-01-15
SkinRave vs regain (BO3) - CCT North America
SkinRave
100.070¢$70.00$50.00−$20.002026-02-09
Team Yandex vs Aurora (BO2) - DreamLeague Sta
Aurora
100.070¢$70.00$50.00−$20.002026-02-20
FUZOS vs Nexus (BO3) - European Pro League Se
Nexus
119.767¢$80.01$59.85−$20.152026-02-26
4 SWINES & A BUM vs Lundqvist Lightside (BO1)
Lundqvist Lightside
392.055¢$216.68$196.00−$20.682026-02-26
FOLHA AMARELA vs Guara Esports (BO3) - CCT So
FOLHA AMARELA
100.071¢$71.00$50.00−$21.002026-03-13
Yakutou Brothers vs Team Yandex (BO2) - Dream
Team Yandex
98.672¢$70.97$49.29−$21.692026-02-18
DashSkins vs Charrados FC (BO3) - CCT South A
DashSkins
297.858¢$172.19$148.91−$23.282026-03-14
Howlers vs AlQadsiah Esports (BO3) - VCL MENA
AlQadsiah Esports
69.985¢$59.29$34.93−$24.362026-02-07
ex-RUBY vs megoshort (BO3) - ESL Challenger L
ex-RUBY
200.063¢$125.99$100.00−$26.002026-03-17
Rune Eaters vs NPC's IRL (BO3) - European Pro
Rune Eaters
100.077¢$77.00$49.99−$27.012026-02-12
home vs MASONIC (BO3) - CCT Europe Series #15
MASONIC
103.277¢$79.23$51.61−$27.612026-02-04
FUSION X vs Legiowon (BO3) - VCT Game Changer
FUSION X
151.868¢$103.72$75.91−$27.812026-03-26
Skele vs Mindfreak (BO3) - CCT Oceania Series
Mindfreak
100.078¢$77.99$50.00−$28.002026-02-26
ShindeN vs Bounty Hunters Esports (BO3) - PGL
ShindeN
259.161¢$158.62$129.53−$29.092026-02-27
home vs Nexus (BO3) - CCT Europe Series #15 P
Nexus
110.077¢$85.14$55.00−$30.142026-02-05
The Last Resort vs Pigeons (BO3) - ESL Challe
The Last Resort
100.081¢$81.00$50.00−$31.002026-03-17
Inner Circle Esports vs Misa Esports (BO3) -
Inner Circle Esports
100.081¢$81.00$50.00−$31.002026-02-12
mouse vs Mythic (BO3) - CCT North America Ser
Mythic
100.083¢$83.00$50.00−$33.002026-02-06
Partizan Sangal vs Crvena zvezda Esports (BO3
Partizan Sangal
118.578¢$92.77$59.23−$33.542026-02-14
ex-KRÜ Esports vs RED Canids (BO3) - ESL Chal
RED Canids
100.087¢$87.00$50.00−$37.002026-02-18
Rooster vs Skele (BO3) - CCT Oceania Series #
Rooster
132.180¢$105.30$66.04−$39.262026-02-24
The Otter Side vs Vantex Esports (BO5) - LPLO
The Otter Side
304.364¢$195.86$152.17−$43.692026-03-03
largadosypelados vs Curralzinho (BO3) - CCT S
largadosypelados
180.378¢$140.35$90.13−$50.232026-02-04
CYBERSHOKE Esports vs DEPO (BO1) - META Cup G
CYBERSHOKE Esports
500.062¢$308.00$250.00−$58.002026-02-21
Atrix Esports vs Isurus (BO3) - ESL Challenge
Isurus
393.273¢$288.63$196.60−$92.032026-03-21
MIBR vs FOLHA AMARELA (BO3) - PGL Bucharest:
MIBR
399.974¢$296.95$199.97−$96.982026-02-27
Cancelled matches are refunded at 50¢ per share regardless of entry price.

What's next

Why the edge faded

If you're ever fortunate and hard-working enough to find a trading edge in any market, unless your bot is fairly sophisticated or there is some other factor stopping others from replicating you, chances are that your edge is going to vanish fast.

This is, in rough terms, what happened with the bot. Eventually there was more competition for the market making and fees got introduced, so the edge got thinner. Nevertheless, I believe there is still room to compete in Polymarket, maybe not as much as before, but from what I've recently checked, the opportunities are there.

I switched the bot off at some point in April — not because it stopped working, but because I lost focus and I didn't spend the necessary time to improve and support it. In general, once it's working it's mostly plug and play, but it's always necessary to devote some of your time for things to run smoothly.

Rewriting the core in Rust

I have some plans for June. I'm rewriting the core in Rust — for correctness first, not speed. The reason is simple: I've had a couple of moments where the bot had >$3k riding on a single market, and a silent bug at that size is terrifying. I was fortunate enough to catch those early and cash out at roughly the same price, but I don't want to rely on luck. That means a lot more unit tests, to be sure every path is correct.

Speed matters too. The other market-making bots are quicker to outbid me, so their orders sit on top of the book most of the time — I need the rewrite to close that gap.

Writing this article helped me collect my thoughts, refresh my memory on how I built this, and get me hyped up about working on this bot again. I hope reading this was as fun and useful as it was for me. In the next article I will do a deeper teardown of the architecture and the analytics dashboard you've been looking at numbers from, and then — the fun part — turning it back on, in public, with the live numbers on this site.

If you want the early, unfiltered version of all of this, subscribe — and until then, the entire track record is sitting on the public wallet if you'd like to pick it apart.