Benchmarks
Four games with known answers, and how far each solver is from them.
Each solver is graded by exploitability: the chips per hand a best response wins against its average strategy. Zero is a Nash equilibrium. Each game was solved and graded before the next was started.
| Game | Method | Graded against | Exploitability |
|---|---|---|---|
| Rock-paper-scissors | regret matching | the uniform Nash | 0.0009chips/round exploitable after 100k rounds |
| Kuhn poker | vanilla CFR | the closed-form equilibrium; all 64 pure strategies | 0.00063chips/hand; game value −0.05555 against −1/18 |
| Leduc poker | vanilla CFR | an OpenSpiel solve, frozen as a fixture | 0.011chips/hand; game value −0.0874 against −0.0856 |
| Mini-drawmaha, 6.2M infosets | lockstep MCCFR, four regret rules raced | the exact best-response walk | 0.061chips/hand at 20M hands per seat |
| Mini-drawmaha | Deep CFR | the same exact walk and the tabular answer | 0.086chips/hand at 2M hands per seat, where LCFR is at 0.630 |
| Full Drawmaha | Deep CFR at scale | head-to-head checkpoint matches and a trained exploiter | —not started; the range interface is built ahead of it |
Benchmark 1 · Rock-paper-scissors
Regret matching finds the uniform Nash of rock-paper-scissors
Two regret matchers play each other. Each keeps a ledger of how much better every throw would have done, and mixes in proportion to the positive part. The current strategy wanders; the average converges.
Benchmark 2 · Kuhn poker
Vanilla CFR on Kuhn poker reaches 0.00063 of the closed-form equilibrium
Three cards, one bet, twelve information sets. The equilibrium is a one-parameter family known in closed form, and the game is small enough that all 64 pure strategies are enumerated for the grade. The game value is −1/18 for the first player.
| Iterations | Average | Current | Game value |
|---|---|---|---|
| 10 | 0.09114 | 0.24191 | −0.03597 |
| 100 | 0.02330 | 0.25000 | −0.05472 |
| 1,000 | 0.00650 | 0.27885 | −0.05518 |
| 10,000 | 0.00149 | 0.20359 | −0.05553 |
| 100,000 | 0.00063 | 0.24649 | −0.05555 |
Exploitability in chips per hand. At 100 iterations the game value is within 0.0009 of −1/18 and looks solved, while the strategy is still 15 times more exploitable than at 10,000.
Benchmark 3 · Leduc poker
Vanilla CFR on Leduc poker grades 0.011 against an OpenSpiel solve
Six cards, two rounds, one community card, 288 information sets. There is no closed form, so the reference is OpenSpiel's solve of the same game, frozen in the repository as a fixture.
| Measure | This solver | OpenSpiel |
|---|---|---|
| Exploitability, chips per hand | 0.0113 | — |
| Game value, seat 0 | -0.0874 | -0.0856 |
| Information sets | 288 | 288 |
The best response sums over the hidden hands a spot could be, then takes its maximum: a maximum inside the sum would be an opponent who sees face-down cards.
Benchmark 4 · Mini-drawmaha
Linear CFR on mini-drawmaha grades 0.061 at 20 million hands per seat
6,220,050 information sets, sampled by lockstep MCCFR, four regret rules raced on one seed. The grader is an exact best-response walk; no outside engine plays this game.
Benchmark 5 · Deep CFR
Deep CFR on mini-drawmaha grades 0.086 at 2 million hands per seat
The same sampler and the same grader, with the regret table replaced by a 4 × 256 network per seat and its regret targets divided by √pot. Graded at equal hands per seat against the table.
Next · Full Drawmaha
Full Drawmaha has not been started
2,598,960 holdings, 32 discards from each, two rankings on one pot. The plan is Deep CFR at scale, graded by head-to-head checkpoint matches and a trained exploiter, since no exact walk crosses the full tree. The range explorer runs the full game already, with an illustrative strategy that it labels as such.