General CPRG Information

Poker research?

The University of Alberta Computer Poker Research Group is working on creating computer programs that play poker better than any human being, as a testbed for doing good science. There are many core artificial intelligence and computer science problems that need to be solved to make an excellent player, and games like poker are a fun and controllable way to examine these problems. A longer explanation of why we're looking at poker can be found in Darse Billing's M.Sc. dissertation (Billings, 1995).

For even more detailed information about the past progress, you can look at the following publications which describe the various programs we've worked on over the years.


1997 Loki
(Papp, 1998)
1999 Poki
(Davidson, 2002)
2002 PsOpti/Sparbot
(Billings et al., IJCAI 2003)
2003 Vexbot
(Schauenberg, 2006)
2006 Hyperborean
(Zinkevich et al., NIPS 2007)
2007 Polaris
(Johanson, 2007)
2007 Hyperborean No-Limit
(Schnizlein, 2009)
2009 Hyperborean Ring
(Abou Risk, 2009)
2015 Cepheus
(Bowling et al., Science 2015)
2017 DeepStack
(Moravcik et al., Science 2017)

We've made good progress but there are lots of interesting problems left and research is ongoing!

Equilibrium strategies

Much of our success has come from finding Nash equilibrium strategies. The basic flavour of the idea is that we're trying to find a fixed strategy which guarantees that we do not lose money in the long run, no matter who it plays against or what strategy they employ. Compared to the way many people may think about playing, this may sound like a pessimistic approach. Instead of asking how we can win the most money against a player, we're asking how to lose as little money as possible. Fortunately, it's not as bad as it may seem: the best way to not lose money is to win.

Even the smallest variant of poker we work with, heads-up (two player) limit (fixed bet size) Texas Hold'em, is too big for current techniques and hardware. While there may be only around 16,000 unique betting sequences, there are about 56 trillion (56*10^12) different ways for the cards to be dealt out. Fortunately, many of these different possibilities are very similar. As described inApproximating Game-Theoretic Optimal Strategies for Full-scale Poker (Billings et al., IJCAI 2003) we use smaller games which treat these similar hands as one possibility.

Seeing past luck

The question of who is the winner in a match is not as simple as it seems. While poker is a game of skill, luck can affect any single hand. It's hard to lose if you have the best hand! The skill shows up more over time, as the more skilled player makes more money with the good hands, and loses less with the bad hands. Unfortunately, this still means that if you just look at the amount of money one side wins, you need a surprisingly large number of hands to rule out the possibility that one player got better cards.

The degree to which this affects things may be surprising to some poker players. A win rate of 5 big blinds per 100 hands in limit Texas Hold'em is considered significant. If one were to just look at money, however, it would require around 50,000 hands before you could have 95% confidence that this outcome wasn't just the result of luck, and the player is actually only a break-even player. With many of the computer poker competitions being won by fractions of a big blind per 100 hands, this would require many millions of hands to determine a winner.

We have looked at a couple of different ways to reduce the number of hands needed to determine a winner.Strategy Evaluation in Extensive Games with Importance Sampling (Bowling et al., ICML 2008) andA Tool for the Direct Assessment of Poker Decisions (Billings and Kan, ICGAJ 2006) look at this problem. We also have some freely available source that implements the latter of these ideas.

Can I play against your bots? Wasn't Poki online?

At this time, there is no UofA CPRG venue for playing against our bots. We're working on it! Poki used to play online, but hasn't aged entirely gracefully and is incompatible with the framework current research is using. Previously, the Poker Academy program came with Poki, as well as Sparbot. Polaris also used to be available to play against in the online Poker Academy rooms. Unfortunately, Poker Academy no longer exists, and thus our programs are not currently available to play against online.

However, if you are writing poker player programs of your own, please consider entering the poker competition. We enter the competition every year, so at least your programs can play against us!

I want to write a poker playing program. Help!

Papers on our research are all freely available in the Publications section. As a good introduction, Michael Johanson's M.Sc. dissertation (Johanson, 2007) talks about many of the basic ideas that we still use, all the way from abstraction to the current solution technique. There is also sample code for a toy game. You might also be interested in the poker-eval library, which is part of the open source pokersource project.