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:
- Craps: Pass 1.41%, Don't Pass 1.36%, Field 5.56% (with 2:1 on 2 & 12), Place 6/8 1.52%, Place 5/9 4.0%, Place 4/10 6.67%, Buy 4/10 1.67% (5% commission on win), Hardways 9.09% (6/8) and 11.11% (4/10), Any-7 16.67%, Any Craps 11.11%.
- Roulette: 2.70% European single-zero, 5.26% American double-zero, 7.89% on the five-number bet (US). All payouts at standard track odds.
- Baccarat: 1.06% Banker (with 5% commission), 1.24% Player, 14.36% Tie at 8:1, 10.36% Pair at 11:1.
- Video poker: 9/6 Jacks or Better 99.54% RTP, 8/5 JoB 97.30%, NSUD Deuces 99.73%, Full-Pay Deuces 100.76%. Hold-priority list sourced from the standard JoB simple strategy table.
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
- We store every training hand you play (game, situation, decision, optimal, EV cost) so we can compute leaks, accuracy trends, and spaced review.
- We do not store keystroke timing, mouse movement, browser fingerprints, or referral chains beyond the standard analytics event (see privacy policy).
- We do not share data with sportsbooks, casinos, or ad networks.
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.