Konfidenzintervalle (scipy-Bootstrap) — und sie korrigieren den Befund vom 06.08.
backtest_cost_gate.ci95(): 95-%-Bootstrap-KI des Mittelwerts (Perzentil, 2000 Resamples, random_state fest -> reproduzierbar, ab n>=20). kennzahlen() liefert es als neuen Schluessel `ci` — rein additiv, alle 11 Aufrufer lesen weiter nur n/wr/oer/sr/pf, keine dokumentierte Zahl verschiebt sich (geprueft). Sofortiger Ertrag: der erste Lauf relativiert das `3 von 7 tragen` vom 06.08. Auf der entscheidenden Spalte C (Beruehrungs-Fill): KONTROLLE Squeeze H1 [+0,037…+0,229] H2 [+0,225…+0,366] PDH / PDL H1 [-0,032…+0,544]⚠ H2 [+0,155…+0,764] Equal H/L H1 [+0,001…+0,425] H2 [-0,035…+0,356]⚠ Asian Range H1 [-0,067…+0,357]⚠ H2 [-0,060…+0,332]⚠ Nur der Squeeze hat in BEIDEN Haelften ein Intervall klar ueber null. Bei Asian Range enthalten beide die Null — als Ueberlebender war das zu stark formuliert. Formulierung auf `1 gesichert, 2 unklar` korrigiert. Zwei verschiedene Fragen, beide noetig: die 2-Stichproben-Regel prueft die Stabilitaet des VORZEICHENS ueber Regime, das KI die Unterscheidbarkeit vom RAUSCHEN innerhalb einer Stichprobe. Hier war Ersteres erfuellt, Letzteres nicht. Ein KI, das die Null enthaelt, heisst nicht widerlegt, sondern nicht belegt — und zwei gleichgerichtete Haelften sind zusammen mehr Evidenz als jede fuer sich. Grenze dokumentiert: der Bootstrap unterstellt unabhaengige Ziehungen. Fuer die sequentielle Sim mit EINEM Slot passt das; fuer ueberlappende Fenster (analyze_hl_funding.py) ist er zu optimistisch — dort braeuchte es einen Block-Bootstrap. ci95 ist dafuer ausdruecklich NICHT gedacht. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e69907edbe
commit
79f3e8efe1
@@ -259,6 +259,25 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
Anteil, WR-Verfall, PF<1, Einzelverlust). **Wöchentlich** laufen lassen (B4/B5).
|
||||
- **Vor „fertig":** immer `python -m py_compile <datei>`; JS grob via Klammern-
|
||||
Balance prüfen (kein node im Env).
|
||||
- **⚠⚠ KONFIDENZINTERVALLE statt Bauchgefühl (`backtest_cost_gate.ci95`, seit
|
||||
2026-08-07).** Das Projekt entschied bis dahin über **Punktschätzungen** plus die
|
||||
2-Stichproben-Regel; ob ein ØR von +0,12 bei n=30 überhaupt von null zu
|
||||
unterscheiden war, musste jedes Mal im Kopf abgeschätzt werden. `kennzahlen()`
|
||||
liefert jetzt zusätzlich **`ci`** = 95-%-Bootstrap-Intervall des Mittelwerts
|
||||
(Perzentil, 2000 Resamples, `random_state` fest → reproduzierbar; ab n≥20, sonst
|
||||
`None`). ⚠ **Rein additiv** — alle 11 Aufrufer lesen weiter nur `n/wr/oer/sr/pf`,
|
||||
keine dokumentierte Zahl verschiebt sich.
|
||||
✅ **Sofortiger Ertrag:** der erste Lauf hat das Ergebnis vom 06.08. korrigiert
|
||||
(s. „Verworfene Setups auf der Ausführungs-Achse" — aus „3 von 7 tragen" wird
|
||||
„1 gesichert, 2 unklar").
|
||||
⚠⚠ **GRENZE, die man kennen muss:** der Bootstrap unterstellt **unabhängige**
|
||||
Ziehungen. Für die sequentielle Sim mit EINEM Slot stimmt das näherungsweise
|
||||
(jeder Trade beginnt nach dem Exit des vorigen). Für **überlappende**
|
||||
Beobachtungen ist er **zu optimistisch** — stündliche Werte mit 24-h-Horizont
|
||||
teilen 23 von 24 Stunden, das effektive n ist ~n/24. Genau daran ist
|
||||
`analyze_hl_funding.py` am 06.08. aufgelaufen (dort wird **entüberlappt** statt
|
||||
gebootstrappt). Für solche Fälle bräuchte es einen **Block-Bootstrap** —
|
||||
`ci95` ist dafür NICHT gedacht.
|
||||
- **⚠⚠ DIE `\n`-FALLE — und der Scan dagegen (`tools/check_nfalle.py`, 2026-08-07).**
|
||||
Wird Code über ein Shell-**Heredoc** geschrieben, macht die Shell aus einem
|
||||
gemeinten `\n` einen **echten Zeilenumbruch mitten im String-Literal**. Real an
|
||||
@@ -412,6 +431,27 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
vier Varianten (bestätigt 2026-07-17). ✅ Die drei Überlebenden sind
|
||||
**nachbar-robust** (PDH/PDL über die Gültigkeitsdauer, Asian Range über das
|
||||
Fenster, Equal H/L über Toleranz und Gültigkeit — 11 Zellen, keine kippt).
|
||||
⚠⚠ **NACHTRAG 2026-08-07 — mit 95-%-Konfidenzintervallen relativiert sich das
|
||||
„3 von 7" deutlich.** Seit `backtest_cost_gate.ci95` (Bootstrap) hängt an jeder
|
||||
ØR-Zahl ihr Intervall. Auf der entscheidenden Spalte C:
|
||||
| Setup | H1 95-%-KI | H2 95-%-KI |
|
||||
|---|---|---|
|
||||
| **KONTROLLE Squeeze** | **[+0,037 … +0,229]** | **[+0,225 … +0,366]** |
|
||||
| PDH / PDL | [−0,032 … +0,544] ⚠ enthält 0 | [+0,155 … +0,764] |
|
||||
| Equal H/L | [+0,001 … +0,425] (haarscharf) | [−0,035 … +0,356] ⚠ enthält 0 |
|
||||
| **Asian Range** | [−0,067 … +0,357] ⚠ | [−0,060 … +0,332] ⚠ |
|
||||
**Nur der Squeeze hat in BEIDEN Hälften ein Intervall klar über null.** Bei
|
||||
Asian Range enthalten **beide** die Null — als „Überlebender" war es zu stark
|
||||
formuliert.
|
||||
⚠ **Zwei verschiedene Fragen, beide nötig:** die 2-Stichproben-Regel prüft, ob
|
||||
das **Vorzeichen über Regime hinweg stabil** ist; das KI prüft, ob eine einzelne
|
||||
Schätzung **überhaupt von Rauschen zu unterscheiden** ist. Hier war Ersteres
|
||||
erfüllt und Letzteres nicht. Und: zwei Hälften, die beide in dieselbe Richtung
|
||||
zeigen, sind zusammen mehr Evidenz als jede für sich — „KI enthält 0" heißt
|
||||
also **nicht widerlegt**, sondern **nicht belegt**.
|
||||
✅ An der Schlussfolgerung ändert das nichts (es wurde ohnehin nichts gebaut),
|
||||
aber die Formulierung „3 von 7 tragen" ist auf **„1 gesichert, 2 unklar"** zu
|
||||
korrigieren.
|
||||
⚠⚠ **Das sind KEINE drei neuen Signale.** PDH/PDL, Asian-Range-Extrem, Equal
|
||||
Highs/Lows und die Squeeze-Box sind **dasselbe**: ein waagerechtes Level aus
|
||||
früheren Kursextremen, gebrochen, mit ruhender Stop-Order betreten und mit dem
|
||||
|
||||
Reference in New Issue
Block a user