← Sims library

How our solves are tested

What we compared against MonkerSolver, what the tests proved, and exactly where — and why — our ranges differ.

The claim: our tournament packs are solved card-exact — all 1,326 hole-card combinations played against full boards with no card abstraction. MonkerSolver, the engine behind essentially every commercial preflop pack, groups hands into buckets to fit games into memory and plays the bucket, not the hand — at every stack depth.

1 · Match their game, exactly

We solved the same game a commercial MonkerSolver pack was solved on — every action and bet size at every depth, 20,223 distinct action paths at 100bb — so our ranges and theirs are compared like for like. An automated check confirms our tree matches the reference pack's exactly: zero mismatched paths and zero size deviations.

2 · Match their abstraction, match their answers

We solved that identical game with equity-distribution bucketing at MonkerSolver-class resolution (1,024 buckets per street) and required every non-blind position to land within ±3 points of the reference pack. At 20bb, 6-max, under the reference's own rake structure:

PositionMonker opensOurs, matchedDifference
UTG18.4%17.4%−1.0pass
HJ21.3%19.9%−1.4pass
CO25.2%22.3%−2.9pass
BTN32.0%30.1%−2.0pass

Configured to think the way MonkerSolver thinks, our engine reproduces MonkerSolver's answers — validating tree handling, equity evaluation, multiway and side-pot logic, and convergence end to end. Terminal payouts are separately verified against brute-force enumeration; heads-up convergence matches published benchmarks.

3 · Where our ranges differ, and what we don't yet claim

Solved card-exact on the same tree, our ranges come out 2–4 points tighter than the reference, concentrated in offsuit broadway hands (AJo, KJo, A9o) that Monker-derived packs open from early position and exact play folds. Turning bucketing on in our own solver brings those hands back, which shows the difference tracks card abstraction rather than a bug.

AJo, opened from UTG at 20bb
Card-exact (what we ship)
6%
Same solver, bucketed
44%
MonkerSolver reference
100%

We do not claim this makes our ranges more profitable. The reference solver publishes its own EV for these hands, and by that accounting the marginal hands where we differ are priced at or near break-even — so opening them is not obviously an error. An EV-weighted comparison against those published values does not favour us. We investigated why: it is not solve convergence (the gap barely moves from 250 to 1,000 iterations) and it is not postflop tree depth (widening the postflop betting menu barely moves it either). It comes down to a genuine disagreement between an exact solver and a bucketed one on a handful of indifferent hands — and it cannot be settled without an unbiased full-game EV that neither solver can currently produce (theirs is bucketed; ours carries a known multiway approximation). So we make a correctness and transparency claim, not a profit claim. What is established is above: an identical game tree, and a matched-abstraction gate our solver passes at every non-blind position.

Honest disclosure: the small blind

SB first-in is the one spot we don't claim to match anyone, in either mode. Limping, min-raising and folding are nearly EV-equivalent for wide bands of hands there, and published solutions from every vendor disagree by 10+ points. Treat SB first-in charts — ours and everyone's — as one defensible equilibrium among several.

How the tournament packs are produced

9-max, big-blind ante, 10–100bb, bet sizings published per pack. Solved card-exact by GPU vector CFR — 128 full boards per iteration, 500+ regret-matching⁺ iterations, sharded across four data-center GPUs per solve. No rake (tournament chip EV), antes modeled as invested chips. Every pack is reproducible from a committed configuration, using the same code that produced the tables above.

The differences at a glance

Monker-derived packspokerdata.io house packs
Card abstractionAlways — bucketed CFRNone — every combo exact
HardwareCPU · days–weeks per solveGPU · hours per solve
Game treeVendor-chosen, undocumentedPublished per pack, machine-checked
ValidationClosedPublished gates vs the market reference
Preflop rangesBucketed; opens more offsuit broadwaysCard-exact; 2–4 points tighter