// ~/playground/holdem

Hold'em Retriever

The math behind every call

Limit Hold'em against a table of bots you can tune, with a coach that does the math out loud: pot odds, equity against each player's likely hands, and what folding, calling and raising are worth, on every decision.

How the coach does the math

Pot odds. If the pot is $24 and a call costs $8, you put in 8 to win 24 + 8 = 32, so the call breaks even when you win 8 / 32 = 25% of the time. That 25% is the equity you need.

Equity. Your share of the pot at showdown, averaged over thousands of random run-outs. Each opponent's cards are drawn from an estimated range: every hand they could hold, weighted by how likely that player was to act the way they did with it. The weights come from the player's own profile, so against these bots the read is as good as a read gets. Against random hands is shown alongside for contrast.

Expected value. Folding is worth $0 from here: the chips already in the pot aren't yours. Calling is worth equity x (pot + call) - call. Betting or raising adds fold equity: each opponent folds with the probability their profile gives for the hand they hold, and when someone calls you win your share of a bigger pot.

The model's limits. The EVs count this street's money and assume the hand checks down from there: no later bets, no re-raises. That's the textbook pot-odds frame. It undervalues draws, which collect extra bets when they hit (implied odds), so calls with real draws get some slack in the grading. Preflop it counts only part of your equity (66% first to act after the flop, up to 92% on the button), because most of the money goes in later and position decides who collects it.

Preflop: the chart decides. A one-street model is at its weakest before the flop, where most of the money is still to come, and left to itself it plays about a third of all hands. That's too loose for a real Limit table. So preflop the recommendation, and the grade, come from a standard full-ring starting-hand chart; the EVs stay on screen as the explanation. When the two disagree the coach says so and says why: an offsuit hand that is often dominated, a small pair that needs a crowd, a big blind getting a good price. Preflop grades measure how many hand groups you were off the chart's line; the dollar cost shown is still the one-street model's, so it can be zero when the model liked your deviation.

Where the chart comes from. The hand groups are Sklansky and Malmuth's eight starting-hand groups from Hold'em Poker for Advanced Players. The position and action rules are this trainer's simplification of that book's guidance in the style of modern Limit charts (Miller, Sklansky and Malmuth, Small Stakes Hold'em; Lee Jones, Winning Low Limit Hold'em): raise or fold when you're first in, raise or fold against a raise unless the price or the crowd makes a call right, defend the big blind wide against a lone late raiser. The exact cut-offs are an adaptation, not a quotation. Followed at the default 10-handed table it plays about 19% of hands and raises about 10%.

The chart

Positions count back from the button: the button, the cutoff (one seat right of it), middle (two to four off), early (five or more off; at 10 handed that's the three seats after the big blind), then the blinds.

GroupHands
1AA KK QQ JJ AKs
2TT AQs AJs KQs AKo
399 JTs QJs KJs ATs AQo
4T9s KQo 88 QTs 98s J9s AJo KTs
577 87s Q9s T8s KJo QJo JTo 76s 97s A9s-A2s 65s
666 ATo 55 86s KTo QTo 54s K9s J8s 75s
744 J9o 64s T9o 53s 33 98o 43s 22 K8s-K2s T7s Q8s
887o A9o Q9o 76o 42s 32s 96s 85s J8o J7s 65o 54o 74s K9o T8o
Before youWhat to do (groups)
Folded to youRaise or fold. Raise early 1-4, middle 1-5, cutoff 1-6, button 1-8. Small blind: raise 1-7, complete 8.
LimpersRaise / call: early 1-3 / 4-6, middle 1-4 / 5-7, cutoff and button 1-5 / 6-8, small blind 1-3 / 4-8. Big blind: raise 1-4, check the rest.
One raiseRe-raise / call: against an early raise 1-2 / 3, a middle raise 1-2 / 3-4, a late raise 1-4 / 5. Big blind: re-raise 1-2 (1-3 against a late raise), call to 7 against an early raise and to 8 against anything later or with a caller in.
Raise and re-raiseCap 1, call 2 (big blind 2-3), fold the rest.
You raised, got re-raisedCap with 1, call with everything else.
You called, got raisedOne more bet: call (re-raise 1). Two more: call 1-4.

With two or more players already in, pairs and suited hands count one group better for calling. Hands outside the eight groups fold, unless checking is free or you already have chips in and face just one more bet.

How the bots play. Each bot is four sliders. Preflop, looseness and position set how many hands it plays and aggression how many it raises; the blinds defend wider against a single raise, widest against a late-position raiser. Facing a bet after the flop, a bot folds roughly the pot-odds share of the hands it could have there, scaled by stubbornness: a calling station folds far less than that, a rock more. Any piece of the board (a pair using a hole card, a draw) gets called down by the sticky ones, which is how low-limit tables play. They also read each other: a regular calls the maniac down lighter and value-bets the station thinner. You have no profile, so the bots read you as an average player.

Modes. Coach shows the analysis before you act. Review grades every decision after the hand. Silent shows nothing and keeps score for the leak report. The same analysis runs in all three.

Fair cards, checkable links. Each session has a seed; the deck, the bots' choices and the coach's sampling are all drawn from it. A shared link carries only the table, the seed and your decisions, and whoever opens it re-plays the hands and recomputes the results. Nothing is sent anywhere: stats stay in this browser. Links and saved sessions also record which version of the bots they were played against: ones from the first version still replay exactly, against those original bots, and say so.

Rules: fixed limit, blinds of half a small bet and one small bet, bet plus three raises per round (uncapped once it's heads-up), an all-in of at least half a bet reopens the betting, odd chips go to the first winner left of the button. No rake.

$ cd .. → more interactives