Busting the online poker myth – PokerStars authenticity test
Is online poker rigged? Are the cards dealt randomly? Do they favor bad play? These questions have been around since the beginning of online poker. Every poker related forum has a post where people are complaining about their unbelievable run of bad luck. Some of these people conclude, with much confidence, that what happened to them can not be just bad luck and that the poker site is messing around with probabilities and hand outcomes.
This conclusion that people make isn’t that ridiculous and is usually backed up with some assertions. Here is the most popular one: poker sites need fish (loosing players) to keep playing. They also need new fish to enter the system. If the loosing players stop playing and if the site can’t find new fish, the game will soon dry. So in order to make the fish keep playing longer, poker sites distort the random elements in games in favor of the unlikely. This way, bad players will enjoy playing poker for longer and will be more likely to deposit more money to the system when they go broke.
I never agreed with this. To me it doesn’t make sense for poker sites to artificially alter the game play. Because they are already making so much money and poker is getting more and more popular everyday. They just don’t need to take the risk. However, I wanted to be sure. So I took the challenge to bust this myth.
Here is what I did:
I purchased about 1,5 million no limit hold ’em hand histories (1,509,749 exactly) played on Poker Stars. (There are sites that sell hand histories). Inside the hand histories, there is all the data available to an observer of the hand. Every detail of the hand is there except the player cards. You can only see what cards a player was holding if the hand went to showdown.
Then I started coding a program to extract the useful information in these hands. Using this program I was able to discover every hand where one player went all-in before the final card(river) was revealed and exactly one player called. The reason why I was specifically looking to find this type of hands is because I could calculate the winning chance of each player, and see if the favorite hand at the time of all-in won the hand after the final board card was revealed.
For every hand I discovered I saved the following information to a database:
|Winning player Cards||Loosing player cards||Board||Where all-in occured||Favorites winning odds||Tie chance||Favorite won|
After going through 1,5 million hands, the program discovered 78,911 hands where one of the players went all-in pre-flop, on the flop or on the turn and exactly one player called. I wanted two player pots specifically because on a pot with three or more players the best hand usually doesn’t even have %50 chance to win. So its difficult to tell the favorite in pots with more than two players.
Anyway, the next thing I did is to calculate the average winning chance of the favorites in these 78,911 hands. Excluding the hands where there is no real favorite.(i.e. where the hand will most likely be a tie. Total of 2239 hands were excluded.) This is the first calculation required in order to determine how random the poker site is.
The result: 0.750325115592107. About 75%. This is the average chance of the favorites in all hands to win the pot
The second calculation we need is counting the number of hands where the favorite player actually won the hand. This gives the result: 57,423.
The total number of hands, after the exlusion is 76672. (We exclude hands like AK vs AK off suit preflop). Now, ideally out of this 76672 hands, the favorite must have won about 75% of the hands. 75,0325115592107% exactly.
We expect the number of hands where the favorite won to be:
76,672 x 0.750325115592107 = 57,529 rounded.
The favorite hand won 57,423 times, while ideal expectation was 57,529. The difference is about -0.2% This is such a small percentage and I would expect it to diminish in a larger sample space.
Poker Stars is not rigged, it does not favor bad play, it does not distort the element of randomness.
About the sample data
1,509,749 hands which were played in 0.10-0.25, 0.25-0.50, 0.50-1, 1-2, 2-4 blinds. Distribution of blinds:
- $0.10/$0.25: 15,86%
- $0.25/$0.50: 25,04
- %$0.50/$1.00: 15,46%
- $1/$2: %28,89
- $2/$4: 14,75%
Some technical sugar
- I did the parsing in Java. Use of java.util.regex library. I could have done it in Perl or python I know.
- The hand evaluator I used is poker-eval webservice of pokersource running on my local.
- I used MySQL database. I may export the table to a .csv file and upload it somehwere if there is demand.