It has captivated the attention of various news streams over the last few months. Allegations of various poker sites being infested with bots. Non-human players, following pre-decided lines of code, taking money from the player pool.
Many players are shocked by this, horrified even. But a small group of elite professionals barely bats an eyelid. Why? Because they don’t need Joe Ingram to go on stream before they realise that bots are present in the vast majority of online games. It’s simply been a reality of daily life for the last 5-10 years.
Not only have excellent players been aware of the bot problem but they have developed systems and tactics for identifying and crushing bots. (Don’t believe me on this? See a post I made back in 2011 revealing details of a bot-ring I had uncovered ).
There will be two key components to this article –
1) Identifying bots
2) Anti-bot strategy
It seemed 100% intuitive to me that certain players were exhibiting non-human behavior. Some of my students could sit in the same player-pool over a big sample and not notice anything untoward. Perhaps it’s less obvious than it seemed. Besides, even the security teams of large poker sites apparently have trouble identifying bots. (Shots fired). So, here is the list for things to look out for.
Highest Volume – Bots can play some sick hours, they don’t need to stop for food/sleep. This is not to say that every high-volume player is a bot. However, the highest volume opponents in our database are usually the most likely candidates for being non-human.
Playing 24 hours round the clock would obviously be a huge give-away, and it happens in some cases. Most bot owners attempt to fly below the radar by playing 6-12 hour stretches before switching off their machine.
Identical Stats – Good players should typically be analyzing their highest volume opponents away from the tables. If a group of players appear to have identical stats over big samples, there is the possibility of non-human activity. This is especially the case if one of those stats significantly deviates from population average. For example, it’s not weird if 5 guys have a raise-vs-flop-cbet of 8%. (8% is roughly average after all). It’s super unusual if 5 guys with big samples all have a raise-vs-flop-cbet of 25%, something is nearly always going on there. Remember that most bots operate as part of a bot-ring. This means that any time we encounter a bot, this typically means there will be identical bots playing in the same games. This is what generates the feeling of infestation. It’s possible to be at a 6max tables and have 3 or more identical bots playing against us. The most worrying aspect of bots playing as part of a ring is the possibility of colluding by sharing hole-card information or DB information in the form of stats.
Profile Bots – A profile bot is one which doesn’t operate purely based on a default game plan, but takes advantage of stats to augment the profitability of decisions. I.e, if a bot notices we are folding too frequently to 4bets, it might proceed by 4-betting any 2 cards. This is naturally something human players attempt also, but human players don’t usually adjust so immediately and relentlessly. A human player might typically increase his 4-bet aggression slightly, while still sometimes folding the case on us, hoping to fly below the radar. The bot might just commence 4-betting 100% of the time, giving zero consideration to his image. The totalitarian efficiency of 4-betting absolutely everything is much more in line with non-human “psychology”.
Where things really go down the rabbit hole is when an unknown joins the table and starts 4betting 100% of his opening range against us. He has no info on us, we’ve never played a hand together, and he’s now 4betting 100% of holdings with the same brutal aggression as his apparently unrelated comrade. It doesn’t take a genius to figure out that not only are these guys part of the same bot-ring, but they are also colluding profile bots who are sharing databases.
Seating Tendencies – Some bots are specifically coded with 5 or 6 handed games in mind. Maybe the bot owners have tried running their bot 4-handed, but let’s say it doesn’t currently have the “intelligence” to stand up to the rigours of a short-handed environment. No problem! We’ll just code the bot to sit out every single time the tables become 4-handed.
So, imagine now that we’ve unfortunately picked one of those tables with 3 bot opponents. (Usually it’s not quite this bad, especially given some of the bots will refuse to play against each other. But it’s possible to sometimes get an unlucky table with 3 bots). The two human opponents decide they’ve lost enough money for the day and decide to quit the table. It’s us and the three bots. Guess what happens the very next hand? All three suspected bots sit out at exactly the same time. They don’t quit, they just sit there. A couple of minutes passes and a human joins the table. Guess what happens now? All bots immediately sit back in. Now of course, bumhunting produces these kind of activities even amongst human players – but when we are dealing with a micro-stakes game, something questionable is clearly taking place.
Bet-Sizing Tendencies – Bots tend towards not being good at varying their bet-sizings. This is not to say that they only have one bet-sizing range, they often have several. But the sizings used are always identical (even if in terms of percentage of pot rather than an absolute bet-sizing). Of course, humans can sometimes appear like this as a result of using scripts or bet buttons. But it’s very rare you will find a bot capable of mixing up his bet-sizing beyond pre-defined bet-sizing ranges. The real give-is when other players at the limits are using identical bet-sizing ranges, especially when the poker client itself does not offer those as default bet-sizes via buttons.
Timing – Usually there is a decent amount of variation with human timing. Sometimes they will act quickly, other times slowly. We might think that a bot should act quickly, but it’ll usually act slowly. Often it will be acting from within a VM (virtual machine) and playing a bunch of tables, so frequently it ends up being lagged. If someone is taking a reasonable amount of time to make every single decision, it increases the chance they are a bot.
Half of the battle is identifying the bots. Once discovered, we should put a coloured tag on them. The next stage is probing their code for weaknesses using anti-bot strategies.
The key idea is getting “into the mind of the coder” and using strategies that attempt to exploit key areas that coders either overlook or haven’t had time to code. This will involve some strategies that look terrible from a theory perspective. Here are some examples of exploitative tactics I have used to crush bot-rings in the past. Note that these will not necessarily work on the next bot you find, but it should give you some ideas regarding what we are looking to achieve.
Unbalanced Profile Bot – Remember that 100% 4bet bot? He started folding 100% of the time to min 5bets. I basically got him unbalanced by 3betting 100% range, then printing money vs his overly wide 4bet. Eventually he adjusted by not folding to 5bets. Consequently, for a while my premiums would get paid off every time after I violently adjusted my strategy to include zero bluffs.
Non-sensitive to Sizing – This is a big problem for bots in general, not responding correctly to variations in sizing. I found bots folding 55% to 3bets. Not really that exploitable. When they continue folding 55% in the face of min-3bets, we know that we are on to a winning strategy. We should probe other areas for non-standard sizings. Does villain fold 40% of the time to min cbets for example? Many players never try this stuff because it’s theoretically bad to min-bet. Unorthodox lines can generate unorthodox responses from the bot.
Tells with bet-sizing ranges – I managed to get one bot-ring raising 100% of flops against me. They had been coded with two bet-sizing ranges. Large raise = nuts, small raise = willing to fold to 3bet. I spent the next 12 hours bluff 3betting as many flops as I could.
Killswitch Engage – If we discover a bot with a serious tactical leak, we should be willing to go into lockdown and grind a monster session. Chances are that the bot-owner may discover his big losses and eventually fix the problem. Bot owners sometimes use a “killswitch’ where their bot will refuse to sit with certain players who are highly profitable with them. When 2-3 bots immediately sit out every time you join the table, that’s a sign that the owners are reeling.
Happy (bot) crushing guys, let’s not give them an easy time!