I ran an arbitrage bot on Polymarket. Here are the real numbers. · Kacho
WritingAll "I built a Polymarket trading bot" posts I've read on X are absolute LARPs that<br>are completely out of touch with reality. Whenever you come across articles claiming<br>$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<br>as those made-up stories, but it's real. I've got the numbers to back it up, and I<br>believe you can genuinely learn from my experience — what I did right, and the mistakes<br>I made along the way. Between January and late March 2026, my bot placed 3,858 bets<br>on Polymarket and finished up $4,973 . It never once tried to predict who would win.<br>The only bets it actually made money on were the ones where it locked in an arbitrage —<br>a bet on both teams at once.
$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.<br>You don't have to trust me on any of it — the wallet is public :<br>polymarket.com/@b00k13 — you can have a look at the<br>all-time graph and number of predictions and confirm for yourself.
Polybot · cumulative P&L (Jan–Apr 2026)completedNet P&L<br>+$4,973
Total bets<br>3,858
Volume<br>$95,830
Win rate<br>47.5%
The graph above gives you a more in-depth look into the bot's metrics — $4,973 of net<br>profit from 3,858 bets , on just under $96k of volume . A slow, boring grind<br>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<br>more than $4,973, and another part quietly handed a big chunk of it back. Pulling those<br>two apart is the whole point of this post — I'll get to it once I've explained how the<br>thing actually worked.
The strategy of this bot is very simple — fetch odds from sports bookmakers, convert<br>those odds into implied probabilities, and then place limit orders with a minimum<br>7% edge with respect to the implied prob. If we get filled for both teams of a<br>game, we have locked in an arbitrage. If we get filled only for one team, we have<br>a directional bet.
Either way, we should always be profitable, as we only place bets with a positive<br>edge — but this wasn't the case. Obviously, there were some errors in my execution.<br>Nothing fatal, since the bot was still profitable. But by the end I'd built an entire<br>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<br>I was playing around with Polymarket. I was doing a thorough analysis (AI-assisted,<br>of course) of whether the Trump administration would release the UFO files that week, or<br>whether Israel was about to bomb some neighbouring country. To spare you a mouthful,<br>I was gambling.
At some point I took an interest in esports games, such as CS2, Dota 2, and LoL.<br>I know these games well from my childhood, but it's not nostalgia that<br>grabbed my attention. I made a key observation — the spreads on these markets were<br>unusually wide (sometimes 20–30¢) and, more importantly, these markets had<br>volume . To put that in simpler terms, people were placing bets on Polymarket for<br>esports games at significantly worse odds than the bookmakers, simply<br>because there weren't enough market makers competing in the order book.
It seemed too good to be true, so I decided to give it a quick try.<br>I placed a 100-share limit order on the favourite team in a Dota 2 game that was<br>about to start in an hour or two. The spread was >20¢ . It wasn't long before the order<br>got filled. I'd checked the odds beforehand and already<br>calculated my edge at roughly 12%. Nevertheless, I decided to try to close an<br>arbitrage on the position — so I placed a bet on the other team too, another 100 shares.<br>My order got filled before the game even started. I'd bought 200 shares for a<br>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<br>orderbooks, you can skip this part. For the strategy of the bot to work, all you<br>need is odds from sportsbooks for the games you want to bet on and a bot that<br>correctly places and updates bets based on these odds. That's it. Sounds simple, but<br>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<br>respectively. What you need to do here is compute the underlying probabilities and<br>remove the vig (the extra that bookmakers add to guarantee profit). You do this the<br>following way:
First, turn each decimal odd into an implied probability — that's just one over<br>the odds:
pFaZe=11.57=0.637,pNAVI=12.28=0.439p_{\text{FaZe}} = \frac{1}{1.57} = 0.637, \qquad<br>p_{\text{NAVI}} = \frac{1}{2.28} =...