Compare two lines

NexusGTO is a six-player no-limit hold'em AI. Its blueprint, a strategy trained offline, decides how it plays before the flop. Pick two preflop lines to see the blueprint's strategy for both, side by side, as the explorer shows it. Hands whose most frequent kind of action differs between the two lines stand out, and the rest fade. The kinds are fold, check, call, raise and all-in, so a hand that only switches raise sizes doesn't stand out. The view opens with the first-in strategies for under the gun and the button. Under the gun, the blueprint limps with 9.7% of its combos and with aces about 36% of the time. Why it limps is an open question.

Workspace

6-max · no rake

Follow a different line on each side to compare them.

Line A

Loading the preflop strategy…

Line B

Loading the preflop strategy…
Fig. 1. Two preflop lines from the blueprint, side by side, with the hands that differ picked out. Six players, 100 big blinds, no rake, 8.05 billion training iterations.

About this data

The frequencies come from NexusGTO's blueprint, a strategy for a simplified six-player game at 100 big blinds with no rake. The blueprint was trained with Monte Carlo counterfactual regret minimization. With more than two players that method has no equilibrium guarantee, so nothing proves the blueprint is optimal.

Show the game rules, the file format and the download

The blinds are 0.5 and 1 big blind. Before the flop the simplified game allows at most three raises (an all-in counts as one), all at fixed sizes. After the third raise, a 4-bet, the only choices left are call and fold. When it folds to them, UTG, MP, CO and the button can raise to 2.8 or 3.5 big blinds, and the small blind to 2.4 or 3.0. A limp shows as "call". The file holds every line up to eight actions deep.

The file stores frequencies in steps of 1/255. Range totals weight each of the 169 hands by its combos (6 for a pair, 4 for a suited hand, 12 for an offsuit hand). On screen the explorer hides any fold, check or call below 7% and rescales the rest. The filter is meant for rarely reached spots, where passive shares that small are leftovers of training, but it runs in every spot. Raises always stay, so a hand that splits its raises between two sizes shows both. The file itself holds the unfiltered frequencies. It has no expected values, so the drills grade each answer by how much less often the blueprint takes it than its most frequent action.

Cells within one step of an even split (4.4% of all cells) or with no data at all are spots that training rarely or never reached. The matrix marks them as untrained and counts them as folds.

The file covers preflop only. After the flop the engine plays from the full 12.2 GB blueprint and searches when two or three players are left. How the search works.

File format. Each entry in nodes has three fields. Field p is the seat to act (meta.player_to_pos maps 0 to SB and 2 to UTG). Field l is the list of action labels. Field s is base64-encoded uint8 data, one row per hand in the order of meta.hand_order and one byte per action. Rows sum to about 255, and an all-zero row means no data. The root's key is meta.root_hash. A child's key is mix(h XOR mix(17i + 3)), where h is its parent's key, i is the action's index in the parent's l, and mix is the splitmix64 finalizer. Keys are written as 0x plus 16 uppercase hex digits. The explorer loads the same nodes in shards: core.json for the first four actions, then one file for each betting line that goes deeper.

License: CC BY 4.0 . If you reuse the file, credit it as "NexusGTO by Victor Zhang".

Source blueprint
8,050,000,000 iterations, 995,098,351 information sets (all streets)
This file
16,306 decision points
SHA-256
c06adde73b102f437e9d6212c81141231509afc938584ad8bc1fd3b57d60ba17

Download nodes.json (10.3 MB file)