Imagine you’re an online poker player and you suddenly have the ability to only play bad opponents. Say goodbye to the tough, aggressive, profitable players and say hello to the legions of loose, passive fish that make up the online poker community.
With a little bit of work, that’s exactly the situation I found myself in.
Some background: When I started playing online poker in early 2005 I was immediately drawn to one vs one No Limit Hold’em tournaments, known as Heads Up Sit-n-Go’s (HUSNGs). They’re fast, exciting, and they require an increased attention to psychology that you don’t get as much of at the full ring (9 players) tables.
Here’s how you join a HUSNG (this will become important later):
1. Find an upcoming tournament.
The PokerStars lobby helps you find exactly the type of game you want to play.
2) Open up the Tournament Lobby.
Once you’ve found a game that you like, double click it to open up the tournament lobby:
The lobby displays important information about the tournament such as how much it costs to play (the buyin plus the rake), the payout, the blind structure, etc.
It also shows you how many other people are registered in the tournament. If you’re the first one to register, the list on the right will be blank, otherwise it will show the name of the person who already signed up.
3) Register. When you’re ready to play, click Register and join the tournament.
As soon as the table fills up with two players the game begins.
You can join a tournament any time you’d like. As soon as one fills up, another one is automatically created. During peak hours it can actually be a challenge to sign up for one because so many people are trying to register at once.
With thousands of people playing at the low and medium stakes, you can literally play for weeks without facing the same opponent twice.
This is fantastic news if you’re up against a tough opponent because you know that you’ll probably never face him or her again. BUT, if you’re playing some donk (a donkey–a bad player), it’s frustrating for the exact same reason: you’ll likely never play him again. And you want to. You really want to.
One important point: For a few minutes after a HUSNG ends, you can still locate it and check the results:
Why PokerStars let’s you access this is beyond me.
Anyway, after a few months of playing the HUSNG opponent lottery, I decided to see what I could do to improve the situation. I set out to create a program that would record the results of every HUSNG played on PokerStars and then use those results to determine which opponents to play and which to skip.
Several months and many iterations later, it was built. I called it PokerShark. (The original version was called PokerSanta but I decided that was kind of girly and changed it to PokerShark.)
24/7 I had a program running that recorded the winners and losers for every HUSNG and when I was ready to play, I ran a second program which opened up tournament lobbies and waiting for a player to register. As soon as someone registered, the program checked the player’s previous results and determined if he was mediocre enough to play. If he was, the program would automatically register me for that tournament.
The results were simply incredible:
Here’s what the software looked like: (click to expand the screenshots)
July 13, 2005:
At first, I focused on the software that recorded the results.
The window on the left was my attempt at concisely visualizing the recorded results.
The small, busy window below the PokerStars lobby displayed collection statistics and the large “Tournament Intercept Window” intercepted the Completed tournament windows as they were opened so it didn’t steal the focus away from anything else I was doing.
December 16, 2005
The ugly maroon window on the bottom left was my first shot at automating the registration process.
February 16, 2006
Eventually I added support for multiple buyins and made the interception window much smaller.
There were a lot of interesting graphs…
July 7, 2006
Over time I improved the design (note the little icons next to the buyins) and added extra analysis criteria such as jump ratio, which measured the stakes a player was currently playing compared to his average stake. Higher jump ratio = more tilt = more I want to play.
October 5, 2006
Notable on this one is the statistic overlays on each of the tables, which was another program I wrote that helped me make better decisions.
Using this software was a trade off. On one hand I didn’t have to face any tough opponents, so the money came easily and I didn’t have to face a lot of the stress typically associated with heads up games. However, because I was playing against a terrible opponents, I picked up a lot of bad habits which actually made me a worse poker player. It’s funny how things work out.
By October 2006 I had had acquired a ton of experience programming add-ons for the PokerStars software, and decided to take it one step further and to try to build a bot.
I mean, how hard could it be? =)
Very interesting. Will you, maybe, publish source code for some of your programs?
Megas, I’m not so sure that’s a good idea.
Why not? I’m actualy not interesting in analytic algorithms of poker or the way of building poker bot, i am interesting in methods of grabbing data from other program, espetially when it use not standart windows controls.
Are there any poker sites that welcome and accept bots?
Not sure if you’re still checking the comments on these, but out of curiosity what framework did you use to store/fetch the tournament results data?
I used Visual Basic and the WIN32 API to scrape the chat box and the pixels on the screen to determine the entire game state.
Hey Matt, thanks for the article. Not sure if you are still checking these comments or not, but out of curiosity what kind of database did you use to store and fetch the tournament results? Also, wasn’t this functionality already available (for a subscription fee) from SharkScope? The analytics, I mean, not the auto-registration obviously.
I stored the results in a flat text file :). And yes, eventually I switched over to SharkScope and just grabbed their results for individual users rather than scraping PokerStars directly.