Tageszeit-Drift gemessen: Morgens-runter/Nachmittags-rauf widerlegt

analyze_tageszeit.py misst die ROHE Kursdrift je Berliner Stunde (nicht den
Signal-Edge). 80k M5-Bars, DST-korrekt, 2 Halften, Ueberschuss gegen den
Tagesschnitt.

Ergebnis: Vormittag 08-12 kippt zwischen den Halften, Nachmittag 14-18 ist
robust NEGATIV - beide Halften der Vermutung fallen durch. Groessenordnung
ohnehin unter dem Spread (staerkste robuste Stunde ~0,03 $/h vs 0,0225 $
Spread).

Korrektur am eigenen Skript: der erste Entwurf hatte einen ATR-Filter
(< 0,06 uebersprungen) plus ATR-Normierung. Der Filter verwarf ausgerechnet
die ruhigen Morgenstunden der aelteren Periode (n 138-391 statt 1740) und
erzeugte so den vermeintlichen Befund. Beides entfernt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-04 18:08:22 +02:00
co-authored by Claude Opus 5
parent 6af4c868bc
commit d75789ac72
2 changed files with 167 additions and 0 deletions
+24
View File
@@ -352,6 +352,30 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
Richtung → +12, „⭐⭐ Konfluenz M30+H1"; H1 dagegen → 8. Per Backtest belegt:
Ø-Edge ×3,5 (+0,016 nur-M30 → +0,056 M30+H1). `_htf_sign` holt zusätzlich
H1-Bars. Mess-Tool: `python backtest_improve.py 8000`.
- **„Morgens fällt der Kurs, nachmittags steigt er" = WIDERLEGT (gemessen
`analyze_tageszeit.py`, 2026-08-04, User-Beobachtung):** ROHE Kursdrift je
Berliner Stunde (nicht Signal-Edge wie `backtest_hourly_split.py`), 80k M5-Bars
(17.06.2504.08.26), DST-korrekt via `zoneinfo`, 2 Hälften, Überschuss gegen den
jeweiligen Tagesschnitt (sonst färbt das Regime alle Stunden ein: H1 fiel, H2 stieg).
**Beide Hälften der Behauptung fallen durch:** Vormittag 0812 **kippt**
(H1 +0,55 / H2 2,90 Zehntel-Cent je Bar), Nachmittag 1418 ist zwar
vorzeichen-robust, aber **NEGATIV in beiden** (0,23/2,10) — also das Gegenteil
der Vermutung. Robust auf: 0/2/5/8/15/23 Uhr · robust ab: 17/21/22 Uhr — kein
Vormittag/Nachmittag-Muster, sondern verstreute Einzelstunden aus 24 Tests.
**Größenordnung macht es ohnehin unhandelbar:** die stärkste robuste Stunde
(23:00, +2,2/+3,4) sammelt über eine volle Stunde ~0,030,04 $ — der Spread allein
ist **0,0225 $**. Selbst wenn die Drift echt wäre, ist sie kleiner als die Kosten.
⚠ Std 2:00 sticht mit +33,0 in H2 hervor, hat dort aber nur n=648 (vs. ~1740 sonst)
= dünne Sonntag-Open-/Feiertagsstunde, Ausreißer-verdächtig.
⚠⚠ **Methodik-Lehre (eigener Fehler, dokumentiert):** der ERSTE Lauf meldete
„Vormittag 0812 robust negativ" — Artefakt eines **selbst eingebauten ATR-Filters**
(`atr < 0,06` übersprungen + ATR-Normierung). In den ruhigen Morgenstunden der
älteren Periode liegt der ATR unter dem Floor → von 1.740 Bars je Stunde blieben
**138391** übrig, und zwar ausgerechnet die ungewöhnlich volatilen Morgen.
Genau die Stunden, um die es ging, waren eine verzerrte Teilstichprobe. Gleiche
Fehlerklasse wie das ORB-Selektions-Artefakt 2026-07-17 (ATR-Skip statt Floor).
**Regel: ein Filter, der Bars nach einer Eigenschaft verwirft, die mit der
untersuchten Achse korreliert, ERZEUGT den Befund.**
- **Tageszeit-Gate = AUS geschaltet (User-Vorgabe 2026-07-22, `[trading] dead_hours=`
leer — bewusst GEGEN die Messung).** Jetzt **config-steuerbar** (`wave.set_dead_hours`,
Komma-Liste von Stunden; leer=aus). Gemessener Default im Code = `0,1,2,3,4,5,6,7,12,16`