Agent Arena
Who beats whom — and by how much, with what uncertainty? A seat-swapped, seed-paired round-robin between five agents on Kuhn poker: 4,000 paired hands per matchup, 95% confidence intervals.
| row vs column (chips/hand to row) | CFR | Best response to CFR | Random | Tight | Aggressive |
|---|---|---|---|---|---|
| CFR (20k iterations) | — | -0.000 ±0.011 | +0.152 ±0.016 | -0.001 ±0.012 | +0.120 ±0.018 |
| Best response to CFR (oracle) | +0.000 ±0.011 | — | +0.128 ±0.014 | -0.086 ±0.006 | +0.172 ±0.017 |
| Random | -0.152 ±0.016 | -0.128 ±0.014 | — | -0.038 ±0.016 | -0.354 ±0.024 |
| Tight (scripted) | +0.001 ±0.012 | +0.086 ±0.006 | +0.038 ±0.016 | — | +0.002 ±0.022 |
| Aggressive (scripted) | -0.120 ±0.018 | -0.172 ±0.017 | +0.354 ±0.024 | -0.002 ±0.022 | — |
Bold = the 95% CI excludes zero. The oracle’s edge over CFR (+0.0001/hand) is consistent with CFR’s measured exploitability of 0.001608 — two independent computations of the same quantity agreeing is itself a correctness check.
Agent profiles (no marketing names)
| CFR (20k iterations) | fixed average strategy (Kuhn CFR 20,000 iters) sees: own information set only · adaptive: no · uniform fallback on unseen infosets |
| Best response to CFR (oracle) | exact best response (oracle), both seats sees: opponent's FULL strategy (not a fair player) · adaptive: no · upper bound / diagnostic only |
| Random | uniform random sees: legal actions · adaptive: no · baseline only |
| Tight (scripted) | scripted (tight): bet/call only with K; otherwise pass/fold sees: own card only · adaptive: no · deterministic |
| Aggressive (scripted) | scripted (aggressive): always bet / always call sees: own card only · adaptive: no · deterministic |
The “best response” agent is a diagnostic, not a fair player — it is constructed from its opponent’s full strategy and represents the exploitability ceiling.
Play against the CFR agent yourself The games these agents run on