Towards a Meaningful Ordering of Hands, Revisited
In 2006 players had no solvers. CFR, the algorithm behind modern solvers, was published a year later. So the author of ProPokerTools (PPT), the maker of Odds Oracle, built an evolution program to rank starting hands. In fact it is an attempt to solve a push-or-fold game with very short stacks. Twenty years later we can solve that game directly. This article shows how we did it for every game Omni supports, and how close our rankings are to the PPT ones.
Why rank starting hands
Hold'em has 169 different starting hands. A player can write the top 15% down by hand. In Omaha this stops working. PLO (Pot Limit Omaha) has 16,432 different starting hands, PLO5 (5 Card Omaha) has 134,459 and PLO6 (6 Card Omaha) has 962,988. Here "different" ignores which suit is which: AK and AK are the same hand.
So Omaha players type ranges as percentages. 15% is the best 15% of all hands, 5%-10% is the hands between the top 5% and the top 10%. The syntax comes from PPT, and MonkerSolver uses it too, percentages included. A percentage only means something if there is a ranking behind it: a list of every hand from best to worst.
The PPT author explained how the rankings were built in two posts: Towards a Meaningful Ordering of Hands (2006) and 6-Handed Hand Orderings (2012). The PPT files cover Hold'em, PLO, PLO8 (Omaha Hi-Lo), PLO5 and Big O (5 Card Omaha Hi-Lo). When we added percent ranges to Omni, we needed rankings for every game we support. That includes Short Deck, PLO6 and 6 Card Omaha Hi-Lo, where no ranking existed.
How PPT did it
The PPT author looked at three ways to rank hands.
- Human judgment. It works for 169 Hold'em hands. It does not work for 16,432 Omaha hands.
- Equity against a random hand. It is easy to compute, but random hands are not the hands people play. PPT still publishes it as a separate file.
- An evolution program, based on work by Billings, Davidson, Schaeffer and Szafron. Each hand plays many trials. The hand puts 1 chip in the pot. A "blind" hand also puts in 1 chip and always plays. The other players put in 1 chip only if their hand is "good", which means it wins more than it pays on average. Then the board is dealt and the best hand wins. After each round of trials the set of good hands is updated. After about seven rounds it stops changing. Hands are ranked by average profit.
The PPT author called the result "a rough guide". Hands move a little from one run to the next, so the exact place of one hand should not be taken too seriously.
Our idea: solve the small game
Look at the evolution program again. Every player either puts in a chip or folds, and there is no more betting after that. That is a push-or-fold game where the whole stack is one chip. In each round every hand decides to play or fold based on what the other hands do. That is a search for an equilibrium. It is a good search, but nothing guarantees that it finds one.
We have a solver, so we solve a game like that directly.
- The blinds are 0.5 and 1 big blind. Stacks are 3.5 big blinds, or 3 heads-up. Only one raise is allowed per hand, and at this depth a pot-sized raise is all-in. So the game is the same for no-limit and pot-limit.
- There is no betting after the flop. The board is dealt and the best hand wins.
- We solve it with CFR for 2, 6 and 10 players.
- Every hand stays separate. There is no bucketing, so each of the 962,988 PLO6 hands gets its own value.
- Hands are ranked by the EV of going all-in from the first position. A hand that never goes all-in still has this value, because the solver keeps the value of every action for every hand.
In short, it is a game close to the PPT one, solved to an equilibrium.
What we tried first
Nobody plays with 3.5 big blind stacks. So we started with deeper games. Both attempts failed.
- Push or fold with deep stacks. At 100 big blinds only premium hands call an all-in. A hand then earns most of its value by stealing the blinds, and cards that block the premium hands matter more than the strength of the hand. In a Short Deck test, six-handed at 100 big blinds, A8 suited ranked above QQ. That ranks blockers, not hands.
- A real betting tree. With normal bet sizes and play after the flop, the Short Deck ranking looked right. But the tree grows very fast with more players. Our estimate for PLO6, six-handed, was about 200 GB of memory for a very simple tree and about 1.6 TB for a normal one. Ten-handed was out of reach for every Omaha game.
So we went back to short stacks. There the ranking follows hand strength, and the game stays small enough to solve every hand in every game. PPT noted the same limit in 2006: the model does not play after the flop. We accept it for the same reason.
How close we are to PPT
Each ranking puts every hand at a place from 0% to 100%. If a hand is at 20% in our ranking and at 23% in the PPT file, the two rankings are 3 points apart for that hand. Distance is this gap averaged over all hands. Moved more than 5 is the share of hands where the gap is bigger than 5 points. PPT compared its own files the same way in 2012.
Heads-up
Our heads-up solve arrived at the PPT "equity against a random hand" ranking on its own. The distance is 0.18 points in PLO, 0.28 in PLO8 and 0.60 in Hold'em, and no hand moved more than 5 points. The reason is simple. With 3 big blinds heads-up, about nine PLO hands in ten go all-in, so every hand meets an almost random opponent. In the comments to the 2012 post, a reader asked PPT if there were heads-up rankings. Now there are.
Omni against every PPT file
| PPT file | Omni ranking | Distance | Moved > 5 |
|---|---|---|---|
| Hold'em, equity vs a random hand | Heads-up (2h) | 0.60 | 0% |
| Hold'em, 6-max | 6-max (6h) | 2.42 | 10% |
| Hold'em, full ring | Full ring (10h) | 2.76 | 15% |
| PLO, equity vs a random hand | Heads-up (2h) | 0.18 | 0% |
| PLO, 6-max | 6-max (6h) | 1.09 | 0.4% |
| PLO, full ring | Full ring (10h) | 2.50 | 16% |
| PLO8, equity vs a random hand | Heads-up (2h) | 0.28 | 0% |
| PLO8, 6-max | 6-max (6h) | 1.93 | 8% |
| PLO8, full ring | None | ||
| PLO5, 6-max | 6-max (6h) | 1.48 | 2% |
| PLO5, 9-handed | None | ||
| Big O, 6-max | 6-max (6h) | 1.79 | 6% |
| Big O, 9-handed | None |
For scale, here is how far the PPT 6-max files are from the PPT full ring files of the same game (9-handed for PLO5 and Big O). Most of our distances are smaller than this.
| Game | PPT 6-max vs PPT full ring | Moved > 5 |
|---|---|---|
| Hold'em | 2.50 | 9% |
| PLO | 3.36 | 23% |
| PLO8 | 2.86 | 19% |
| PLO5 | 2.31 | 12% |
| Big O | 2.22 | 12% |
PLO starting hand rankings: the top ten
In the tables below, cards in parentheses share a suit, the PPT way. (AK)(AK) is AAKK double-suited. AAA5 without parentheses has four different suits. In PLO 6-max both rankings have the same ten hands on top, in a slightly different order.
| # | Omni, PLO 6-max | PPT, PLO 6-max |
|---|---|---|
| 1 | (AT)(AT) | (AT)(AT) |
| 2 | (AJ)(AJ) | (AJ)(AJ) |
| 3 | (AQ)(AQ) | (AQ)(AQ) |
| 4 | (AK)(AK) | (A5)(A5) |
| 5 | (AJ)(AT) | (AK)(AK) |
| 6 | (A5)(A5) | (AJ)(AT) |
| 7 | (A9)(A9) | (A9)(A9) |
| 8 | (A8)(A8) | (AT)(A9) |
| 9 | (A4)(A4) | (A4)(A4) |
| 10 | (AT)(A9) | (A8)(A8) |
Where we disagree
The biggest differences in PLO are in a few clear groups of hands. The numbers show the place of the hand.
| Hand | What it is | Table | Omni | PPT |
|---|---|---|---|---|
| AAA5 | three aces, rainbow | 6-max | 17.3% | 10.2% |
| AAA2 | three aces, rainbow | 6-max | 24.1% | 14.6% |
| AKKK | three kings, rainbow | 6-max | 28.6% | 21.2% |
| KK82 | kings with low cards, rainbow | 6-max | 32.2% | 25.2% |
| AAA2 | three aces, rainbow | Full ring | 28.5% | 8.7% |
| AAAA | four aces | Full ring | 72.3% | 30.5% |
| (K8)(Q2) | KQ82 double-suited | Full ring | 32.3% | 46.6% |
Hands with three or four cards of one rank are much lower in our ranking. In Omaha you must use exactly two hole cards. With three aces, one ace is a dead card and only one ace is left in the deck to make a set. Most Omaha players see AAAx as a weak hand, and our ranking agrees with them. Weak pairs without suits are lower too. At a full table, double-suited hands with high cards are higher. We think this is closer to how these hands play, but a model this small cannot prove it.
In Hold'em the picture is similar. Small pairs and small suited connectors are a little higher in our ranking, weak offsuit kings and queens are a little lower.
New rankings
Omni has a ranking for every game it supports. The table size is written as 2h, 6h or 10h.
| Game | Hands | Table sizes |
|---|---|---|
| Hold'em | 169 | 2h, 6h, 10h |
| Short Deck | 81 | 2h, 6h, 10h |
| PLO | 16,432 | 2h, 6h, 10h |
| PLO8 | 16,432 | 2h, 6h |
| PLO5, Big O | 134,459 | 2h, 6h |
| PLO6, PLO6 Hi-Lo | 962,988 | 2h, 6h |
PLO5, Big O and both PLO6 games have no full ring ranking. PLO6 cannot seat ten players at all, because the deck runs out of cards. Online, these games are played heads-up and 6-max.
PLO6 (6 Card Omaha) starting hand rankings
As far as we know, this is the first published ranking for PLO6. All top ten hands in 6-max are aces with two more pairs or broadway cards, and all of them are triple-suited. AAKJT9 appears three times. How the suits pair up matters.
| # | Hand | Cards |
|---|---|---|
| 1 | (AJ)(AT)(JT) | AAJJTT |
| 2 | (AQ)(AJ)(QJ) | AAQQJJ |
| 3 | (AK)(AQ)(KQ) | AAKKQQ |
| 4 | (AK)(AJ)(KJ) | AAKKJJ |
| 5 | (AQ)(AT)(QT) | AAQQTT |
| 6 | (AK)(AT)(KT) | AAKKTT |
| 7 | (AJ)(A9)(KT) | AAKJT9 |
| 8 | (AQ)(AJ)(KT) | AAKQJT |
| 9 | (AJ)(AT)(K9) | AAKJT9 |
| 10 | (AT)(A9)(KJ) | AAKJT9 |
6 Card Omaha Hi-Lo starting hand rankings
Here the top of the 6-max ranking is aces with A2 or A3 for the low, a king for the high, and three suits.
| # | Hand | Cards |
|---|---|---|
| 1 | (A4)(A2)(K3) | AAK432 |
| 2 | (AK)(A2)(K3) | AAKK32 |
| 3 | (A4)(A3)(K2) | AAK432 |
| 4 | (A3)(A2)(K4) | AAK432 |
| 5 | (AK)(A3)(K2) | AAKK32 |
Table size matters
Heads-up and 6-max rankings are far apart. In PLO6 the distance between them is 5.1 points, and 41% of hands moved more than 5 points. In PLO it is 6.8 points and 49%. Pick the table size that matches your game.
How precise it is
A solver gets closer to the answer the longer it runs. Every 10 minutes we saved the ranking and compared it with the ranking from half the run time earlier. We stopped when the average move was 0.4 points or less and no hand moved more than 5 points. The last move is also a fair estimate of the error that remains.
| Game | 2h | 6h | 10h |
|---|---|---|---|
| Hold'em | 0.04 | 0.16 | 0.24 |
| Short Deck | 0.03 | 0.10 | 0.19 |
| PLO | 0.24 | 0.28 | 0.37 |
| PLO8 | 0.38 | 0.40 | |
| PLO5 | 0.29 | 0.32 | |
| Big O | 0.39 | 0.40 | |
| PLO6 | 0.40 | 0.60 | |
| PLO6 Hi-Lo | 0.40 | 0.56 |
Halving the error takes four times as long. The two PLO6 6-max rankings took about 100 hours each on a 48-thread processor, and we stopped them at 0.6 points. All rankings together took about 400 hours and 10 trillion iterations.
What this means in practice: a hand at 20% may really belong at 19.6% or 20.4%. The edge of your range moves by less than half a point. PPT called its ranking a rough guide, and the same is true here. Nobody chooses between 20% and 20.4% by feel.
Using it in Omni
Percent ranges work wherever Omni asks for a range after the flop. The 6-max ranking is the default. Your core downloads the ranking the first time you use a percent in a game.
| You type | You get |
|---|---|
15% | The best 15% of all hands, 6-max ranking. |
5-10% | Hands between the top 5% and the top 10%. 5%-10% means the same. |
15%2h | The top 15% by the heads-up ranking. |
15%10h | The top 15% by the full ring ranking. Hold'em, Short Deck and PLO only. |
0.05-0.1% | Decimals work, up to four digits. |
20%$ds | The top 20% that are double-suited. |
(30%-80%)!AA | The band from 30% to 80% without aces. |
15%@100, 16%-50%@50 | Weights, written the same way as in PPT. |
Thanks to the PPT author for the original idea. If you want to try percent ranges on your own spots, they work in every game on the free Omni plan. The Getting started guide shows how to install the engine and run your first solve.