Hard means hard now: the new hand difficulty selector

Hard means hard now: the new hand difficulty selector

A customer wrote to me last week: “Practice keeps dealing me easy hands. I want the hard ones.”

He was right.

So we built a selector. Preflop only: the two cards and the decision they put you in. Flop, turn and river are graded as before.

Here is the arithmetic, because a button called “Hard” is not magic.

Why the trainer dealt easy hands

Practice takes hands from two places: a library of pre-solved spots and a live solver.

The difficulty preset only ever reached the live solver. On the pre-solved path it did nothing: Beginner and Advanced got the same cards. Embarrassing, but true.

Live was correct, on paper. Its Intermediate band, 30% to 98% on the top action, was nearly every hand in every matrix.

The idea: do not filter, weight

A preflop spot is one node with 169 hand classes.

Some the solver plays one way: AA raises, 72o folds. Some it mixes, 70% call and 30% raise. Those are the close decisions.

A hard filter, “only mixed hands”, empties the pool on most spots. You see the same three hands over and over.

So every hand gets a weight, and the dealer draws in proportion.

One number per hand decides its weight: how often the solver plays its second choice. Dashed: my first attempt.

The maths

Two numbers per hand: m, how often the solver plays its top choice, and s, its second choice.

s is also what the verdict reads. Pick the second choice and you are graded on how often the solver plays it: 40% or more is Perfect, 6% to 40% is Good, below 6% a Mistake, 0% a Blunder.

A hand is in the pool if no action is played at 98% or more, plus the edge hands of a range. One weight per level:

wB(i)=1w_{\mathrm B}(i)=1
wE(i)=0.02+m4w_{\mathrm E}(i)=0.02+m^4
wH(i)=max ⁣(0.05+max(0,(s0.05)(0.60s))0.2752,  0.4[i on a boundary])w_{\mathrm H}(i)=\max\!\Big(0.05+\frac{\max\big(0,\,(s-0.05)(0.60-s)\big)}{0.275^{2}},\ \ 0.4\cdot[\,i\ \text{on a boundary}\,]\Big)

Balanced: every hand weighs the same, the old draw. Easy: certainty wins, a 97/3 hand weighs 0.90, a 50/50 hand 0.08. Hard: a bump that peaks at s = 32.5%, the middle of the Good band, where you feel the pull of the wrong side, take it and get Good. A 70/30 hand weighs 1.04, a 50/50 hand 0.65, a 97/3 hand 0.05.

Two extras on Hard. A one-way hand on the edge of a range, K9o where K9s opens, weighs at least 0.4: that is where people blunder. And every hand keeps a floor, so none is unreachable.

Why frequency and not EV? Every action the solver mixes has the same EV, so on a close hand only the frequency tells a good decision from a bad one.

What it looks like on a real spot

Cash NL50, six-max, 100 bb, big blind facing a button open.

Big blind vs button open on NL50. Left: the solver’s strategy. Right: tile opacity is the deal weight per level. Bare tiles are never dealt on Balanced or Hard.

On Balanced, 46% of deals are close calls with one clear answer and 5% are coin flips.

On Hard, 71% and 9%, and 20% are hands the solver plays one way, nearly all on a range boundary.

Play this spot instead of reading about it

The trainer deals the situations this article describes and grades every decision. Three-day trial.

Start Free Trial

On Easy, 26% are close calls and seven deals in ten are one-way hands.

Hard cannot invent difficulty

Five real spots. Solid: one Perfect answer and one Good one. Hatched: coin flips. The last spot is push/fold and every level deals it the same way.

A 20 bb button facing a shove has no close hands. Every decision there is call or fold at 100%, so Hard deals it like Balanced.

And Hard keeps dealing folds. On the cutoff-vs-3-bet spot, 29% of Hard deals are hands the solver mostly folds, like A4s: fold 49%, raise 36%, call 15%. A fold with a Good alternative is a decision.

Mostly hands you can play

Before shipping I ran the dealer over 17,020 named spots of 19 simulations: MTT chipEV from 10 to 100 bb and five cash games.

On the median spot, hands the solver mostly folds were 50% to 77% of Balanced deals in MTT and 61% to 69% in cash.

That is not what a trainer is for.

Share of deals on hands the solver mostly folds, median spot per simulation, before and after the cap. Bars: Balanced. Dots: Hard.

You should mostly get cards you can take to a flop. The folds should be there because a range has an edge, not because folds are most of the matrix.

So the fold-leaning hands, fold above 50%, are capped at one third of a spot’s deal mass. Under the cap nothing changes. A spot with nothing but folds keeps them.

σ=min ⁣(1, c1cjFw(j)jFw(j)),c=13,w(i)=σw(i)  for iF\sigma=\min\!\Big(1,\ \frac{c}{1-c}\cdot\frac{\sum_{j\notin\mathcal F}w(j)}{\sum_{j\in\mathcal F}w(j)}\Big),\qquad c=\tfrac13,\qquad w'(i)=\sigma\,w(i)\ \text{ for } i\in\mathcal F

A second leak: on a spot you reach through your own earlier action, a hand you 3-bet 2% of the time was as likely a deal as one you always 3-bet. Rows under 5% reach are out now.

afa<0.05  iP\textstyle\sum_a f_a<0.05\ \Longrightarrow\ i\notin\mathcal P

After both, two deals in three on Easy and Balanced are hands the solver mostly plays on. Pure folds are 19% to 33% of the deals.

Is Balanced softer than the old trainer now? No. The cap only takes folds out. Close decisions went from 9% to 13% at 25 to 50 bb, from 21% to 24% at 60 to 100 bb and from 33% to 34% in cash. Pure folds went from 67% to 30%, from 48% to 25% and from 37% to 20%.

What a session actually dealt

Numbers on a corpus are one thing. So I played three sessions the way you would: MTT chipEV, 25 to 60 bb, opens, defences and 3-bet spots, preflop only. 260 hands on Easy, 160 on Balanced, 90 on Hard.

The first run found a bug no corpus could. Defences against an open came up in 1% of the deals.

The server drew the right mix, 19 opens, 8 3-bet spots and 13 defences on a 40-hand answer. Then it sent them sorted by category, defences last. The client keeps the first half of what it asks for. It never got there.

Fixed: the answer is shuffled on the server. On the rerun, defences were 50% to 54% of the deals on all three levels, against a weight of 46%.

Three sessions, one level each. Left: how often a defence against an open was dealt, before and after the fix. Right: what kind of hand each level dealt after it.

With them back: a close decision was 22% of Easy deals, 39% of Balanced and 56% of Hard. Coin flips 2%, 9% and 21%. Pure folds 25%, 18% and 11%. A wrong answer would have been a Blunder on 67% of Easy deals, 48% of Balanced and 21% of Hard. The app’s verdict matched the bands on 510 hands of 510.

Where to find it

The new row in the Practice cockpit.

Practice, in the “How it plays” card. Beginner seeds Easy, Intermediate seeds Balanced, Advanced seeds Hard. Change the row by hand and you are on Custom.

What it is not

  • It is preflop only. Postflop is dealt and graded the same way on every level.
  • It is not a “top 10% of hands” filter. That would be a claim about equity.
  • It does not use what we know about you yet. Your preflop mistakes are recorded and sorted between sessions, and the review queue is built from them. The dealer does not read that yet, so the same preflop hand can come back tomorrow. Soon it will: your mistakes and the leak finder will point the dealer at the spots where your frequencies are off.

If you were the customer who wrote in: thank you. Set it to Hard and tell me if it bites.

Cheers! 🙂

Poker Academy

Stop guessing preflop.

1,500,000+ GTO solutions. Free 3-day trial.

Start Free TrialCancel anytime.