Poker Mythbusters: Running the Numbers

18 February 2010, Created By: Sean Lind
Poker Mythbusters: Running the Numbers

This all started after hearing, for the thousandth time, someone tell me how pocket aces never hold up online, how the sites are programmed to let people suck out.

As a person firmly rooted in logic, I kind of lose my shit when I hear people spout ridiculous superstition and bullshit as if it's fact. Unfortunately, I've come to learn that telling these people they're being dumb isn't really sufficient as an argument.

Then, I came to realize that since I have never actually run the numbers of online poker myself, I really was unable to say that these myths are false. Without any proof my word is no more valuable than theirs.

So, I set out to get some proof. I decided to take a large number of real-money online poker hands to run statistical analysis on, then compare my results to the perfect math. First, some details:

  • Although I downloaded 60gig worth of hand history text files (somewhere in the neighborhood of 47 million hands), my Dell laptop wasn't really able to run queries on a database that large. So for the following myths I used a total of 3,102,773  unique real-money hands played almost exclusively on Full Tilt Poker.
  • These hands range from $0.25/$0.50 to $500/$1,000.

For more details on where I got the hands, and how I came up with my numbers head to the last section of this article: Geeks Only - Technical Details.

Myth - Aces Never Win Online

Many people (read: losing players) like to claim that they hate pocket aces. How many times have you heard someone say that "they either win a small pot, or lose a big one".

Since aces are the only hand I want to be dealt for the rest of my life, this is the first myth I figured I should bust.

The Real Math

Pocket aces up against 5 opponents with random hands (all hands seeing 5-cards to showdown) should have a win-rate of approximately 49.2% (this number from over 3 million permutations, calculated by PokerStove).

My Result

Unfortunately, this is a flawed test. My hand selections come from six-max, as well as full ring and heads up. Since six-max is about the average of all, I went with the real math for that number of players. In the real world of poker not every hand makes it to the showdown on every deal.

This means the win-rate for aces should be well above the 49.2%, considering many random hands, such as 8 4 will fold pre-flop, rather than going runner-runner after the flop for a random two-pair.

Out of the 23,380 players who were dealt aces, 18,208 of them showed a net win of more than $0 (they won).

18,208/23,380 = 77.8%

The actual win-rate calculated by me came out at around 77.8%. Although I wouldn't know where to start to figure out the math to get a true apples to apples comparison, I think it's safe to say that the 28.6% difference between the two numbers is sufficient.

Since either way the win-rate is well above 50%, I feel confident in saying that this myth has been successfully busted.

Real Math - 49.2%

My Result - 77.8%

Myth - Busted

Myth - Every Time I Have Kings There's an Ace on the Flop

Every goddamn time!

This myth should have been busted simply by quoting Rounders, or any of the various psychology studies on selective memory. None-the-less, I figured I should run the numbers to be safe.

The Real Math

The formula for getting the exact probability of an ace hitting the flop when you have kings looks like this:

1-(46/50 * 45/49 * 44/48) = 22%

My Result

Out of the 23,424 hands in my database which were dealt pocket kings, 4,486 of them ran into an ace on the flop.

All hands with pocket kings which didn't see the flop were not included in this calculation.

4,486/23,424 = 19.1%

Now, I wish my sample size was larger, as that would bring me a result closer to the real math, but I'm willing to work with what I have. Either way, the true results came in under the real math number meaning that aces appear on the boards even less often than they're supposed to (in the hands I queried), not more.    

Real Math - 22%

My Result - 19.1%

Myth - Busted

Myth - AK Always Loses to AQ

All right, I'm pretty sure no one says that AK always loses to AQ, but people do believe that it doesn't win nearly as often as it should.

Since this simply can't be true, I figured I'd run the numbers to try and disprove this myth once and for all.

The Real Math

According to PokerStove, AK should beat AQ (both hands going to showdown) around 71.3% of the time. I say around because it will change by a few % depending on suits.

My Result

Out of the 3 million hands in the database:

  • AK beat AQ 2,079 times.
  • AK lost to AQ 708 times.
  • AK and AQ chopped 5 times.

2,079/(2,079 + 708 + 5) = 74.5%

As you can see AK held up just above its expectation, once again busting the myth in question.

Real Math - 71.3%

My Result - 74.5%

Myth - Busted

Geeks Only - Technical Details

freaks geeks

Below are the technical details about the hands I used, and how I used them. Unless you're a geek, or are trying to do something similar using PostgreSQL (or any SQL version really), this is probably not worth reading.

All hand histories used for these calculation came from The hands supplied have the table name, hand ID and player names changed. These are always changed to the same string - so all statistics will still make sense.

In short, all of the hands are real hands played at true real-money tables, but cannot be linked or associated with any specific person or timeframe, meaning they can only be used for outside analytical purposes.

Also important to note is that these hands were data-mined. This means that we only get to see the hole cards of exposed hands. The majority of hands dealt to players were folded and mucked without ever being shown.

This does have an effect on the results above. I've tried to only examine myths for which my database will return mostly accurate results.

Since it's safe to assume that pretty much no one folds aces preflop, and the majority of players dealt aces take them to the showdown, it can be assumed that these numbers are close to being accurate.

Unfortunately, without access to the true "super-user" server side hand-histories, running 100% accurate statistics is next to impossible.

How I Got My Results

After downloading and decompressing the hand histories with WinRar I started a mass import into Hold'em Manager. After letting that import run for about 100 hours (straight) I stopped it with around 3 million hands imported.

If that number impresses you, wait until you start to explore the database. There are 51 tables; the main table (which contains most the data for every hand dealt to every player) has over 18 million entries in it. The entire database file is over 1.4 gigs in size.

Considering this is less than 1/15th of the hands I downloaded, one could get more accurate results, if they have a computer that can handle such a task. So if any of you have access to a Gibson, let me know.

The Database

Hold'em Manager uses PostgreSQL, which is quickly become the world's #1 open source SQL database choice (sorry mySQL).

The first thing you need to use to mess around with the HEM database is a front-end database management tool, ideally a GUI since we don't want to spend years learning all the command line syntax.

I use EMS's SQL Manager 2010. Hands down, this is the greatest SQL front-end manager I've ever used. Install it, connect to your HEM database, and you're set.

Subverting Your PostgreSQL Password

conf file

If you're anything like me you setup HEM without thinking twice about what username and password you wanted to use for your DB. Since you need that to log in, you're going to have to figure it out. There are two ways to do this: easy and geeky.

The easy way is to open HEM and choose the database manager option. It will show your username and password.

The fun way is to edit the pg_hba.conf file for PostgreSQL. Since if you're still reading this, you're obviously a geek and don't need to be told that the file is located in the data folder of PostgreSQL in program files.

You also won't need to be told that you can open the .conf file by dragging it into an empty notepad window.

You want to edit the .conf file at the very end. Where it says md5 for method (or whatever is in there) change it to trust, like you see in my picture.

Save that and you've hacked the password for all PostgreSQL databases on that computer. No matter what you enter as your password now, you'll be allowed full access to the DB (note: this is not a flaw or a hole, it was designed this way)

Figuring Out the Database

Most of the tables in the database are well named, you shouldn't have much difficulty navigating your way around this DB to find the info you want. If you know nothing about DB's or SQL then you have more to learn than I'm willing to type here. Good luck.

Key Tables:

playerhandscashkeycolumns: all hands, all players, all cards, all profit/losses, c-bets etc.

pokerhands: one row for each hand, shows board cards, winning hands etc.

holecards: numerical unique ID's for every possible hole-card combination (all 169 of them + Omaha). In the playerhandscashkeycolumns you'll see the field pokerhand_id. That number corresponds to the hands in this table.

Those are the most important tables... well for what I was doing at least.

My Queries

If you want to see how I came up with my results, or you want to run queries of your own, I've included the queries I used below. If you have any questions, put them in the comments box.

Myth - Aces Never Win Online

Firstly you need the total number of times someone was dealt aces:

select count (*) FROM playerhandscashkeycolumns where holecardvalue_id = 1

Then you need the total number of times someone who was dealt aces won:

select count (*) FROM playerhandscashkeycolumns where holecardvalue_id = 1 and netamountwon > 0

Myth - Every Time I Have Kings there's an Ace on the Flop

This is a more complex query. To get this you need data from both playerhandscashkeycolumns and pokerhands, but for the same specific hands. To do this you use a JOIN statement.

select count (*) FROM playerhandscashkeycolumns INNER JOIN pokerhands ON playerhandscashkeycolumns.pokerhand_id=pokerhands.pokerhand_id WHERE playerhandscashkeycolumns.holecardvalue_id = 2 AND (pokerhands.flopcard1int IN (1,14,27,40) OR pokerhands.flopcard2int IN (1,14,27,40) OR pokerhands.flopcard3int IN (1,14,27,40))

Each card in the deck is given a numerical value:

1 = Ace of diamonds --->  13 =King of diamonds

14 = Ace of clubs ---> 26 = King of clubs

27 = Ace of hearts ---> 39 = King of hearts

40 = Ace of spades ---> 52 = King of spades

The other cards fit in between, as I'm sure you can figure out.

Myth - AK Always Loses to AQ

pokerhand_id values:

  • AKs - 14
  • AQs - 15
  • AKo - 92
  • AQo - 93


select count (*) FROM playerhandscashkeycolumns WHERE netamountwon > 0 AND pokerhand_id IN (SELECT pokerhand_id FROM playerhandscashkeycolumns WHERE holecardvalue_id IN (14,92)) AND holecardvalue_id IN (15,93)


select count (*) FROM playerhandscashkeycolumns WHERE netamountwon < 0 AND pokerhand_id IN (SELECT pokerhand_id FROM playerhandscashkeycolumns WHERE holecardvalue_id IN (14,92)) AND holecardvalue_id IN (15,93)


select count (*) FROM playerhandscashkeycolumns WHERE pokerhand_id IN (SELECT pokerhand_id FROM playerhandscashkeycolumns WHERE holecardvalue_id IN (14,92)) AND holecardvalue_id IN (15,93)





The Poker Reporter Blog

The Poker Reporter Blog

Poker news, gossip, parties, donkstrikery and functioning illiteracy with the crew!
Latest Posts  


WSOP live blog from the tournament floor w/ poker pro interviews, photos and side action from Las

Latest Posts  
The Guest Blog

The Guest Blog

A menagerie of poker pros, celebrities, poker writers and industry figures.
Latest Posts  
Poker Joker

Poker Joker

PokerListings' daily dose of humor. Dont miss out! Check back Monday to Friday for your daily laugh.
Latest Posts  
Battle of Malta Blog

Battle of Malta Blog

Photo essays, player profiles, travel tips, off-the-cuff interviews and more from Battle of Malta!
Latest Posts