A Toy Game Experiment on River Range Composition That I Can't Explain

A Toy Game Experiment on River Range Composition That I Can't Explain

I've been running a series of toy game experiments, and I've come across a result that seems to contradict my intuition about MDF and river equilibrium. I'm hoping someone with a stronger game theory background can explain what's happening.

Toy game setup

**Board:** 2 2 2 2 3x (effectively 22223)

**Pot:** 100

**Effective stack:** 250

**Street:** River

Both the flop and turn have already gone check-check.

Ranges

Both players start with exactly the same range: 11 pocket pairs from 44-AA

Bet sizes

- B10
- B33
- B75
- B100
- B150
- B250 (Jam)

The experiments below only concern the line where OOP checks, IP bets, and OOP responds.

---

Original equilibrium

OOP's checking range

Total checking range:

- **37.2 weighted combos**

Composition:

- QQ+: **6.265 combos**
- 44-99: **30.96 combos**

Observations:

- Strong hands account for only about 20% of OOP's checking range.
- Before checking, OOP has 50% equity.
- After checking, his range equity drops to roughly 39%.

---

IP's response to the check

IP checks roughly half of his range and only uses two betting sizes: B75 & B150

Range construction:

Checking: 66-JJ
Betting: QQ+

More specifically:

- QQ: pure B75
- KK: mixes between B75 (preferred) and B150
- AA: mixes between B75 and B150

Bluffs:

44-55 are used as bluffs and balanced appropriately.

---

OOP's response versus B75

QQ+: continue naturally

44-55: pure fold

66-99: These four bluff catchers **all mix between calling and folding at roughly 50% each**.

So the defense is **distributed across the entire bluff-catching region**, not concentrated at the top.

---

Experiment 1

I wanted to test whether this mixing actually matters.

So I node-locked OOP.

Instead of mixing every pair: 66-99 at about 50% each, I forced him to play a "top-up" strategy:
- 66: fold 100%
- 77: fold 100%
- 88: call ~100%
- 99: call 100%

Everything else stayed identical:
- QQ+ strategy unchanged
- overall defense frequency unchanged

The weighted calling combos are identical.

---

Result

IP completely changes strategy.

Originally:

- checks about 50%
- uses B75
- uses B150

After the node lock:

- checks about 34%
- uses B75
- jams
- B150 disappears

Value construction changes dramatically.

Originally:

- TT-JJ checked
- QQ+ value bet

Now:

- TT-KK all become pure B75 value bets
- AA jams

OOP loses roughly **4 bb** in EV.

This already surprised me because the overall defense frequency stayed the same.

---

Experiment 2

I then wanted to understand the follow-up node.

So I locked IP to this new betting strategy.

Against B75, OOP's equilibrium response was:

Value:

- KK-AA shove

Bluffs:

55-99

Each bluff hand mixes around 8%.

Against the shove, IP:

- calls roughly 37%
- folds roughly 63%

Specifically:

- KK pure calls
- TT-JJ mix
- 44 pure folds

---

Experiment 3

Now I repeated the same type of node lock.

Instead of bluff-shoving with all five pairs 55-99, I forced OOP to bluff only with the top of that bluff region.

First:

99 only

Later:

88 and 99 only

Importantly:

**The total weighted bluffing combos remained exactly identical.**

Original shove range:

55 = 0.39

66 = 0.39

77 = 0.44

88 = 0.44

99 = 0.44

Total bluffs = **2.10 combos**

Node-locked:

99 = **2.10 combos**

Total bluffs = **2.10 combos**

Value region stayed identical:

KK = 2.17

AA = 2.934

So the shove ranges become:

Original

Bluffs:

55

66

77

88

99

Value:

KK

AA

versus

Node-locked

Bluffs:

99

Value:

KK

AA

The weighted combos are exactly the same.

Only the **raw composition** changes.

---

Result

IP now folds around 80% and only calls KK.

TT and JJ become pure folds.

Repeating the experiment with bluffs spread across only 88 and 99 produces essentially the same defense strategy.

---

EVs

IP EV before facing the shove:

Original: 67.6638

99-only: 67.6663

88+99: 67.6662

---

After facing the shove:

Original: 14.6079

99-only: 14.4954

88+99: 14.5955

---

Why I'm confused

My understanding of river theory is:

If

- value combos stay identical,
- bluff combos stay identical,
- sizing stays identical,

then the optimal defense frequency should depend only on the bluff:value ratio.

The shove ranges are:

Original

Bluffs = 2.10 combos

Value = 5.104 combos

Node-locked

Bluffs = 2.10 combos

Value = 5.104 combos

The only difference is that the bluffs are concentrated into one (or two) hand classes instead of being spread across five.

Yet IP suddenly overfolds and TT/JJ disappear from the calling range.

I don't understand why the **raw composition alone** would matter if the weighted ranges are mathematically identical.

---

My questions

1. Is there a game-theoretic reason why concentrating the bluff support changes the equilibrium despite identical weighted bluff/value ratios?
2. Is this related to equilibrium support and indifference conditions rather than MDF?
3. Does raw combo distribution carry strategic information that weighted combos do not?
4. Or is this simply a solver artifact (tie-breaking, node-lock implementation, numerical tolerance, etc.)?

I'd really appreciate any explanation. At this point I'm less interested in the specific toy game and more interested in understanding the underlying game-theoretic principle, if there is one.

30 June 2026 at 04:32 PM
Reply...

5 Replies



OOP's spread-out raising strategy & IP's response



[image]QoUZxzA.png[/im


..]

OOP's 99 concentrated & IP's response



[image]j7XIVry.png[/im


..]


Nice to see some solver experiments in here!

In experiment 1, you inadvertently introduced small changes into OOP's strategy facing B75. Perhaps turning some of their 66-99 bluff raises into calls, incentivizing IP to bet more thin value. The 4bb EV drop you see is just a byproduct of measuring at the wrong node. You're measuring facing the bet, rather than EV at the root node.

Experiment 2 and 3 are likely similar types of user error.

Thanks for taking the time to look at the toy game and for pointing that out. I completely missed the fact that I may have unintentionally changed OOP's response to B75 while making the node lock. Looking back, measuring EV facing the bet instead of at the root node also seems like a very plausible explanation for what I was seeing.

Since I'm still fairly new to solver work and toy games, do you have any general advice on designing experiments or avoiding common mistakes when drawing conclusions from node locks? Are there any particular types of experiments that you think are especially valuable for developing a deeper understanding of poker strategy?

More specifically, if you could go back to when you first started working seriously with solvers, are there any experiments or concepts that produced outsized improvements in your understanding of the game? I'm trying to focus on the highest-leverage areas rather than just running random simulations, so I'd be very interested to hear your perspective.

Thanks again for the feedback.


Some useful advice for working with nodelocks:

Compare EV of some hand's actions before and after nodelocking. What parts of the range gain and lose?

Paying attention to what doesn't change after nodelocking is arguably more important than what does change. The invariants are important.

Similarly, if you notice that something doesn't seem to matter (e.g. every flop sizing you tests gives about the same overall EV), that is very important info. Most people dismiss the stuff that doesn't change, but imo, that's where the most profound insights are found.

Beware of fragile nodelocks. In this toy game you locked OOPs entire strategy (check-call), which means they have no way to push back, so IP maximally exploited microscopic imperfections in the opposing strategy.

Beware of stacked assumptions. If your exploit relies on a chain of 5 assumptions A -> B -> C -> D -> E, and any one of those assumptions makes your exploit bad, then it's probably not sound.

Feel free to experiment without modelling reality. You can start with gto ranges then just see what happens if OOP for somme reason doesn't have any middle pair. How does that change IP's strategy? The point is to understand cause->effect, not memorize.

Multistreet nodelocks are a pain because every community card leads to a different set of nodes. Instead, try using "incentives". These are very powerful because you can apply them across every turn and river card at once. GTOplus has an article about that here: https://www.gtoplus.com/special-menu/

When designing toy games, find the minimum representation needed. The point is to model something small enough that you can solve it with pen and paper.

The biggest conceptual upgrade for me was probably understanding this: https://blog.gtowizard.com/the-three-laws-of-indifference/

Thank you again for such a thoughtful reply. This is exactly the kind of advice I was hoping for.

I've actually watched all 12 of your GTO Wizard theory videos, and despite that, it still takes me a long time to figure things out on my own. Reading comments like this makes me realize how much practical experience goes into asking the right questions and designing good experiments, not just knowing how to operate the solver.

If you ever have the time, I think a video on this topic—how to design meaningful solver experiments, common pitfalls with node locks, and which experiments give the biggest conceptual breakthroughs—would help a lot of people. There are plenty of videos explaining *what* the solver does, but far fewer that teach people *how to learn* from a solver effectively.

Thanks again for taking the time to share your experience.

Reply...