id: 643cdffe60e6436486d150145f87ea16
parent_id: 11bab7bd6a784c3fa09a7db4725508a0
item_type: 1
item_id: 47031623e2c6451fb36730ffe93380ea
item_updated_time: 1786269000091
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"26-0\"],[-1,\"7-31\"],[1,\"8-09\"],[0,\" (rev \"],[-1,\"8\"],[1,\"9\"],[0,\"). Gen \"],[-1,\"5 config renamed to g50. Gen 4 ends at g48\"],[1,\"6 PreflopNet/PPO abandoned. Gen 5 = G48 + RangeNet v17\"],[0,\".\\\n\\\n-\"]],\"start1\":23,\"start2\":23,\"length1\":68,\"length2\":80},{\"diffs\":[[0,\"50_live`\"],[1,\", now using range_v17\"],[0,\")\\\n- Prof\"]],\"start1\":929,\"start2\":929,\"length1\":16,\"length2\":37},{\"diffs\":[[0,\"6-07-31)\"],[1,\", PRODUCTION (2026-08-09)\"],[0,\"\\\n\\\n**Gen \"]],\"start1\":1059,\"start2\":1059,\"length1\":16,\"length2\":41},{\"diffs\":[[0,\"angeNet \"],[1,\"v17 \"],[0,\"(pure NN\"]],\"start1\":1119,\"start2\":1119,\"length1\":16,\"length2\":20},{\"diffs\":[[0,\"l` (live\"],[1,\", range_v17\"],[0,\")\\\n\\\nRange\"]],\"start1\":1211,\"start2\":1211,\"length1\":16,\"length2\":27},{\"diffs\":[[0,\") from 8\"],[-1,\"1\"],[1,\"5\"],[0,\" observa\"]],\"start1\":1294,\"start2\":1294,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\". He\"],[-1,\"uristic range builder retained for Gen 3/4 only\"],[1,\"ro cards + board cards excluded at inference via `probs_to_hand_range()` masking\"],[0,\".\\\n\\\n#\"]],\"start1\":1372,\"start2\":1372,\"length1\":55,\"length2\":88},{\"diffs\":[[0,\"tart\"],[-1,\" — at 0 hands observed, the NN predicts ranges from default stats + game context, which is richer than heuristic VPIP/PFR defaults\"],[0,\".\\\n- \"]],\"start1\":1629,\"start2\":1629,\"length1\":138,\"length2\":8},{\"diffs\":[[0,\"- **\"],[-1,\"Heuristic blending dropped**: alpha configurable via TOML (`range_alpha_min`, `range_alpha_max`), currently both 1.0\"],[1,\"NN opponent pool mandatory**: All sims and evals use `g48_{fish,whale,tag,nit,station,lag,maniac,reg}_nn.toml`\"],[0,\".\\\n\\\n#\"]],\"start1\":1804,\"start2\":1804,\"length1\":124,\"length2\":118},{\"diffs\":[[0,\"\\\nInput(8\"],[-1,\"1\"],[1,\"5\"],[0,\") → Line\"]],\"start1\":1950,\"start2\":1950,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"x\\\n```\\\n\\\n8\"],[-1,\"1\"],[1,\"5\"],[0,\" feature\"]],\"start1\":2161,\"start2\":2161,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"tures = \"],[-1,\"49\"],[1,\"53\"],[0,\" base + \"]],\"start1\":2174,\"start2\":2174,\"length1\":18,\"length2\":18},{\"diffs\":[[0,\"changed,\"],[-1,\" but\"],[0,\" combo-c\"]],\"start1\":2508,\"start2\":2508,\"length1\":20,\"length2\":16},{\"diffs\":[[0,\"y |\\\n\"],[-1,\"\\\n### Accuracy Ceiling\\\n~19% top-10 across all model versions and feature dimensions. Bottleneck is inherent poker unpredictability (opponent hands are hard to predict from betting patterns), not features or data quantity.\\\n\\\n### Current Status\\\n- **Model**: `range_v14_b1.safetensors` (81-dim, 1M samples)\\\n- **Collection**: `equity_v3/` running (~1.7M/4M samples, 8 tables)\\\n- **Rolling training**: Auto-trains at each 1M milestone (b2 at 2M, b3 at 3M, etc.)\\\n- **Harrington**: 17/18 pass (Harr 4-5: raises turn with 99, book says check — judgment call)\\\n- **Sanity check**: Gen2 ✓ +0.5, Gen3 ✗ -0.1 (marginal), G48/TAG/Nit running\\\n\\\n### Gen 5 Tuning (ongoing)\\\n1. Let collection complete (~4M), train final range_v14 model\\\n2. Faster NN inference (current sim bottleneck)\\\n3. Better range training data quality\\\n4. Possible formula parameter tuning with NN ranges\\\n\\\n### Dropped Approaches\\\n- **Direct-action Gen5** (imitation/Q-reg on 290-dim features): 71.5% accuracy, catastrophic mistakes. Action selection without opponent range is fundamentally blind.\\\n- **Equity NN** (`model_infer_equity`): Works in 6-max (+121 BB/100) but fails in 9-max (-148 BB/100). Redundant with G48's MC.\\\n- **Combined inference** (`model_infer_combined`): Single-street EV too aggressive (-157 to -2140\"],[1,\"| v14_b2–b4 | 81 | 1-3M | — | — | Bug-fix iterations (combo-count, alpha config) |\\\n| v16 | 81 | 19.2M | 3.61% | 22.3% | Full collection, +26% top-1 vs v14 |\\\n| **v17** | **85** | **19.2M** | **4.35%** | **24.2%** | +20% top-1, +9% top-10 vs v16. **Production model.** |\\\n\\\n### Gen 5 Tuning (ongoing)\\\n- **RangeNet v17 in production** (4.35% top-1, 24.2% top-10)\\\n- **Improvement levers**: (1) Feature quality — showdown history, positional stat breakdown, pot-odds context, board interaction. (2) Live data — real opponents have exploitable patterns. (3) Per-street specialization — separate model for updating preflop range given board+actions.\\\n- **Diminishing returns on data**: 19M→84M samples projected <1% improvement. Better levers: feature quality, live opponent data.\\\n\\\n---\\\n\\\n## Phase 5: Gen 6 — PreflopNet/PPO ❌ ABANDONED (2026-08-09)\\\n\\\n**Gen 6 = Gen 5 + PreflopNet NN for preflop decisions**\\\n\\\nAttempted to replace G47 formula preflop with a neural network (7-class, 15-dim), then fine-tune with PPO.\\\n\\\n### Why It Failed\\\n- PreflopNet achieved 99.38% eval accuracy on imitation training but **-644 BB/100** when deployed\\\n- 15-dim feature space can't capture G47's nuanced logic (PEM2 equity, limper stats, implied odds, position-dependent thresholds, pot-based 3-bet sizing)\\\n- PPO on top of broken base was hopeless (value corr=0.10, weight changes <0.001/iteration, G62 ≈ G60 ≈ -644\"],[0,\" BB/100)\"],[-1,\".\"],[0,\"\\\n- \"],[-1,\"**FoldEquityNet**: Overfit, insufficient data.\\\n- **Heuristic range blending** (alpha 0.3-0.7): Superseded by pure NN.\\\n\\\n---\\\n\\\n## Phase 5: Gen 6 — RL Self-Play Improvement (future)\\\n\\\n**Gen 6 = Gen 5 + RL for continuous improvement through self-play**\\\n\\\nGoal: Use reinforcement learning to continuously improve the strategy beyond what the formula + range prediction can achieve alone. The formula provides a strong teacher; RL fine-tun\"],[1,\"Would need 50+ features, continuous raise sizing (not 7 fixed classes), and much more training data\\\n\\\n### Eval Results (10 seeds × 5K hands, 9-max vs 8 NN opponents)\\\n| Bot | Avg chips/hand | BB/100 |\\\n|-----|---------------|--------|\\\n| **G48_nn** (production) | **+3.73** | **+18.7** |\\\n| G60 (PreflopNet imitation) | -128.75 | -643.8 |\\\n| G63 (PPO v3 on-policy) | -129.45 | -647.3 |\\\n\\\n### Future Options\\\n- Redesign PreflopNet with 50+ featur\"],[0,\"es a\"],[-1,\"gainst self-play data to find exploitative adjustments.\\\n\\\nPotential approaches:\\\n- Policy gradient on self-play transitions (formula as initial policy)\\\n- Q-regression on self-play outcomes (formula-guided exploration)\\\n- Opponent modelling + counter-exploitation loops\\\n\\\nThis is research-phase — no implementation yet. Gen 5 must first prove stable in live play.\"],[1,\"nd continuous sizing (major effort)\\\n- NN-assisted formula: use NN to provide inputs (e.g., estimated opponent range) to G47 formula\\\n- Focus postflop: NN-based sizing or bluffing frequency (smaller, easier problem)\"],[0,\"\\\n\\\n--\"]],\"start1\":2558,\"start2\":2558,\"length1\":2081,\"length2\":2055},{\"diffs\":[[0,\" (2026-0\"],[-1,\"7-31\"],[1,\"8-09\"],[0,\")\\\n\\\n| Met\"]],\"start1\":4630,\"start2\":4630,\"length1\":20,\"length2\":20},{\"diffs\":[[0,\"Net \"],[1,\"v17** (\"],[0,\"pure NN\"],[-1,\"** (\"],[1,\", \"],[0,\"alph\"]],\"start1\":4827,\"start2\":4827,\"length1\":19,\"length2\":24},{\"diffs\":[[0,\"l` (live\"],[1,\", v17\"],[0,\") |\\\n| Ge\"]],\"start1\":4919,\"start2\":4919,\"length1\":16,\"length2\":21},{\"diffs\":[[0,\"ts |\"],[-1,\" 17/18 pass (pure NN),\"],[0,\" 18/\"]],\"start1\":5011,\"start2\":5011,\"length1\":30,\"length2\":8},{\"diffs\":[[0,\"8 pass (\"],[-1,\"heuristic \"],[0,\"range\"],[-1,\"s\"],[1,\"_v17\"],[0,\") |\\\n| Sa\"]],\"start1\":5020,\"start2\":5020,\"length1\":32,\"length2\":25},{\"diffs\":[[0,\" | G\"],[-1,\"en2 ✓ +0.5, Gen3 ✗ -0.1, G48 running (TAG/Nit pending)\"],[1,\"48_nn ✓ +18.7, TAG_nn +1.8, Nit_nn +0.1, Mixed +0.3, Fish +4.5 BB/100\"],[0,\" |\\\n|\"]],\"start1\":5055,\"start2\":5055,\"length1\":62,\"length2\":77},{\"diffs\":[[0,\" | 8\"],[-1,\"1\"],[1,\"5\"],[0,\" dims (\"],[-1,\"49\"],[1,\"53\"],[0,\" bas\"]],\"start1\":5147,\"start2\":5147,\"length1\":18,\"length2\":18},{\"diffs\":[[0,\"e_v1\"],[-1,\"4_b1 (81\"],[1,\"7 (85\"],[0,\"-dim, 1\"],[1,\"9.2\"],[0,\"M sa\"]],\"start1\":5210,\"start2\":5210,\"length1\":23,\"length2\":23},{\"diffs\":[[0,\"es, \"],[-1,\"19.0% top-10) |\\\n| Action space | 11 actions (fold/check/call + 5 bet sizes + 2 raise sizes + allin)\"],[1,\"4.35% top-1, 24.2% top-10) |\\\n| Opponent pool | 8 NN variants (mandatory for all sims/evals) |\\\n| Eval speed | ~10 h/s (9-max vs mixed NN opponents), parallel 15× → ~150 h/s aggregate |\\\n| Sim speed notes | Bottleneck is multiway postflop (loose opponents = 5-7 way flops), not NN inference\"],[0,\" |\"]],\"start1\":5236,\"start2\":5236,\"length1\":105,\"length2\":293}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-08-09T09:53:32.981Z
created_time: 2026-08-09T09:53:32.981Z
is_locked: 0
type_: 13