• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Poker Bots Invade Online Gambling

Loosing 90% of time doesn't mean loosing money and having negative sum in total. That's what I stated in previous posts that point of making such a bot is to loose 90% of the time to remove doubts but that 10% win must be controlled in terms of money won.

You won't be able to control the 10% in a big bet game like no limit hold'em. There are just way too many variables and money won is largely dependent on the play of your opponents, which differs widely. Just saying that a player is bad or exploitable doesn't really tell you too much. There are so many mistakes that you can make in a poker game, that you can take two guys with identical loss rates over big samples and they often times play completely different.

Basically, bot technology in its current state has just recently started to make a few models that are profitable in the easiest games on the internet where the buyin is $10 or less. Trying to avoid detection should be the least of your concerns at this point and making a superior winning bot the focus. The reason bots are caught in my opinion, is probably due to timing issues and not actual play.
 
No player wants to be bothered by stupid messages from the server. Plus, many if not all big servers are international and people do not necessarily have to be able to reply / understand the language. A generic 'me no understand' could be sent back to the server.

The major poker clients (Full Tilt and PokerStars) allow you to set the installation to your native language. So the "me no understand" thing wouldn't work.
 
The reason I started posting about it was to find out the causes why bots fail to remain undetected. I really enjoy your answers since you are very aware of this game. So I wonder how long does the hosting sites persist (assume they are full with bot using gamers) and if that time is long, then what gives them opportunity to remain hidden? Thanks
 
The reason I started posting about it was to find out the causes why bots fail to remain undetected. I really enjoy your answers since you are very aware of this game. So I wonder how long does the hosting sites persist (assume they are full with bot using gamers) and if that time is long, then what gives them opportunity to remain hidden? Thanks

I'm not sure I fully understand your question. I think I may not have explained the "timing issues" well enough.

Basically, I think that there only a couple of ways to detect bots but I am not positive. The easiest way is when the bot takes the exact same amount of time per hand before making a decision. For a lot of bots, this is just a couple of milliseconds, which is pretty laughable and obvious, but I used to see it a lot back in 2006ish. No real player is going to make snap-decisions every hand or be consistent with how much time they take. Like most things in life, some decisions are simple and even in poker, some can be very complex. The sites give you an optional "time bank" button which you can click if you need more than the standard allotted time. However, you cannot just abuse this button and time down every hand. Each time you use your time bank, you have less and less time in your bank for future hands, so this should really be saved for perplexing hands.

A bot doesn't necessarily have to use his time bank at all to avoid detection. Lots of human players never use their time bank. But if you want to avoid detection, you need to code in different time intervals for each action.

Another way to get caught is the chatbox test (although that doesn't really prove anything. It probably just sparks an investigation). Also, I'm not sure entirely how much data they grab, but the major sites usually have some security type of spyware attached to their software which I think tries to monitor the processes and programs you have running. It's obviously impossible to get specific info from the sites on this, but I know they try to monitor your activities to combat cheating (although, as stated before, bots =/= cheating and probably are not high on their list of priorities).
 
i think so as well. if poker sites were concerned then in cash games they make everybody play 100bb deep. but i observed that short stacked tables are very active, and a perfect spot to run a bot with minimal postflop play.
 
The job of bots is to simulate the possible opposite moves and take a responsive action in a winning manner right? Let's drop the detection issues. Suppose we are considering to design a bot willing to win all the games. It's ultimate goal is to make a move. Whatever happens inside and before is not of much concern right now for the player cheating with it.

So my question would be:

What prevents us from designing a good bot which anticipates a winning path and makes a responsive move. Install that bot on one machine and play on another machine. Once we get an opponent's move, we put it on the software designed on the first machine. It will take at most 2-3 seconds. The bot gives us the advise which action to take and we make it on the machine we are playing on. Why is there a need to use directly that bot on the gaming computer?!

The outcome would be: decreased detection possibility. We would take different time to respond each move. (not hard to program it though). Also the message-box would be adequate since we would manually enter the answers to questions and so on. The threat of being detected would be lifted from bot's shoulders and placed on those of human running bot and game together on 2 machines.
 
The job of bots is to simulate the possible opposite moves and take a responsive action in a winning manner right? Let's drop the detection issues. Suppose we are considering to design a bot willing to win all the games. It's ultimate goal is to make a move. Whatever happens inside and before is not of much concern right now for the player cheating with it.

So my question would be:

What prevents us from designing a good bot which anticipates a winning path and makes a responsive move. Install that bot on one machine and play on another machine. Once we get an opponent's move, we put it on the software designed on the first machine. It will take at most 2-3 seconds. The bot gives us the advise which action to take and we make it on the machine we are playing on. Why is there a need to use directly that bot on the gaming computer?!

The outcome would be: decreased detection possibility. We would take different time to respond each move. (not hard to program it though). Also the message-box would be adequate since we would manually enter the answers to questions and so on. The threat of being detected would be lifted from bot's shoulders and placed on those of human running bot and game together on 2 machines.
The appeal of bots isn't their mental capacity to make decisions, but rather their capacity to play on multiple tables at once, thus making more money.
 
The appeal of bots isn't their mental capacity to make decisions, but rather their capacity to play on multiple tables at once, thus making more money.

I think there is a misunderstanding in the above point. It fits with you opinion also to play on multiple tables at once. So consider a bot able to receive multiple inputs (actions of opponents) and give multiple responses (actions to make). Is execution of those orders time consuming?!
 
I think there is a misunderstanding in the above point. It fits with you opinion also to play on multiple tables at once. So consider a bot able to receive multiple inputs (actions of opponents) and give multiple responses (actions to make).
I'm sorry, I don't quite understand what you said there :confused:
 
I'm sorry, I don't quite understand what you said there :confused:

Imagine the same situation I described in the above post - holding 2 machines - 1 bot receiving opponents moves and gives the responsive actions to take against "them"(multiple ones), and the second machine actually playing. One player runs both of them manually. So when you see the opponent's move you manually forward it to another machine to let the bot evaluate it and strike against. You manually receive the order from bot and also manually enter it on the actual playing platform(2nd machine). That doesn't contradict my first post --->>> Bot playing against multiple opponents.

So to sum up: the main point is to launch a artificial mediation to make a game look more natural since there will be varying time delays, adequate responses on messages, and so on and on what characterizes a human rather than robot.
 
BTW, where do people get such experience? Self studding or some courses which takes you through the details of poker bots programming and preparing you for specifically algo trading?

Just make bots in every online game you've played. That's what I do. Over time, it becomes conceptually easy to transfer what you've learned in one area over to the next.
 
If your bot is reasonably profitable (e.g. several hundred thousand $/yr) and you are trying to avoid detection, the following may or may not make sense...

1. Try to keep the number of tables played per site/account to a reasonable number
2. If running the bot on multiple accounts on the same site, vary the play of each instance of the bot
3. Run the bots from different locations/IP addresses
4. Vary the start/end times as well as the duration that each bot will play (add some randomness as well; don't go crazy and have them run 24 hrs/day)
5. When moving the mouse to click on an action (e.g. fold, raise, etc.), move it in the same manner that a human would...collect data on how you would do this and model your mouse moving algo after this
6. Take what would be believable amounts of time for a human player to make decisions in various situations (e.g. tough decisions = longer, easy = shorter...add randomness)
7. If playing in a format that requires you to use a slider bar and/or text box to enter your bet, every so often have the bot type a number and then pause and change the number (as to emulate rethinking the right amount to bet)
8. Pay someone you trust to monitor the bots and have that person respond manually to any prompt to enter text that the poker site throws at you.
9. If you are trying to get around the software that detects which processes are running and if one of them is a bot, the following will work (but might be seen as excessive)...In theory it isn't necessary to run the bot on the same computer that the poker software is running. It is possible to use another machine, a video camera, and a robotic arm to control the mouse based on what the camera sees.
I am sure there are other things that can be done as well...

Thoughts/Tips on building the bot...
1. Data can be read by taking images of the tables / lobby / chat window and then running extremely simple character recognition on them. This is not hard and I know people who have done it this way. One problem they ran into is when the site scrolls too much text in the chat window for an announcement (e.g. announcing a special tournament). There are ways around this.
2. Maintain a database/history of every hand that the bot plays. Keep track of various statistics. Be able to replay the hands visually. Identify under what conditions the bot is not profitable.
3. Make sure the rules that your bot implements can be easily modified...I have seen it done before in a spreadsheet
4. It will take an extremely large number of hands before you can be confident that the bot is profitable.
 
Why don't those sites have bot-only tables/tournaments? I think that would be a fair game. It will generate income for those companies and be a fair game for anyone with a bot.
 
I have been contemplating the idea of building a bot for some time now. Actually, it is because of it I got interested in algo trading.
To make a smart bot, you need to teach it how to collect information about players and players styles. the bot will never be smart enough to deal with a new player. Players have to be classified by styles. I actually think the hardest players to beat are the novice, because you cannot read their play. Beside that, I like all @David Rappaport suggestions.
I will add:
1. Make the bot monitor online without playing for millions of hands. To avoid being caught, the bot will play random hands and act as if it was a very conservative player. Actually, you can create bots to collect information and put them in a DB and other bots for playing.
2. Once data is collected, the bot will play and use the DB and keep on collecting data. A lot of randomness have to be added to the bot to make it undetectable.
3. I have over 50 poker books. Moving this information from books to a computer program could make it a smart bot to start with. But then, the bot will have to teach itself and grow in experience (and that's the hard part).
 
Why don't those sites have bot-only tables/tournaments? I think that would be a fair game. It will generate income for those companies and be a fair game for anyone with a bot.

You mean preventing the human players from entering those specific tables? How could it be controlled whether bot is entering or not?
 
You mean preventing the human players from entering those specific tables? How could it be controlled whether bot is entering or not?
Make them pot accessible tables. If human players want to play, it will be at their own responsibility. Those tables will be named for example: $2-5 NL Texas Holdem 1, $2-5 NL Texas Holdem 2,....
 
Make them pot accessible tables. If human players want to play, it will be at their own responsibility. Those tables will be named for example: $2-5 NL Texas Holdem 1, $2-5 NL Texas Holdem 2,....

I think that practice should be run before launching a bot for widespread community. The surviving bot is sure to be winning in future. Those which loose is not worth relying while gambling with a big amount. But it's a good practice for "bot-evolution". Not surviving ones will be forgotten 4ever.
 
There is a lot of information here that is spot on and a lot that misses the mark completely.

To start, I've been a professional online poker player for years. I've played on multiple sites (stars, ftp, party, pacific) and played multiple forms of poker successfully (MTT, SNG, LHE, NLHE, PLO, STUD). I mod the High Stakes PLO forum at 2+2 (largest online poker community) and have been approached by most all the big training sites to make training videos for PLO, my current game. I've made a few videos for LeggoPoker and have also coached a few high stakes players as well. I don't play the ultra high stakes games but I'm friendly with a few high stakes players that I've talked 100s of hours of strategy with and have even discussed writing books and building software to help analyze the game better. On top of that, I've also been speaking with Darse Billings (from the article) over the past few months on a number of topics. I've read his (and his teams) papers on opponent modeling and constructing a poker program (google "Polaris"). Lastly I've spoken to several bot developers as well as computer scientists that have helped a poker site (FTP to be specific) develop detection algorithms for locating bots. So I think I can shed some light on the topic.

*Full disclosure: I've never been involved with developing, implementing or profited from botting of any sort.*

I started reading every post in this thread but as I realized how long it was I started to skim. Some of this may be covered...but if anyone has any questions, I'd be happy to answer whatever I can. This is a subject I know quite a bit about and it's something I'm extremely interested in as well.

To start, most bots that are caught by the sites are extremely unsophisticated. You can purchase off the shelf, very basic, run of the mill bots that don't have many options as far as developing strategy. These bots aren't designed to win. Surprised? They are there for rakeback and bonus-whoring. Think of these bots like market makers for very small stakes (i.e. bad players). The small stakes games run often (liquidity) and are filled with bad players. So these bots don't need to be ultra sophisticated to turn a profit...despite that, most bots are very basic and they only need to break even...if they win...thats great but the idea is to play millions of hands...and not lose. They earn money by collecting rake back from the site and for clearing bonuses and earning frequent player points at the sites...which are redeemable for cash.

According to my bot developer contacts...Full Tilt Poker was extremely lax on the botting issue until recently. I think they viewed it as a positive for the site (they keep the games running and provide rake). Officially, it was "No Botting Allowed" but I don't believe they actively tried to stop it...until recently. Today however, it's growing into a bigger and bigger issue...the sites rarely talk about how big the "problem" is but I can assure it that it's a major problem for the sites and will continue to grow.

Online sites discourage botting to protect their image and their creditability...which might sound somewhat miniscule but a sites reputation is a HUUUUUUGE asset to the company (I'd say it's largest). There are a number of other reasons why a site shouldn't allow botting, if anyone thinks other wise I'll elaborate.

Building a bot is obviously possible. Building a bot that can compete vs smart players is extremely hard. And I mean, seriously difficult. The problem isn't in developing strategy...that is the easiest part (not easy...easiest). The problem is putting together enough hardware and software that can handle the amount of of memory/calculations needed to process these decisions timely. And I'm talking about NLHE and PLO cash games btw. HU LHE, SNGs, MTTs will be easier because there are less decisions and variables involved with those games...they're easier to quantify basically.

If poker was a set strategy then this wouldn't be that much of an issue. But a winning strategy in poker is an adaptive one (for now) based on outside variables that we can't control. Unlike say checkers or chess where the best move is always (usually) the best move...in poker the best move depends on a number of variables: The cards we are dealt, the number of players at the table, the stack size each player has, the position we are in and most importantly the tendancies of our opponents (opponent modeling). If anyone thinks I'd be easy to build a competitive bot that can beat 2/4 NLHE/PLO online then again, I can elaborate. Just know that the issue isn't really finding a strategy...it's putting together a system that can execute it. If anyone here thinks they can put together a system like this, then I know a number of people that would looooove to make your acquaintance.

Those are some of the hurdles that it takes to even make a competitive bot. Lest we forget there are teams of very smart people at the pokersites designing detection systems to find you. Not only do you have to build a system that can execute a winning strategy...you also have to avoid being caught by the site and having ALL of your money confiscated. A few posts above David points out some simple quick tips that might help avoid detection. Some of that stuff is implemented like randomizing timing, clicking, mouse movements, playing style, etc but that won't keep you hidden from the sites. And yes, sites have pop ups for people who mass table to ensure that they are human players. This is easily worked around. The sites also update their systems constantly. Ideally, you'd want to tap into the client feed to understand the state of a certain game. Holes are constantly fixed or changed so you'll be in a constant battle of updating your system so that it can attach to the poker client and understand that actual state of the game....How would your system know what cards it is dealt and how much money is in the pot? A bot needs to get that information somewhere...and outside of relying on primitive screen capture programs to read the actual state of the game, you'll need to tap into some feed that your computer gets to get that information in real time. Imagine building a whole system that relies on some hole you found that gets patched up next week...no fun.

I guess I'll stop here. There is a lot more I could say but I'm rambling and not really responding to anyone question or comment...just spewing my thoughts. If anyone has questions or anything like that feel free to PM me or post here and I'd be happy to answer as best I can.

Scott
 
I think that practice should be run before launching a bot for widespread community. The surviving bot is sure to be winning in future. Those which loose is not worth relying while gambling with a big amount. But it's a good practice for "bot-evolution". Not surviving ones will be forgotten 4ever.

This is exactly what I was thinking of -making a genetic-algorithm based neural network as in http://www.cs.nott.ac.uk/~gxk/courses/g5baim/papers/checkers-002/TNNKChellapillaAndDBFogelText.pdf

The issue is that such an evolving algorithm only plays against bots rather than other players, which behave far differently.
Studying past hands isn't of much help, since you are unaware of the hands other players have, and only one scenerio is played out.

It's a tricky problem.

But seriously, who in quantnet wants to take on this issue? I'd love to take this on as a side project, and it seems that Tsotne does as well. Any others?
 
Back
Top