← Back to TableSharp

Methodology

How the numbers in this app are computed. If anything here is wrong, tell us.

Blackjack basic strategy

The strategy chart is computed live for your specific rule set: dealer-hits-soft-17 vs stands, double-after-split, surrender variant (none / late / early), and deck count (1, 2, 4, 6, 8). When you change a rule in Settings, the chart cells flip immediately — H17 vs S17 toggles four cells (15 vs A, 17 vs A, A,7 vs 2, A,8 vs 6) and our engine matches Stanford Wong's Professional Blackjackon every cell we've spot-checked.

Show implementation detail

The chart engine lives in lib/strategy/blackjack.ts. Decisions are pure functions of (player hand, dealer upcard, rules) — no client-side mutation, no per-user override.

House-edge numbers

Edges shown in /reference and the trainers come from the standard Wizard of Odds calculations. Specifically:

Counting deviations (Illustrious 18)

Index numbers come from Don Schlesinger's Blackjack Attack (3rd ed.) Hi-Lo system, 6-deck S17 baseline. The deviations trainer prompts you with the exact (true count, hand, dealer upcard) tuples and grades against the indexed play. Bet-spread numbers in the lessons assume half-Kelly on a 200-unit bankroll — the standard advantage-play default.

“Money saved” counter

On every training hand, we compute the EV cost of a wrong play vs optimal under your rules and bet size, and credit you the difference when you make the right decision. So a correct surrender on 16 vs 10 at $25 saves you the EV gap between the optimal surrender (−$12.50 expected) and the average suboptimal play (about −$15.40 hitting), or roughly $2.90 per hand. We use the same EV model you can replicate in the Advanced > Variance simulator.

The counter measures decisions, not actual real-money sessions — it's "what your strategy would have saved at a real table." If you log a real session at /sessions we can compare actual vs expected later.

For speed, our per-hand EV calc uses a simplified per-action approximation (Hit/Stand mistake = 8% of bet, missed Double = 12%, missed Split = 15%, missed Surrender = 5%) rather than re-solving the full hand on every keystroke. That means individual leak severities are flattened — a Hard 16 vs 10 mistake is materially worse than a Hard 14 vs 10 one in reality, but both credit the same 8%. The aggregate counter stays directionally correct over many hands; if you need per-spot EV (e.g. for advantage-play study) the Variance Simulator and the Schlesinger / Wong references both compute full per-spot.

What this means concretely (R22 audit verified across 34 sample hands): every correct Hit / Stand earns exactly $2.00 at $25 bet, every correct Double earns $3.00, every correct Surrender earns $1.25, every missed Split costs $3.75. There is no variance within an action tier — a correct Hard 12 vs 4 Stand earns the same $2.00 as a correct Hard 17 vs 10 Stand, even though the textbook EV gap differs. If you re-pull the math against textbook 2D-H17 differentials your average per-hand reward should drop to roughly $0.80–$1.20 instead of ~$1.78. We chose the simpler model so the LMS counter is predictable enough to feel motivating without requiring users to read a 1,300-row solver table to believe it.

Hold'em pre-flop ranges

Open ranges and 3-bet ranges shown in /reference/holdem and used by the trainer are based on standard 6-max NLHE 100bb solver outputs (PioSolver baseline + GTO Wizard reference charts, simplified for teaching). The position-aware open percentages are: ~15% UTG, ~19% MP, ~27% CO, ~50% BTN, ~35% SB. The classifier lives in lib/strategy/holdem.ts (functions optimalFirstInAction and optimalVsRaise).

Bubble hands (rank 60–80 of 169 — J9o, T8s, 88, A2o, etc.) are played as a binary fold/raise here, but the underlying solver output is mixed — J9o on SB vs BB, for example, is a ~50/50 mix at GTO. We round to the higher-EV side for teaching purposes; if you want the mixed-strategy frequencies, GTO Wizard is the reference. These ranges tighten under ICM pressure and against specific opponents — the chart is the starting point, not the final word.

Hold'em postflop (Beta)

The C-Bet, Turn, and River trainers are in beta. Decisions are rule-based on board texture (dry / dynamic / wet) and a 13-class relative-hand-strength classifier — they are NOT solver-equivalent for every spot. A subset of curated solver-verified spots is marked ✓ SOLVERin the trainer; the rest are heuristic. Postflop EV-cost numbers in “saved” / “leaked” counters use 100bb rough deltas and are pedagogical, not exact.

What we sample, store, and don't

Disagreements

If you find a cell, edge, or explanation that disagrees with a source you trust, we want to know. Email it to us — bug-grade reports get prioritized over feature requests. Contact.