Free GTO Poker Range

Methodology

Every range on this site comes from bcfr — a vector full-update CFR+ solve of a K=1000 card-abstracted, joint preflop + postflop 6-max NLHE game (100bb, 2 bb open). Card abstraction uses PAAEMD (potential-aware Earth Mover's Distance), so a hand is bucketed by how its strength will develop over future cards — not just its current average equity. Preflop opens are solved against an actual (abstracted) postflop game with multiple bet sizes, so they are postflop- and potential-aware. This page discloses how the solve was produced, what it covers, its in-abstraction convergence, and — clearly and up front — exactly what that number does and does not promise.

Release version: 4.6-bcfr-k1000-ochs169

Headline result

0.0018 % pot
Mean in-abstraction NashConv of the K=1000 PAAEMD joint game (across all six seats). Max 0.0026 % pot. All six seats are near-zero.
PositionIn-abstraction NashConv (% pot)
UTG 0.0025 %
HJ 0.0026 %
CO 0.0017 %
BTN 0.0015 %
SB 0.0010 %
BB 0.0015 %

Read this carefully. The number above is the in-abstraction Nash gap of the K=1000 PAAEMD-bucketed game (with its bucket-transition chance abstraction). It is not a true-game / un-abstracted exploitability guarantee — abstraction error remains, exactly as it does for any abstraction+CFR solver, including commercial ones. See Scope & honest caveats below.

Game configuration

StakesNL100 — 100bb starting stack, no-limit hold'em, 6-max, no straddle
Open size2 bb from every position including SB
3-bet size6 bb IP · 8 bb OOP
4-bet18–20 bb, then all-in
Postflop bet sizesBets 25 % / 75 % / 150 % pot; raises and re-raises 50 % pot; all-in always available; at most two raises per street.
SB limpDisabled — no-limp rule
Rake5 % with 3 bb cap, applied to showdown pots only (fold-out pots are unraked; all-in-to-showdown pots are raked)
ScopeJoint preflop + postflop. The preflop tree (open / 3-bet / 4-bet all-in / fold) is solved against an actual, abstracted postflop game across 90 heads-up postflop lines — not a raw all-in-equity terminal.
Abstraction169 suit-isomorphic hand classes preflop; K = 1000 OCHS-grounded potential-aware buckets per postflop street — each hand scored by its equity vs 169 opponent clusters (every preflop class its own cluster = maximum class-level opponent resolution), with Ganzfried-Sandholm potential-aware street-to-street transitions and a bucket-transition 'T-tensor' chance abstraction.

Algorithm

bcfr — a vector full-update CFR+ over a K=1000 OCHS-169-abstracted, joint preflop+postflop 6-max NLHE game (100bb stacks). Every infoset is updated on every sweep (no Monte-Carlo sampling of branches), and CFR+ regret-matching⁺ is used for both the regret update and the average-strategy accumulation.

Potential-aware card abstraction (PAAEMD)

Grouping 1,300+ canonical flops (and far more turns/rivers) into a few hundred buckets per street is unavoidable on a single workstation. The question is how you group them. A naïve abstraction buckets hands by their current average equity (strength only) — which collapses a made-but- capped hand and an equal-equity drawing hand into the same bucket, even though they play completely differently. That under-values speculative hands (suited connectors, low suited gappers) and is exactly why a strength- only solve barely opens them.

This release uses PAAEMD — potential-aware Earth Mover's Distance clustering (Ganzfried & Sandholm, 2014). Instead of a single strength number, each hand is described by the distribution of how it transitions into next-street buckets, and hands are clustered by the Earth Mover's Distance between those transition distributions. It is built bottom-up:

The practical effect: two hands with the same average equity but different future potential now land in different buckets, so draws are valued on what they can become — and the opening/defending frequencies for speculative hands are more realistic than under a strength-only abstraction.

Game size & convergence

Preflop infosets3,939
Postflop infosets226,138 across 90 heads-up postflop lines
Card bucketsK = 1000 / 1000 / 1000 OCHS-169 potential-aware buckets per street (flop / turn / river)
ConvergenceMean in-abstraction NashConv 0.0018 % pot (max 0.0026 %)

The joint game's mean in-abstraction NashConv reaches 0.0018 % pot (max 0.0026 %), where it plateaus at the abstraction floor. The full-update CFR+ iteration converges at the usual O(1/T) rate until it reaches this floor, after which the residual gap is dominated by the K=1000 bucketing and the fixed action sizings, not by under-training — running it further does not lower it.

What changed in this release

The previous release bucketed postflop hands by strength only (average equity) and offered a coarser postflop bet tree. This release makes two upgrades: (1) PAAEMD potential-aware card abstraction, so drawing hands are no longer collapsed with same-equity made hands, and (2) a richer postflop action tree (25 % / 75 % / 150 % pot bets, 50 % raises, all-in allowed) so each preflop open is valued against more realistic postflop play.

Because the abstraction and the action tree both changed, this is a different (richer) abstracted game, not the same game solved harder — so it is not a like-for-like "N times better" claim. The practical effect users see is that speculative hands (especially suited connectors) are valued more accurately, because each open is now judged on potential-aware postflop play rather than raw all-in equity.

Scope & honest caveats

Update cadence

We re-train when meaningful improvements arrive (richer abstractions, additional sizings, deeper postflop). Each release is published with its solver, game size, measured in-abstraction NashConv per position, and the honest caveat on this page. The release version (4.6-bcfr-k1000-ochs169) 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.