
[Start HTML content here]
Why creating custom ranges with solvers will improve your poker decisions
When you use a solver to create custom ranges, you move from guesswork to principled decision-making. Instead of memorizing rigid charts, you adapt ranges to specific stack sizes, bet sizes, and opponent types. You’ll learn to spot exploitative adjustments while retaining game-theory-grounded defaults. As you work through solver outputs, you’ll also internalize frequency-based thinking—how often to bluff, to c-bet, or to fold—so your in-game choices become more consistent and profitable.
Think of a solver range as a living model. It answers the question: given this exact game state, what distribution of hands should a player hold or play with? By creating custom ranges, you can:
- Match ranges to realistic opponent tendencies and non-standard bet sizing.
- Test how small changes in stack depth or position alter optimal play.
- Produce practice materials (equity drills, hand quizzes) tailored to your leaks.
Preparing your solver environment: essential tools and the inputs that matter
Before you build any custom range, make sure you have the right software and a clear specification of the situation you want to analyze. Solvers vary in complexity—from free, lightweight tools to advanced commercial programs—so choose one that fits your learning goals and budget.
Tools you should consider
- Solver software: Pick a solver that supports range editing and tree-building (examples include PioSolver, GTO+, Simple Postflop, or free alternatives). Confirm it allows exporting ranges in a format you can reuse.
- Hand history / tracker: Use a tracker to capture real-game spots you want to analyze, so your custom ranges reflect real tendencies rather than hypothetical extremes.
- Spreadsheet or range editor: For planning and documenting ranges. Export outputs here for clear side-by-side comparisons.
Critical inputs that define your custom range
Every solver result depends on the inputs you provide. Small differences here produce big range changes, so be precise and intentional:
- Stack sizes and effective stacks: Input exact sizes; 100bb play is meaningfully different from 60bb or 30bb.
- Positions and actions to date: Who opened, called, or 3-bet, and from which seats. This shapes both preflop frequencies and postflop trees.
- Bet sizing options: Define common sizes for opens, raises, and continuation bets. Solvers use those to compute mixed strategies.
- Range seed or baseline: Start from a default range or a hand history-derived range to avoid unrealistic full-spectrum mixes.
- Node constraints and preferences: If you want to force a behavior (e.g., never fold certain hands), specify constraints—but use them sparingly to preserve solver utility.
With tools installed and inputs defined, you’re ready to construct the actual solver tree and begin assigning ranges. In the next part, you’ll walk step-by-step through building a simple preflop-to-flop tree, assigning ranges, running the solve, and interpreting the first outputs.
Building the solver tree and assigning realistic ranges
Start by translating the hand you want to study into a tree the solver can handle. Keep the first tree simple—preflop into a single flop betting round—then add complexity as you learn. A basic workflow:
- Define nodes and actors: Who acts preflop (open, call, 3-bet) and postflop (CB, check, raise, fold). Give each decision point a clear set of legal actions.
- Set bet sizes: Add the specific sizing options you see in-game (e.g., 2.5bb open, 3x 3-bet, flop c-bet 1/3 and 2/3 pot). Solvers mix between the sizes you provide—don’t use an unrealistic menu.
- Choose the flop textures: Create separate branches for representative boards (dry A-high, monotone, two-tone dynamic). Each board will produce different line mixes.
- Specify stack depth and ranges: Apply the exact effective stacks and seed each player with a baseline preflop range—either a default solver profile or a range derived from your hand histories. If you’re modeling a specific opponent, tilt the baseline toward their tendencies (e.g., tighter opens, looser calls).
When assigning ranges, be pragmatic. Avoid full-spectrum randomization: start with plausible weightings (e.g., 3-bet combos concentrated in strong broadways and pocket pairs, limper callers concentrated in suited connectors and small pairs). Use the solver’s range editor to: (1) lock certain combos if needed for realism, (2) set frequency bounds if you want to observe constrained strategies, and (3) annotate hands you expect to behave unusually so you can later validate solver output against your read of the opponent.
Running the solve and interpreting the first outputs
With the tree and ranges in place, run a baseline solve. For initial exploration keep iteration counts moderate to get results quickly; later re-run with higher precision to confirm findings. Key things to inspect once the solver finishes:
- Node EVs and action frequencies: Check which actions (bet/check/raise) have material frequency at key nodes. If a line shows 90% fold and 10% raise, you’ve likely found a polarized line—investigate which combos constitute the raise frequency.
- Range distributions: Use the heatmap or hand matrix to see where value, bluff, and blocking combos live. Solvers will often assign small suited connectors to bluff-raise lines on dynamic boards—note whether that aligns with your opponent model.
- Sample hand lines: Pick a handful of representative hands (top pair, middle pair, flush draws, two-gappers) and trace their strategy through the tree. This clarifies how the solver balances protection, extraction, and bluffing.
- Equity realization and showdown frequency: High equity hands that still fold often signal protection-focused strategies or block-heavy bluff-catcher problems you might exploit.
Don’t over-interpret a single solve run. Solvers can produce counterintuitive mixes that are correct in aggregate but surprising in isolation. Use the output to form hypotheses—why is X check-folding? Why is Y bluffing at Z frequency?—and flag those for further testing.
Iterating, validating, and common pitfalls to avoid
After the first pass, iterate. Change one input at a time—swap a bet size, widen/narrow a calling range, or alter stack depth—and observe how frequencies shift. This sensitivity testing reveals which assumptions drive major strategic changes and which are noise.
- Validate against real hands: Compare solver suggestions to your tracked hands. If the solver repeatedly recommends lines your opponents never allow, adjust the baseline ranges to better reflect reality.
- Avoid over-constraining: Forcing too many locked combos removes the solver’s ability to find balanced solutions and usually produces misleading results.
- Watch for convergence issues: Low iteration counts can create oscillating mixes. If results seem unstable, increase iterations or run multiple solves and compare averages.
- Document changes: Keep a simple changelog (what input changed, why, and the observed effect). This makes later comparisons and learning far more efficient.
With this cycle—build, solve, interpret, iterate—you’ll develop a small library of validated custom ranges tailored to the spots you care about. In the next part, we’ll look at deeper postflop expansion, turn/river branching, and turning solver ranges into practical training drills.
Expanding postflop branches and turning ranges into drills
Once you’re comfortable with single-flop solves, expand selectively. Add turn nodes only for the most critical flop textures and keep river branching limited to lines that materially change EV or frequencies. Use bucketing (grouping similar streets or cards) to manage tree size: collapse several similar turn cards into one representative branch, then test sensitivity by splitting that bucket later if results change meaningfully.
-
Prioritize the spots that occur most often or where you lose the most money—don’t model every rare river card.
-
Convert solver ranges into training drills by exporting hand lists and making drill sets (e.g., “callers vs 3-betters on A72 rainbow,” “CBets on dry A-high boards”). Practice by running through hands and forcing yourself to pick solver-favored actions, then compare actual outcomes in real sessions.
-
Use filters to test single-issue adjustments quickly: widen a caller’s range by +2% or change c-bet sizing to 40% and run a focused re-solve to observe direct effects.
Putting solver work into practice
Make solver study routine and tightly scoped: pick one spot, build a compact tree, seed realistic ranges, run a solve, and then turn the output into 10–20 practice hands you review or play against a reg-created exploitative range. Track how often your chosen adjustments improve real results, and iterate. If you’re new to solver work, resources like PioSOLVER offer tutorials and community examples that can speed up the learning curve.
Finally, keep the human element central—use solvers to sharpen fundamental decisions, not to rigidly dictate play in live sessions. Over time, the interplay between solver-backed theory and table reads is what produces consistent improvement.
Frequently Asked Questions
How many iterations should I run for a reliable solve?
Start with low iterations for exploration (a few hundred to a few thousand) to get results quickly. For final validation, increase iterations until frequencies and node EVs stabilize—this often means tens to hundreds of thousands depending on tree size. If results oscillate, run multiple solves and compare averages.
When is it appropriate to lock combos or constrain ranges?
Lock or constrain only when you have strong, evidence-backed reasons: observed opponent tendencies, enforced tournament ICM effects, or a deliberate thought-experiment. Over-constraining removes balance and can produce misleading strategies; change one constraint at a time and validate its impact.
Can I trust solver bluffs and mixed strategies against human opponents?
Solvers produce equilibrium strategies that are often optimal in the abstract. Against humans, many solver bluffs are effective, but you should adapt: if opponents fold too much, increase bluff frequency in practice; if they call down too light, favor value lines. Use solvers as a guide, then adjust based on exploitative reads.
