Oracle-Range-System — Init × Modifier kalibriert (2026-08-29)

# Oracle-Range-System 2026-08-29 — Init × Modifier, kalibriert

**Vollständige zweistufige generative Range-Architektur, trainiert und validiert in ~36h.**

## Architektur

```
Preflop-Oracle (v2-NN 211→128→64→9): P(Preflop-Line | Holding, Kontext)
  Kontext: Position, Aktionsklassen-Line, to_call-Buckets, eff_stack,
  Tisch-Stack-Verteilung, kumulative VPIP/PFR-Stats
        → Init-Range am Flop-Start (combo-gewichtet)
        ×
Postflop-Modifier (v3-NN 17→96→48→9): P(Aktion | Holding, Board, Kontext)
  Features: Rank-Kategorie (Counting-Evaluator), Pair-Quality, Draw-Flags
  (Out-Counting), Board-Textur, Street, Pot/Odds, Stats
        → Final-Range per Likelihood-Produkt über die eigene Aktions-Line
```

## Korpora (alle unselektiert — jeder Spieler jeder Hand, Holdings aus Self-Play)

| Korpus | Records | Regime |
|---|---|---|
| v1 | 121.7M | konstante 75BB (kontrollierte Basis) |
| v2 | 72M | natürliche Stacks 1.5-668BB, Stats-Features |
| v3 | 86.4M | Full-Street (Postflop-Aktionen + Boards) |

## Kalibrierungsergebnisse (Holdout, combo-gewichtet, kein Showdown-Bias)

| Gate | Modell | Mean-Perzentil | Status |
|---|---|---|---|
| Gate-1 (75BB) | v1-Tabelle | 0.5048 | ✅ |
| Gate-1 (natürl. Stacks) | v2-NN | 0.5084 | ✅ |
| **Gate-2 (Full-Range A)** | Init×Modifier | **0.5077** | ✅ n=50K |
| **Gate-2 (Full-Range B)** | Init×Modifier | **0.5119** | ✅ n=50K |

Modifier-Aktionsvorhersage: 94.8% (CE 0.118, 15M Samples).

## Kern-Erkenntnisse der Reise

1. **Combo-Gewichte sind Pflicht** (6/4/12 pro Typ): ohne sie +0.12 Schein-Bias im Perzentil-Test (Tagebuch: „die Oracle war kalibriert, der Test hatte den Bug")
2. **Showdown-Selektion** war der v17-2x-Bias-Mechanismus — alle drei Korpora umgehen sie per Definition
3. **Temperatur/Kapazität/Identity/fine-Buckets** waren alle wirkungslos gegen den (Schein-)Skew — Feature-Diagnose mit Kontrollen strukturiert abarbeiten lohnt sich
4. Sequential Training (v1-Pretrain → v2-Finetune mit null-erweiterter Input-Layer): CE 0.144→0.034

## Artefakte

- `/home/jan/gen5_data/preflop_v1/`: oracle_table.npz, oracle_nn_v1.npz (+fine)
- `/home/jan/gen5_data/preflop_v2/`: oracle_v2_table.npz (sparse), oracle_nn_v2.npz
- `/home/jan/gen5_data/preflop_v3/`: modifier_samples.npz (15M), modifier_nn.npz
- Scripts: `preflop_oracle_{aggregate,train}.py`, `preflop_v2_{aggregate,train}.py`, `preflop_v3_{prep,train}.py`, `preflop_gate{1,2}.py`, `oracle_features.py`
- Recorder: PREFLOP_RECORDER_PATH (Full-Street, v2-Features)
- Commits: 8af400a → 007bb1f

## Offen

- Rust-Inferenz-Port beider NNs + Integration in die G4-Range-Pipeline (läuft)
- EV-Beweis: oracle-Ranges vs. heuristische S-Curve-Ranges im Spiel (natural-stack-Benchmark als Messbasis)

id: 8aeeeb5d60da4e02abc14aab64377123
parent_id: 2c8da247905946c3aa19eb4936e16323
created_time: 2026-08-29T18:51:45.492Z
updated_time: 2026-08-29T18:51:45.492Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: 
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1788029505492
user_created_time: 2026-08-29T18:51:45.492Z
user_updated_time: 2026-08-29T18:51:45.492Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 0
is_locked: 0
extracted_resource_ids: 
type_: 1