Methodology
Every range on this site comes from a single CFR blueprint trained for 7.5 billion iterations on the open-source DCFR-SOLVER. This page is the full disclosure of how that blueprint was produced, what it covers, and what its measured exploitability is — to the decimal point.
Headline result
| Position | Gap (% pot) | Gap (bb/100) |
|---|---|---|
| UTG | 0.163 % | 3.3 |
| HJ | 0.243 % | 4.9 |
| CO | 0.334 % | 6.7 |
| BTN | 0.415 % | 8.3 |
| SB | 0.339 % | 6.8 |
| BB | 0.353 % | 7.1 |
No published 6-max NLHE preflop NashConv figure exists in the open literature — Pluribus explicitly avoided reporting one, and the major commercial solvers do not publish multiway preflop numbers. The figure above is a true reach-propagated vector best-response measurement, not a Monte-Carlo estimate. The vector BR cost is ~35 minutes per measurement (5 min × 7 walks: σ̄ + 6 per-seat BR).
Game configuration
| Stakes | NL100 — 100bb starting stack, no-limit hold'em, 6-max, no straddle |
|---|---|
| Open size | 7 bb from every position including SB |
| 3-bet size | 20 bb |
| 4-bet | all-in (100 bb) |
| SB limp | Disabled — no-limp rule |
| Rake | 5 % with 3 bb cap, applied to showdown pots only (fold-out pots are unraked; all-in-to-showdown pots are raked) |
| OOP postflop tax | 5 % × (rank_gap / 5) of total pot, transferred OOP → IP at heads-up showdown — empirically calibrated, see below |
| Card abstraction | 169 suit-isomorphic hand classes (AA, AKs, AKo, …, 22). No card abstraction at the leaf — showdown EV computed via Cactus-style 7-card evaluator over random 5-card runouts. |
Algorithm
External-Sampling MCCFR with DCFR (Discounted CFR) averaging — α=1.5, β=0, γ=2.0 — on the open-source DCFR-SOLVER (Rust, MIT) by exinori, patched with a vector best-response evaluator and empirical OOP-positional-tax calibration.
- External-Sampling MCCFR traversals for the regret updates.
- DCFR averaging weights — α=1.5, β=0, γ=2.0 — per Brown & Sandholm 2019b's empirical optimum for poker.
- Suit isomorphism (S₃ group on holes) shrinks the game tree by ≈24×.
- Showdown evaluation via Cactus-style 7-card hand evaluator over random 5-card runouts (Monte Carlo for vector BR multiway, 30-board fallback only on rare 3+ way terminals).
- Pre-computed HU equity table (169×169, 30,000 boards / pair, within 1.5 % of published values) handles HU showdowns exactly during vector BR.
Empirical OOP positional tax
The DCFR-SOLVER ships with a heuristic --oop-pot-tax 0.20
that bakes a 20 % "OOP loses 20 % of pot from positional disadvantage"
assumption into the showdown payoff. We measured this number empirically:
- 8 realistic flop boards (mixed dry / wet / paired / monotone / connector textures).
- Symmetric ≈30 % range OOP vs the same ≈30 % range IP.
- Heads-up postflop CFR at the flop street, 600 iterations, pot = 30 chips, effective stack = 170 chips.
- Empirical positional value = (IP_EV − OOP_EV) / (2 × pot).
Result: empirical tax ≈ 5.1 % pot (4.6 – 6.0 % across the 8 boards). The default heuristic over-estimates by ≈ 4×.
The blueprint here was trained with --oop-pot-tax 0.05.
Best-response evaluation (vector BR)
Standard Monte-Carlo NashConv estimators are biased high in 6-max preflop (≈ 20× in our spot checks) because the best-responder picks the argmax over noisy per-terminal estimates. We use vector BR with reach propagation instead:
- For each player p ∈ {UTG, HJ, CO, BTN, SB, BB}:
- σ̄ walk: traverse the full tree, propagating each player's reach (probability of arrival per hand class) under the average strategy.
- BR walk: same traversal, but player p picks the argmax action per hand class given the reach-weighted opponent ranges at each decision point.
- Per-player gap = BR_EV[p] − σ̄_EV[p], measured at the root in chips.
- Total cost: 7 walks (σ̄ + 6 BRs) × ~5 min = ~35 min per measurement.
Convergence history
| Iterations | Avg per-player gap |
|---|---|
| 1.5 B | 0.720 % |
| 1.9 B | 0.518 % |
| 2.3 B | 0.429 % |
| 2.7 B | 0.388 % |
| 3.1 B | 0.363 % |
| 3.5 B | 0.349 % |
| 3.9 B | 0.339 % |
| 4.7 B | 0.325 % |
| 5.5 B | 0.315 % |
| 6.3 B | 0.313 % |
| 7.1 B | 0.310 % |
| 7.5 B | 0.307 % |
Convergence follows O(1/√t) until ≈ 6 B iterations, then plateaus at the abstraction floor. Beyond this point the residual gap is dominated by action-tree discretization (no flat-call sizings between 7 bb and 20 bb) and the OOP-tax approximation, not by under-training.
Scope & honest caveats
- Preflop only. The blueprint is a CFR equilibrium of a simplified preflop game tree: open / 3-bet / 4-bet all-in / fold. There are no flat-call sizings between 7 bb and 20 bb, and no postflop play — postflop EV is approximated by the 5 % OOP-tax heuristic above.
- Fixed sizings only. Open = 7 bb, 3-bet = 20 bb, 4-bet = all-in. Any other size in the wild has to be translated by the user.
- Suit-isomorphic. 169 hand classes; perfect card-removal effects between specific suit configurations are not modeled.
- 5 % × 5 % rake, 3 bb cap, no-flop-no-drop. If your room's rake is materially different, the equilibrium drifts.
- Not a solver. Spots outside the enumerated tree are not on this site. We don't promise on-demand custom solving.
- 6-max 100 bb cash only. Heads-up, MTT ICM, short-stack and deep-stack play are out of scope.
Source & reproducibility
The solver core is exinori/DCFR-SOLVER (Rust, MIT license). We applied patches that add a vector best-response evaluator, a pre-computed HU equity table, the empirical OOP-tax calibration, and an HTML chart renderer. To reproduce the training:
./target/release/dcfr-solver preflop \
--open-size 14 --sb-open-size 14 \
--bet3-size 40 --bet4-size 200 \
--rake-pct 0.05 --rake-cap 6 --oop-pot-tax 0.05 \
--iterations <N> \
--load <prior_blueprint.bin> \
--output <next.bin> \
--chart-output chart.json \
--tree-output tree.json \
--seed <random>
Sizes are in chips (1 chip = 0.5 bb). 14 chips = 7 bb.
Update cadence
We re-train when meaningful improvements arrive (more iterations, better abstractions, additional sizings). Each release is published with its training stats, measured per-position gap, and an updated convergence history on this page. The Blueprint version field above is the source of truth.
If you spot a clear divergence from established GTO theory in any spot, please tell us via Contact. We'll add it to a regression test and re-publish.