Estimating The Strength of Poker Hands by Integer Linear Programming Techniques
Estimating The Strength of Poker Hands by Integer Linear Programming Techniques
1 Introduction
No-limit Texas Hold’em [5, 6] (NLTH) is a poker variant that has gained huge
popularity in the past few years. This game is played with a full deck of 52
cards by two up to nine players. The game develops in four phases. In the first
phase (called the preflop), each player is dealt two private cards (i.e., known
M. Dalpasso
Dipartimento di Ingegneria dell’Informazione, University of Padova
Via Gradenigo 6/A, 35131 Padova, Italy
Tel.: +39-049-8277941
Fax: +39-049-8277699
E-mail: [email protected]
G. Lancia
Dipartimento di Informatica e Matematica, University of Udine
Via delle Scienze 206, 33100 Udine, Italy
Tel.: +39-0432-558454
Fax: ++39-0432-558499
E-mail: [email protected]
2 Marcello Dalpasso, Giuseppe Lancia
only to him). These cards are called his starting hand. Then there is a round
of betting in which some players fold (i.e., abandon the game), while others
remain in play. Then three cards are turned face-up. These cards are called
the flop, and they are community cards, i.e., they can be used by all players
still in play. After another round of betting, if two or more players are still in
play, a single community card, called the turn, is turned face-up. After another
round of betting, another single community card is turned, called the river.
A final round of betting follows. Each player still in play eventually computes
the best 5-cards hand obtained by combining his starting cards with the five
community cards (i.e., the best 5 cards out of 7). The owner of the highest-
score hand wins the pot, and the pot is split in case of a tie. The scores of all
5-cards poker hands are shown in Table 1 (where the strength of each hand
decreases from top to bottom). Note that, by convention, the letter T is used to
indicate the rank “10” when listing poker cards. Another convention of poker
is to use the letter “s” to indicate two cards of the same suit (e.g., [A♣][2♣]
and [A♥][2♥] can be both indicated as A2s), while the letter “o” is used to
indicate two cards of different suit, called two “offsuit” cards (e.g., [A♣][2♥]
can be indicated as A2o).
Each starting hand has a potential to become, eventually, the winning
hand after all community cards have been turned up. For some starting hand
this potential is greater than for others. The potential of all starting hands
has been assessed in many books and by extensive use of computer programs.
Since in NLTH the four suits have all the same value, the 52
2 starting hands
can be reduced to only 169 possibilities: 13 pairs, 78 non-pairs suited, and 78
non-pairs offsuit. It is now well-known that the best preflop starting hand is
a pair of aces, followed by a pair of kings, while 72o (seven-deuce offsuit) is
considered to be the worst starting hand. There are many poker books and
journals reporting tables of 169 entries listing the preflop strength of each
starting hand.
Estimating the strength of poker hands by ILP techniques 3
After the flop has been exposed, the strength of each hand might drasti-
cally change, depending on how well the starting hand combines with the flop.
Unfortunately, it is highly impractical to create tables ranking the strength of
each starting hand h for each flop f , since there are 52 50
2 × 3 = 25, 989, 600
such combinations. The subject of our paper is to investigate some possible
ways to compute the strength of a hand once a particular flop has been ex-
posed.
Equity of hand vs hand. When only two players remain in play, we say that
they are heads up. The flop is a crucial point in a hand, when many times two
players remain heads up. The flop is crucial since it is the time when most of
the cards are exposed and the players try to estimate the potentiality of their
hand with only two cards still to come.
Suppose a particular flop f = {c1 , c2 , c3 } has been exposed (where the ci
are three specific cards), and that two players, A and B, are heads up. A holds
{a1 , a2 }, while B holds {b1 , b2 }. What is the probability pw that, after the turn
c4 and the river c5 have been exposed, A will hold the winning hand? Let us
call pw such probability. It is easy to compute pw by a simple algorithm: We
loop over all possible values for {c4 , c5 } (there are 452 = 990 such pairs). For
each pair we record if A wins or if the hand is a tie. Let nw be the number
of wins for A and nt the number of ties. Since in case of a tie the pot is split
between the winners, for each tie we assign 1/2 win to A and 1/2 to B, so that
pw = (nw + 21 nt )/990. The probability for a hand to be the winner after all
cards have been exposed, given some cards that have already been exposed,
is called the hand’s equity. A hand has a preflop equity, a flop equity, a turn
equity and a river equity. In this paper we are particularly concerned with the
flop equity, that is the most crucial (and difficult to estimate) in the course
of the play. Many important decisions are based on good estimates of the flop
equity of a hand. In particular, commitment decisions (i.e., decisions that put
at stake all of our chips) can be based on the so called pot-odds which, in
turn, are based on our equity. Loosely speaking, if the money that we can gain
(i.e., the pot) is (or is expected to become) vP , and it costs us vu to play, and
our equity is E, playing is profitable if E > vu /(vu + vP ) and unprofitable
otherwise.
Equity of hand vs range. In the game of poker it is very difficult (or, more likely,
impossible) to pinpoint the opponent’s starting hand to just one possibility. In
practice, all one can do is to formulate an educated guess on a set of hands (the
fewer, the better) that his opponent might be holding in a specific situation.
In the poker jargon, such a set of hands is called a range.
We will consider ranges in which all hands have the same probability of
being the actual hand that a player holds. That is, if R is a range, then each
hand in R is equally likely and has probability 1/|R|. More realistically, we
4 Marcello Dalpasso, Giuseppe Lancia
could have defined a range in such a way that different hands in R could have
different probabilities (for instance, in a particular situation a player could
hold either AK (ace-king) or AQ (ace-queen), but, given that we know he his
somewhat conservative, it could be more likely than he has AK than AQ). Gen-
eralizing our arguments to ranges in which each hand has its own probability is
straightforward, but it would require the knowledge of the probabilities with
which a particular opponent is holding particular hands. For simplicity, we
have chosen to consider here the case of uniform probabilities.
The opponent’s range is a subset of all possible starting hands. Once the
flop is exposed, the range is in fact a subset of a set of 472 starting hands,
namely all hands that do not include any of the cards that we hold or that
belong to the flop. Assume player A holds a hand h, player B holds one hand
from a specific range R, and a flop f has been exposed. The equity of h vs R
on this flop, denoted by E(h, f, R) is the probability that, after turning two
more cards (turn and river) player A will be the winner.
Computing the equity of a hand vs a range with a computer is very easy,
and there are many online sites that offer this service (see, e.g., [9]). It is
just a matter of computing the average equity of h vs each hand h0 ∈ R, as
explained before. Of course this could be a demanding task (for instance, if
R is the range “ATC” –any two cards– there are almost 1000 hand-vs-hand
computations to be made). Needless to say, such computations are impossible
to be made mentally at the poker table.
The main goal of this paper is to show that mathematical programming tech-
niques [2, 7] can be applied to the game of poker to study the strength of a
hand versus a range after the flop. Our objective was to come up with some
relatively simple formulas that can potentially be computed mentally by a
player at the table and give him his equity on any flop. In order to be simple,
the formulas had to rely on as few “features” of the flop texture as possible.
Our approach can be applied to any given hand h versus any given range R.
In this paper we have considered some important cases for h such as strong
pairs, strong non-pairs and medium suited connectors1 , and run them against
some ranges taken from the literature. We define a set of n binary features
that each flop may or may not possess (e.g., “is there an ace on the flop?”, “is
the flop all of the same suit?”, “is there a pair on the flop?”, etc.), so that to
each flop there corresponds a binary n-vector. Then, by using Integer Linear
Programming (ILP), we both select a subset of “few” features to look at and
assign weights to the selected features in such a way that the equity of each
flop can be estimated with high precision by the weighted sum of the features
1 Two cards are said to be connectors if they are consecutive, and they can realize, po-
tentially, up to six straights. If the cards are also suited, their strength increases due to the
possibility that they will realize a flush. Therefore, suited connectors are considered fairly
good starting hands by poker players.
Estimating the strength of poker hands by ILP techniques 5
possessed by the flop. In the remainder of the paper we will elaborate on this
technique. We notice that this is the first time that ILP has been applied to
the game of poker to derive simple formulas for estimating the equity of hands.
The only other applications of ILP to poker in the literature are related to
game-theoretical strategies for simple, specific, situations, such as deciding to
either bet all chips preflop or to fold the hand [1, 4].
The paper is organized as follows. In Section 2 we describe a set of impor-
tant ranges taken from the literature, that will be used in our computational
experiments. Furthermore, we describe the set of features that we have in-
troduced to characterize each flop. In Section 3 we describe the ILP models
proposed in order to accurately estimate the equities by using only a small
number of features. The results of our computational experiments are pre-
sented in Section 4. Some conclusions are drawn in Section 5.
2.1 Ranges
The community of poker players regards David Sklansky as the person who laid
the mathematical foundations of the game of poker. In one of his pioneering
books [6], he suggested the division of all starting hands into nine groups
(today known as Sklansky groups [8]), in such a way that all hands in the
same group have roughly the same strength, and are stronger than all hands
in the groups that follow. For instance, group number 1 consists of the pairs
AA, KK, QQ, JJ and of the unpaired suited hand AKs. In Table 2 we report all
hand groups in Sklansy’s classification.
From Sklansky groups we have derived four ranges, namely (i) Range ultra-
strong (RUS) (Sklansky group-1 hands); (ii) Range strong (RS): (groups 1
and 2); (iii) Range medium-loose (RML): (groups 1, . . . , 5); (iv) Range any-
two cards (ATC): (all possible starting hands). These ranges are meant to
represent the possible holding of a player based on the preflop action, i.e., im-
mediately before the flop is exposed. In poker, given specific preflop situations,
experienced players are able to assign certain ranges to their opponents. Let
us look at some examples: (i) If player A raises the pot, player B re-raises
6 Marcello Dalpasso, Giuseppe Lancia
and then player C puts in a third raise, then it is very likely that C has a
very strong hand, something like a pair of aces or kings. (ii) If, in the previous
situation, player C does not raise, but still elects to call, then it is likely that
he has a quite strong hand. (iii) If everybody folds, and just two players (the
blinds) remain in play without any raise, then each of them can literally have
any two cards.
1. Individual broadway3 cards: The flop has one/at least two/zero/ aces
(features F1 /F2 /F3 , respectively). The same for Kings (features F4 , F5 ,
F6 ), Queens (F7 , F8 , F9 ), Jacks (F10 , F11 ,F12 ) , Tens (F13 , F14 , F15 ).
2. Suits: The flop has one/two/three/ suits (F16 /F17 /F18 ). The flop has two
suits with a suited ace (F19 ).
3. Ranks: The flop has three cards of the same rank (F20 ), exactly two cards
of the same rank (F21 ) or three cards of different ranks (F22 ).
4. Paint4 cards: The flop has one/at least two/three/ paint cards (F23 /F24 /
F25 ).
5. Broadway: The flop has zero/one/two/three/ broadway cards (F26 /F27 /
F28 /F29 ).
6. Cards size: The flop has three medium (i.e., in {7, . . . , T}) cards (F30 ).
The flop has three small (i.e., in {2, . . . , 6}) cards (F31 ). The flop has three
2 A draw is a hand that has the potential to become either a straight or a flush by the
river. For example, we have a flush draw if our hand combined with the flop contains four
cards of the same suit, so that one more card of that suit will give us a flush. When we
cannot complete our point by the turn (i.e., we need two good cards in sequence), the draw
is called a backdoor draw.
3 Broadway = card from Ten to Ace.
4 Paint = card from Jack to Ace.
Estimating the strength of poker hands by ILP techniques 7
medium-small cards (F32 ). The flop has three small cards all of different
rank ≤ 5 (F33 ).
7. Straight: The flop has cards in straight, i.e., three consecutive cards (F34 ).
The flop has cards in straight with a 1-gap, i.e., with ranks r, r + 1, r + 3
or r, r + 2, r + 3 (F35 ). The flop has cards in straight with a 2-gap (F36 ).
The flop has cards in straight with a 3-gap (F37 ). The flop is such that no
player can have a straight or make a straight by the turn (F38 ).
1. Flush draws: The flop is not monochromatic and our hand+flop has
3 cards of one suit (F39 ). Our hand+flop has 4 cards of one suit (F40 ).
The flop is monochromatic but we have no flush draw (F41 ). The flop is
bichromatic but we have no flush draw (F42 ). We have a made flush (F43 ).
2. Made hands: We have 4-of-a-kind or full house (F44 ). We have 3-of-a-
kind/at least 3-of-a-kind/ using at least one card in starting hand (F45 /F46 ).
We have paired one of our cards (F47 ). We have at least two pair (F48 ). We
have top/middle/bottom/ pair, i.e., we paired the highest/middle/bottom
card in the flop (F49 /F50 /F51 ). We have two pair or 3-of-a-kind and the
flop has three/two/ ranks (F52 /F53 ).
3. Overcards5 : The flop contains zero/one/at least two/ overcards to our
highest card (F54 /F55 /F56 ). We have one/two/ overcards to the highest
card in the flop (F57 /F58 ).
4. Straight: We have a straight (F59 ). We have an open-ended straight draw6
with/without/ the bottom end (F60 /F61 ). We have an inside/double in-
side/ straight draw7 (F62 /F63 ). We have a backdoor straight that can be
complete in one/more than one/ ways (F64 /F65 ). We have no draws to
either a straight or a flush (F66 ).
5. Draw combinations: We have an inside straight draw and zero/one/two
overcards to the flop in our hand (F67 /F68 /F69 ). We have an inside straight
draw, a backdoor flush draw, and the flop has ≥ 2 suits (F70 ). We have
an inside straight draw and a (non-backdoor) flush draw (F71 ). We have a
(non-backdoor) flush draw and one/two/ overcards to the flop (F72 /F73 ).
5 A card X is an overcard to Y if it is a higher card than Y
6 A straight draw is open-ended if our hand plus the flop contain four consecutive cards,
say r, r + 1, r + 2, r + 3. For an open-ended straight draw, there are 8 cards that can
completed the straight by the turn. If r is in our starting hand, we say that we hold the
bottom end. This is a dangerous situation, since a card of rank r + 4 by the turn gives us a
straight, but it could give our opponent a higher straight if he holds r + 5.
7 An inside straight draw consists of four of the five cards needed for a straight, but
missing one in the middle. For an inside straight draw, there are 4 cards that can complete
the straight by the turn. A double inside straight draw is a draw made of four non-consecutive
cards, such that there are 8 cards that can complete the straight by the turn. For example
if we hold 59 and the flop is 367, any 4 or 8 will give us a straight.
8 Marcello Dalpasso, Giuseppe Lancia
With respect to the features F39 –F73 , let us consider the following exam-
ples. Assume our starting hand is [K♣] [T♥]. If the flop is [J♥] [9♣] [7♣] then
the following features are true: F39 , F54 , F57 , F63 . If the flop is [A♣] [Q♣] [T♣]
then the following features are true: F40 , F46 , F51 , F55 , F62 , F67 , F71 .
In this section we describe our Integer Linear Programming models for com-
puting the equity of a certain hand h versus a certain range R. The actual
hands and ranges utilized are detailed in Section 4.
We describe two ILP models, one relative to the maximum error, and one
to the average error of the estimated equity with respect to the true equity.
Our models are parametrized with parameters N̄ and Ē. More specifically, we
can (i) fix N̄ to be the maximum number of features that can be used, and then
minimize the maximum (or the average) error, or (ii) fix Ē to be a threshold for
the accepted maximum (respectively, average) error and minimize the number
of features sufficient to obtain an error within the threshold.
There are m = 19600 flops f 1 , . . . , f m . Each flop f i does or does not
possess each of n binary features Fj , and we denote by Fj (f i ) ∈ {0, 1} the
absence/presence of a particular feature in a given flop.
The first step consists in considering each flop f i in turn, and computing
the exact equity ei := E(h, f i , R) of h vs R (we did this by a C# code that
we developed, but the step can also be done by resorting to online sites that
compute equities, such as [9]). Moreover, we check all features on f i , thus
obtaining a binary vector bi = (bi1 , . . . , bin ) with bij = Fj (f i ). At the end, we
have a matrix B of m rows and n + 1 columns (the last column contains the
equities (e1 , . . . , em )T ). The matrix B is (part of) the constraint matrix of our
linear programs, to be defined.
The model has n binary variables y1 , . . . , yn . Each variable yj can allow (if
yj = 1) or forbid (if yj = 0) the use of the corresponding feature. Furthermore,
there are real variables xj , for j = 1, . . . , n. Each variable xj is the weight that
we associate to a feature. The weight is meant to represent how much equity
we gain (if xj > 0) or we lose (if xj < 0) when the feature Fj is present. Since
xj represents a probability, we want |xj | ≤ 1.
Let be a variable representing the maximum error (i.e., difference in
absolute value between the estimated equity and the true equity of a flop). We
obtain the following ILP for minimizing the maximum error, given a budget
N̄ on how many features can be used altogether:
subject to
−yj ≤ xj ≤ yj ∀j = 1, . . . , n (2)
n
X
yj ≤ N̄ (3)
j=1
Estimating the strength of poker hands by ILP techniques 9
n
X
ei − ≤ bij xj ≤ ei + ∀i = 1, . . . , m (4)
j=1
≥ 0, xj ∈ R, yj ∈ {0, 1} ∀j = 1, . . . , n. (5)
The objective function (1) calls for minimizing the error . Constraints
(2) are “activation” constraints: when a variable yj is 1, the weight xj of the
corresponding feature can be non-null, while when yj = 0, xj must be null.
Constraint (3) says that we can use at most N̄ features. Constraints (4) force
that, for each flop f i , the estimated equity differs from the true equity (in
excess or in defect) by at most . The model has 2(n + m) + 1 constraints and
2n + 1 variables, n of which are integer.
From the above model, it is easy to derive a model in which we minimize
the number of features sufficient to stay within a certain maximum Pn error. We
simply need to use the objective FEAT MAXERR(Ē) := min j=1 yj under con-
straints (2) and (4) in which the variable has been replaced by the constant
Ē.
We now turn to the model for minimizing the average error. In this model
we have real variables i , for i = 1, . . . , m, that represent the error in estimating
the equity of eachPspecific flop f i . The model calls for the minimization of
1 m
AVGERR(N̄ ) := m i=1 i under constraints (2), (3) and
n
X
ei − i ≤ bij xj ≤ ei + i ∀i = 1, . . . , m (6)
j=1
4 Computational results
Each hand was run against the four ranges that were described in Section 2,
namely, RUS (Range Ultra-Strong, i.e., hands in Sklansky group 1), RS (Range
strong, i.e., hands in Sklansky groups 1 and 2), RML (Range Medium-Loose,
i.e., hands in Sklansky groups 1, . . . , 5), ATC (Range Any-Two Cards, i.e., all
possible hands).
In this paper we focus on the minimization of the average error. As a
matter of fact, the minimization of the maximum error is not as important,
nor as robust, as that of the average error. The problem is due to the presence
of outliers (i.e., very few flops on which it is difficult to estimate the equity
with a small error). Clearly a player does not care about a handful of flops on
which he might be very wrong in estimating the equity, as long as on most of
the flops (i.e., on average) his estimate is quite accurate. Furthermore, these
outliers seem unavoidable, at least with the features we used, and spending a
lot of computation time with the goal of minimizing the error on the outliers
does not appear to be justified. For more results on the maximum error goal,
we refer the reader to the preliminary version of this paper, appeared in the
SOR proceedings [3], in which we minimized the maximum error for JJ and
AKs against the above four ranges. Finally, a note about the error percentages
is in order. In the poker community, equities are indicates in percentage points,
rather than as probabilities. So, an equity of 0.3 is usually referred to as a 30%
equity. In accordance with the tradition, we use the percentage point (i.e., 1%)
as the unit of measure for equity, so that, in estimating equities, also the error
is reported in percentage points. Therefore, when we say that we estimated
an equity with an error of, e.g., 2%, we mean an absolute error rather than
Estimating the strength of poker hands by ILP techniques 11
a relative error. That is, if e is the estimate and t is the true equity, it is
|t − e| = 2%.
The experiments have required running a total of 680 ILPs, to compute
AVGERR(N̄ ) and FEAT AVGERR(Ē) for various values of N̄ and Ē. The LP solver
used was CPLEX 12.5 on an Intel
R CoreTM i3 CPU M 350 @ 2.27 GHz with
2.8 GB of RAM. If the running time to solve an ILP exceeded a maximum
limit of 2 hours, then the computation was aborted and the best solution found
so far was returned (this happened in about 14% of the cases).
In Figure 1 we show how the error and the number of features relate to
each other when estimating the equity of strong pairs vs RUS. The x-axis
corresponds to an upper bound to the average error, while the y-axis corre-
sponds to an upper bound to the number of features used. A point (x, y) in
the plot means that it is possible to achieve an average error ≤ x by using
at most y features. We see how a very small average error, i.e., around 4%,
can be obtained by looking at only five features of the flop, while, with about
ten features, one can achieve an average error between 2% and 3%. It is also
very surprising that by using only three features one can achieve an error of
10% on average. Figure 2 shows the same type of results when running strong
pairs against the range ATC, Figures 3 and 4 illustrate the same type of re-
sults when running suited high cards against the ranges RUS and ATC, while
Figures 5 and 6 illustrate the results of running medium-strength hands, such
as suited connectors and small pairs, against the ranges RUS and ATC. As
a general comment, we can see how estimating an equity vs ATC is slightly
12 Marcello Dalpasso, Giuseppe Lancia
Table 3 Results for test hands vs. the four ranges. Objective is minimization of the number
of features needed to estimate the equity with an average error of at most 2.5%.
hand range N 1st fea. 2nd fea. 3rd fea. 4th fea. 5th fea.
RUS 8 0.29 (F6 ) 0.29 (F9 ) 0.29 (F12 ) 0.24 (F24 ) -0.17 (F41 )
AA RS 8 0.96 (F49 ) 0.74 (F58 ) -0.19 (F41 ) -0.11 (F24 ) 0.10 (F15 )
RML 15 0.80 (F54 ) -0.17 (F41 ) 0.13 (F44 ) 0.11 (F32 ) -0.11 (F45 )
ATC 3 0.85 (F54 ) 0.10 (F48 ) -0.08 (F35 )
RUS 6 0.63 (F49 ) 0.45 (F50 ) 0.29 (F6 ) 0.18 (F9 ) 0.18 (F12 )
KK RS 7 0.97 (F32 ) 0.88 (F23 ) 0.80 (F24 ) -0.31 (F6 ) -0.14 (F41 )
RML 13 0.67 (F32 ) 0.64 (F23 ) 0.59 (F24 ) 0.44 (F5 ) 0.32 (F4 )
ATC 5 0.88 (F2 ) 0.79 (F1 ) 0.83 (F3 ) -0.14 (F41 ) 0.12 (F47 )
RUS 5 0.73 (F7 ) 0.24 (F9 ) 0.19 (F12 ) -0.07 (F55 ) -0.01 (F42 )
QQ RS 6 0.77 (F47 ) 0.26 (F9 ) 0.20 (F58 ) 0.09 (F12 ) 0.08 (F15 )
RML 11 0.58 (F12 ) 0.55 (F10 ) 0.47 (F11 ) 0.25 (F48 ) 0.18 (F3 )
ATC 5 0.94 (F47 ) 0.77 (F9 ) -0.13 (F41 ) 0.04 (F58 ) -0.02 (F42 )
RUS 6 0.79 (F11 ) 0.65 (F10 ) 0.12 (F62 ) 0.11 (F3 ) 0.10 (F6 )
JJ RS 9 0.44 (F47 ) 0.22 (F3 ) 0.19 (F6 ) 0.10 (F40 ) -0.09 (F41 )
RML 8 0.77 (F47 ) 0.54 (F12 ) 0.18 (F3 ) -0.12 (F41 ) -0.09 (F7 )
ATC 6 1.00 (F11 ) 0.94 (F10 ) 0.75 (F12 ) -0.13 (F41 ) -0.06 (F35 )
RUS 7 0.63 (F48 ) 0.16 (F40 ) 0.12 (F62 ) 0.10 (F49 ) 0.09 (F6 )
99 RS 17 0.61 (F51 ) 0.55 (F50 ) 0.51 (F49 ) -0.28 (F2 ) -0.25 (F1 )
RML 9 0.39 (F47 ) 0.23 (F3 ) 0.17 (F12 ) 0.14 (F6 ) 0.14 (F9 )
ATC 5 0.74 (F54 ) 0.71 (F55 ) 0.66 (F56 ) 0.22 (F47 ) -0.12 (F41 )
RUS 7 0.69 (F47 ) 0.15 (F40 ) 0.12 (F62 ) 0.09 (F3 ) 0.09 (F6 )
55 RS 19 -0.53 (F20 ) 0.51 (F47 ) 0.20 (F3 ) 0.18 (F40 ) 0.17 (F6 )
RML 23 0.68 (F22 ) 0.45 (F44 ) -0.43 (F45 ) 0.34 (F21 ) 0.20 (F61 )
ATC 12 0.62 (F21 ) 0.52 (F22 ) 0.40 (F20 ) 0.37 (F47 ) 0.18 (F61 )
RUS 11 0.51 (F43 ) 0.38 (F54 ) 0.34 (F49 ) 0.24 (F47 ) -0.15 (F66 )
AKs RS 11 0.77 (F54 ) 0.70 (F43 ) -0.33 (F16 ) -0.27 (F58 ) -0.25 (F42 )
RML 21 0.53 (F61 ) 0.44 (F54 ) 0.41 (F43 ) 0.32 (F49 ) 0.10 (F40 )
ATC 7 0.62 (F54 ) 0.57 (F43 ) 0.33 (F49 ) 0.16 (F73 ) -0.14 (F16 )
RUS 18 0.44 (F43 ) 0.42 (F47 ) 0.29 (F1 ) -0.24 (F52 ) 0.21 (F54 )
AQs RS 16 0.73 (F47 ) -0.60 (F2 ) 0.48 (F7 ) 0.30 (F9 ) 0.20 (F40 )
RML 26 -0.62 (F52 ) 0.49 (F48 ) 0.43 (F1 ) 0.39 (F7 ) 0.22 (F3 )
ATC 10 0.60 (F54 ) -0.58 (F52 ) 0.37 (F48 ) 0.30 (F1 ) 0.27 (F7 )
RUS 14 -0.91 (F52 ) 0.81 (F48 ) 0.34 (F4 ) 0.30 (F40 ) 0.27 (F7 )
KQs RS 14 0.77 (F47 ) 0.50 (F4 ) 0.30 (F40 ) 0.28 (F7 ) 0.23 (F61 )
RML 17 0.57 (F48 ) -0.42 (F46 ) 0.36 (F53 ) 0.35 (F45 ) 0.28 (F40 )
ATC 13 0.59 (F21 ) 0.51 (F22 ) 0.47 (F48 ) -0.36 (F46 ) 0.31 (F45 )
RUS 11 0.72 (F48 ) -0.42 (F52 ) 0.29 (F40 ) 0.22 (F61 ) 0.18 (F49 )
JTs RS 12 0.70 (F47 ) 0.27 (F40 ) 0.20 (F61 ) 0.19 (F10 ) 0.18 (F60 )
RML 15 0.61 (F47 ) 0.37 (F10 ) 0.26 (F40 ) 0.23 (F12 ) 0.22 (F49 )
ATC 15 0.51 (F47 ) 0.41 (F18 ) 0.38 (F17 ) 0.34 (F10 ) 0.34 (F13 )
RUS 12 0.70 (F48 ) 0.27 (F40 ) 0.22 (F61 ) 0.20 (F60 ) 0.19 (F45 )
98s RS 40 0.55 (F48 ) 0.33 (F44 ) 0.27 (F40 ) 0.25 (F45 ) 0.24 (F53 )
RML 16 0.66 (F48 ) 0.40 (F53 ) 0.38 (F45 ) -0.35 (F46 ) 0.27 (F40 )
ATC 15 0.62 (F47 ) 0.53 (F52 ) -0.41 (F46 ) 0.40 (F53 ) 0.38 (F45 )
minimized. For each hand in each data set there are four rows, corresponding
to the four ranges. The column labeled “N ” reports the solution value, i.e.,
the number of features sufficient to have an average error of at most 2.5%.
When the value is written in italic, it means that it is not the exact value, but
the best value obtained by CPLEX within the maximum time limit of 2hrs.
The next five columns report the five most important features in the solution,
sorted by the absolute value of their weight. For each feature we list its weight
(rounded to multiples of 0.01) and its identifier. For instance, to compute the
equity of AA vs. ATC with an average error of at most 2.5% it is sufficient
to look at three features (F54 , F48 and F35 ). The first of them, however, is
always true for AA, since the flop cannot have any overcard. Therefore, here
is the, very simple, mnemonic formula for a player holding AA: “Start with a
base equity of 85%. If at the flop you have at least two pairs, add 10%, and if
the flop has a 1-gap straight, subtract 8%”.
In Table 4 we give detailed results for the problem in which N̄ = 10 and
the average equity error when using at most ten features was minimized. The
table is organized in the same way as Table 3, only that this time the third
column is labeled “E”, and reports the solution value, i.e., the average error in
equity estimation when using at most 10 features. When the value is written
in italic it means that it is not the exact value, but it is the best value obtained
by CPLEX within the maximum time limit of 2hrs. We notice that this set of
problems turned out to be quite more difficult to solve to optimality than the
problems in which N̄ was minimized. At any rate, when the computation was
aborted, the gap between the best solution found and the best lower bound
was very small (in the order of 0.1%). Therefore, for all practical purposes
with respect to human players adopting the weights to estimate equities, these
solutions are as good as optimal. The results show how ten features are quite
enough to estimate the equity with high precision. The best estimate happens
for AA vs ATC, where the error is only 1.1%. For 12 cases out of the 44 pairs
(hand, range), the average error is lower than 2%, while for 30 cases it is lower
than 3%.
With respect to the complete set of 73 features that we considered, we
observed the following facts: across all of our 680 tests,
– 60 features have been selected by at least 10 of the solutions,
– 31 features have been selected in at least 5% of the solutions,
– 16 features have been selected in at least 10% of the solutions,
– for 15 features the absolute value of the weight was greater than 0.1 in at
least 5% of the solutions.
5 Conclusions
For human players, computing the equity of a hand vs a range on the flop
is more of an art than a science, requiring mathematical, analytical, and also
psychological skills. Being able to estimate the equity with high accuracy is
what separates skilled professional players from the rest. Yet, the estimates
14 Marcello Dalpasso, Giuseppe Lancia
can never be too accurate due to the high number of factors in play. In this
paper we have shown how ILP can be used to select relevant features of the
flop and weights to assign to such features so that one can approximate the
equity of a hand versus a range by a weighted sum with few addends. This is
the first time that Mathematical Programming techniques have been applied
to the game of poker for estimating the strength of a hand.
It is very surprising, and unknown prior to this article, that by looking
at only five characteristics of a flop, it is possible to estimate the equity of a
hand vs any range with an average error of just around 3%. It is important
to remark that an error of 3% is considered negligible. Poker is a very hard
game of randomness and incomplete information, and humans look for simple
rules of strategy. For instance, preflop, KQs vs 99 have equity of 46.5% and
53.5% respectively, but this matchup is usually considered a coin-flip (50-50).
Similarly, poker books report that if we have either a flush draw or a straight
draw on the flop, the probability of completing the draw is 1 in 3 while actually
it is about 35% for the flush draw, and about 31% for the straight draw.
References
Table 4 Results for test hands vs. the four ranges. Objective is minimization of the average
error on equity estimation when using at most 10 features.
hand range Ē 1st fea. 2nd fea. 3rd fea. 4th fea. 5th fea.
RUS 2.2 % 0.34 (F6 ) 0.28 (F9 ) 0.28 (F12 ) 0.24 (F24 ) -0.18 (F41 )
AA RS 2.0 % 0.45 (F54 ) 0.26 (F6 ) -0.20 (F41 ) 0.13 (F9 ) 0.12 (F4 )
RML 2.8 % 0.69 (F54 ) -0.17 (F41 ) 0.16 (F46 ) 0.11 (F26 ) 0.11 (F21 )
ATC 1.1 % 0.93 (F54 ) -0.14 (F41 ) -0.12 (F34 ) -0.08 (F35 ) 0.07 (F48 )
RUS 1.8 % 0.45 (F18 ) 0.42 (F17 ) 0.33 (F16 ) 0.23 (F40 ) 0.18 (F9 )
KK RS 1.6 % 0.80 (F15 ) 0.76 (F15 ) 0.71 (F13 ) -0.34 (F6 ) -0.14 (F41 )
RML 2.6 % 0.96 (F32 ) 0.93 (F23 ) 0.88 (F24 ) 0.18 (F50 ) -0.16 (F6 )
ATC 1.3 % 0.96 (F46 ) 0.81 (F53 ) 0.79 (F47 ) -0.13 (F41 ) -0.10 (F34 )
RUS 1.4 % 0.70 (F17 ) 0.69 (F18 ) 0.61 (F16 ) -0.47 (F9 ) 0.21 (F12 )
QQ RS 1.5 % 0.85 (F15 ) 0.77 (F14 ) 0.75 (F13 ) -0.51 (F9 ) 0.21 (F58 )
RML 2.5 % 0.92 (F12 ) 0.90 (F10 ) 0.80 (F11 ) -0.27 (F9 ) -0.13 (F41 )
ATC 1.5 % 0.98 (F46 ) 0.80 (F53 ) 0.79 (F47 ) -0.14 (F41 ) -0.11 (F34 )
RUS 1.8 % 0.69 (F49 ) 0.64 (F50 ) 0.47 (F51 ) 0.18 (F61 ) 0.13 (F40 )
JJ RS 2.3 % 0.50 (F11 ) 0.45 (F10 ) 0.22 (F3 ) 0.19 (F6 ) -0.09 (F41 )
RML 2.1 % 0.95 (F3 ) 0.87 (F2 ) 0.78 (F1 ) -0.26 (F12 ) -0.12 (F41 )
ATC 1.7 % 0.97 (F48 ) -0.92 (F20 ) 0.77 (F12 ) -0.14 (F41 ) -0.07 (F34 )
RUS 1.9 % 0.72 (F49 ) 0.69 (F50 ) 0.56 (F51 ) 0.21 (F61 ) 0.16 (F40 )
99 RS 2.9 % -0.55 (F20 ) 0.54 (F46 ) 0.20 (F3 ) 0.16 (F6 ) 0.15 (F61 )
RML 2.1 % 0.38 (F46 ) 0.20 (F3 ) 0.14 (F12 ) 0.12 (F9 ) 0.11 (F6 )
ATC 1.8 % 0.78 (F11 ) 0.76 (F12 ) 0.71 (F10 ) 0.23 (F46 ) -0.12 (F41 )
RUS 1.9 % -0.75 (F20 ) 0.69 (F48 ) 0.23 (F61 ) 0.15 (F40 ) 0.12 (F69 )
55 RS 3.1 % 0.53 (F48 ) 0.17 (F61 ) 0.17 (F3 ) 0.15 (F6 ) 0.12 (F40 )
RML 3.4 % 0.36 (F48 ) 0.15 (F3 ) 0.14 (F51 ) 0.13 (F12 ) 0.11 (F9 )
ATC 2.7 % 0.62 (F21 ) 0.51 (F22 ) 0.37 (F46 ) 0.14 (F62 ) -0.11 (F42 )
RUS 2.5 % 0.69 (F61 ) 0.66 (F43 ) 0.41 (F49 ) 0.30 (F73 ) 0.19 (F9 )
AKs RS 2.6 % 0.70 (F43 ) 0.33 (F49 ) 0.32 (F54 ) 0.17 (F73 ) -0.11 (F16 )
RML 3.1 % -0.58 (F41 ) 0.49 (F61 ) 0.43 (F16 ) 0.39 (F54 ) 0.28 (F49 )
ATC 2.0 % 0.62 (F54 ) 0.42 (F43 ) 0.41 (F61 ) 0.31 (F49 ) 0.15 (F73 )
RUS 3.2 % -0.78 (F52 ) 0.61 (F48 ) 0.39 (F1 ) 0.24 (F40 ) 0.19 (F12 )
AQs RS 3.1 % 0.54 (F43 ) 0.37 (F49 ) 0.28 (F40 ) 0.19 (F46 ) 0.18 (F50 )
RML 3.3 % 0.60 (F54 ) 0.30 (F49 ) -0.29 (F41 ) -0.20 (F42 ) -0.16 (F18 )
ATC 2.4 % 0.56 (F43 ) 0.48 (F54 ) 0.29 (F49 ) 0.28 (F17 ) 0.23 (F50 )
RUS 2.9 % 0.77 (F46 ) 0.33 (F4 ) 0.30 (F40 ) 0.26 (F7 ) 0.20 (F61 )
KQs RS 3.0 % 0.74 (F46 ) 0.42 (F7 ) 0.38 (F4 ) 0.29 (F40 ) 0.18 (F57 )
RML 3.3 % 0.55 (F17 ) 0.52 (F46 ) 0.36 (F18 ) 0.36 (F4 ) 0.34 (F7 )
ATC 3.0 % 0.72 (F40 ) 0.63 (F18 ) 0.60 (F42 ) 0.51 (F16 ) 0.35 (F48 )
RUS 2.6 % 0.48 (F48 ) 0.28 (F40 ) 0.26 (F46 ) 0.20 (F61 ) 0.11 (F62 )
JTs RS 2.8 % 0.70 (F46 ) 0.33 (F49 ) 0.27 (F40 ) 0.19 (F60 ) 0.19 (F61 )
RML 3.1 % 0.63 (F46 ) 0.45 (F10 ) 0.25 (F40 ) 0.25 (F13 ) 0.23 (F12 )
ATC 3.3 % 0.79 (F46 ) 0.74 (F50 ) 0.49 (F56 ) 0.40 (F27 ) -0.24 (F48 )
RUS 2.9 % 0.65 (F48 ) 0.27 (F40 ) 0.23 (F61 ) 0.17 (F47 ) 0.15 (F60 )
98s RS 3.8 % 0.56 (F48 ) 0.26 (F40 ) 0.22 (F61 ) 0.20 (F47 ) 0.16 (F53 )
RML 3.7 % 0.55 (F48 ) 0.34 (F53 ) 0.32 (F47 ) 0.26 (F40 ) 0.22 (F32 )
ATC 3.2 % 0.54 (F40 ) 0.54 (F48 ) 0.41 (F53 ) 0.38 (F47 ) 0.34 (F18 )