How CFR bots learned near-unbeatable poker

Every famous research poker bot — Cepheus, Libratus, Pluribus, Slumbot — grew from one deceptively simple idea: regret.

The core loop

Counterfactual regret minimization (CFR) is a self-play algorithm. The bot plays against itself billions of times. After each hand it asks, for every decision it faced: "how much better would I have done with each other action?" That difference is the regret. Actions that would have done better get played a little more often next time; actions that did worse, less often.

Run that loop long enough and the strategy stops being exploitable: the average of all those adjustments converges toward a Nash equilibrium — a strategy that cannot lose in expectation against any opponent, no matter how it is attacked.

Why poker needed abstraction

No-Limit Hold'em has more distinct situations than there are atoms you could count in a lifetime, so nobody runs CFR on the full game. Bots group similar hands into buckets ("these flush draws play alike") and restrict bet sizes to a menu. Slumbot is a classic blueprint of this kind. Later systems — DeepStack, Libratus — added real-time re-solving of the current situation on top of the precomputed blueprint, which is roughly "preparation plus thinking at the table."

What equilibrium play feels like

Where the famous bots went

Cepheus (Alberta, 2015) essentially solved heads-up limit hold'em. Libratus (CMU, 2017) beat top professionals heads-up no-limit; Pluribus (2019) did it six-handed. None of the three was ever released for the public to play. Slumbot stayed — which is why our champion tier plays through its live API, and why "vs Slumbot" is still the number every new bot reports.