Deployment-Drift Fall 7: Squeeze wird zu einem Preis gehandelt, den die
Validierung nie unterstellt hat backtest_breakout_squeeze.py steigt AM LEVEL ein. Live schickt _check_auto_squeeze eine MARKET-Order - aus 34 echten Entries (Logs 16.07.-05.08., Level aus der Log-Zeile x Einstiegspreis aus der DB) liegt der Einstieg im Median +0,306 xATR ueber dem Level, nur 18 % innerhalb 0,10. Gemessen (backtest_squeeze_entry.py, 80k M5, 2 Halbjahre, sequentiell EIN Slot, kanonischer Exit, Echtkosten): allein der Einstiegspreis dreht das Setup - OeR +0,456 -> -0,158 (H1) und +0,611 -> -0,006 (H2), WR 56 -> 37 %. Ordnet den B4-Befund vom 01.08. neu ein: dort wurde die Luecke zwischen Mechanik (+0,102) und Live (-0,242) dem EXIT zugeschrieben. Die Mechanik-Zahl unterstellt aber denselben Level-Einstieg - es war ueberwiegend der ENTRY. Beide naheliegenden Reparaturen fallen durch (Regel vorab fixiert): Abstands-Bremse 0,10-0,40 xATR alle 5 durch (die NAHEN Ausbrueche sind pro Trade die schlechteren - Fehlausbruch-Effekt), LIMIT/Retest am Level in allen 5 Varianten schlechter als Market. Nichts abgeschaltet - der Befund staerkt die bereits fixierte B5-Abbruchregel, die Entscheidung bleibt beim User. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
cc4f1a0863
commit
8d93de9867
@@ -1432,6 +1432,52 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
hinterher nicht verschoben wird; überwacht als Messung `squeeze_b5` im
|
||||
`measurement_reminder.py`. Nacht-Anteil der Altdaten: 12 der 31 Trades / −78,92 € —
|
||||
die stammen aus der Zeit vor dem Nacht-Guard (seit 24.07. wieder an).
|
||||
- **⚠⚠ DEPLOYMENT-DRIFT FALL 7 — DER SQUEEZE WIRD ZU EINEM PREIS GEHANDELT, DEN DIE
|
||||
VALIDIERUNG NIE UNTERSTELLT HAT (gemessen `backtest_squeeze_entry.py`, 2026-08-05).**
|
||||
Anlass: User-Frage zu einem Auto-Trade, der „am höchsten Punkt einer aufsteigenden
|
||||
Kerze" eröffnet wurde (05.08. 08:33:20 — Level 75,757, Einstieg **75,822**, also
|
||||
über dem Hoch 75,808 der laufenden M5-Kerze; die schloss dann bei 75,693).
|
||||
**`backtest_breakout_squeeze.py` steigt AM LEVEL ein** (`sim(lvl, …)`). Live schickt
|
||||
`_check_auto_squeeze` eine **MARKET**-Order, sobald `state=='active'` — der Kurs ist
|
||||
dann schon ein Stück weiter. **Aus 34 echten Live-Entries (Logs 16.07.–05.08.,
|
||||
Level aus der Log-Zeile × Einstiegspreis aus der DB): Median +0,306×ATR über dem
|
||||
Level**, Mittel +0,741 · 75 % +0,863 · Max +4,339; nur **18 %** liegen innerhalb
|
||||
0,10×ATR, **53 % über 0,30×ATR**.
|
||||
**Was dieser Preisunterschied kostet** (80k M5, 2 Halbjahre, sequentiell EIN Slot,
|
||||
kanonischer Exit, Echtkosten):
|
||||
| Variante | H1 ØR / ΣR | H2 ØR / ΣR | WR |
|
||||
|---|---|---|---|
|
||||
| **A Einstieg AM LEVEL** (Backtest-Annahme) | **+0,456 / +369,8** | **+0,611 / +777,8** | 56/62 % |
|
||||
| **B Einstieg am Bar-Close** (≈ live) | **−0,158 / −125,9** | **−0,006 / −7,6** | 37/42 % |
|
||||
**Allein der Einstiegspreis dreht das Setup — −0,61 ØR in BEIDEN Hälften, WR bricht
|
||||
von 56 auf 37 %.** Modell B ist dabei **nicht pessimistisch**: sein Median-Abstand
|
||||
(0,38×ATR) liegt nah am LIVE gemessenen (0,31×ATR); der Live-Betrieb liegt also
|
||||
~80 % des Weges von A nach B, also grob bei **breakeven bis leicht negativ** —
|
||||
nicht bei den dokumentierten +0,14…+0,23.
|
||||
⚠⚠ **Das ordnet den B4-Befund vom 01.08. NEU ein.** Dort stand: „Mechanik +0,102 vs.
|
||||
Live −0,242 → **die Lücke entsteht im EXIT**". Die Mechanik-Zahl unterstellt aber
|
||||
denselben Level-Einstieg. Der Einstiegspreis erklärt den Großteil der 0,34-R-Lücke
|
||||
— **es war überwiegend der ENTRY, nicht der Exit.**
|
||||
⚠ **BEIDE naheliegenden Reparaturen fallen durch** (Regel vorab fixiert: ΣR und ØR
|
||||
in beiden Hälften > B, Nachbarn ebenso):
|
||||
· **Abstands-Bremse** („überspringen, wenn der Kurs schon > X×ATR über dem Level
|
||||
steht", X = 0,10…0,40) — **alle 5 Schwellen durch.** Kontraintuitiv, aber konsistent:
|
||||
die *nahen* Ausbrüche sind pro Trade die SCHLECHTEREN (0,10×ATR → ØR −0,254), weil ein
|
||||
gerade eben überschrittenes Level oft ein Fehlausbruch ist (54 % der Box-Ausbrüche
|
||||
kehren binnen 3 Bars zurück, `backtest_consolidation.py`). Die Bremse senkt den
|
||||
Gesamtverlust nur, indem sie weniger handelt.
|
||||
· **LIMIT-Order am Level** (Retest, 3/6/12 Bars Gültigkeit, ±0,1×ATR Puffer) —
|
||||
**alle 5 Varianten SCHLECHTER als Market** (ØR −0,14…−0,27 gegen −0,006…−0,158);
|
||||
151–430 Ausbrüche werden dabei verpasst. Deckt sich mit dem Retest-Befund aus
|
||||
`backtest_consolidation.py`.
|
||||
✅ **Schlussfolgerung: Variante A war nie erreichbar** — sie unterstellt einen Fill zu
|
||||
einem Preis, den der Markt bereits verlassen hat. Die Frage ist damit nicht „wie
|
||||
steigt man klüger ein", sondern **ob der Auto-Squeeze überhaupt bleibt**. Das ist die
|
||||
bereits fixierte **B5-Abbruchregel** (≥20 Squeeze-Trades ab 01.08.; Verhältnis < 1,0
|
||||
ODER PF < 1 → `auto_squeeze=false`) — dieser Befund stärkt sie erheblich.
|
||||
**Nichts abgeschaltet** — Autonomie-Schalter sind User-Entscheidungen.
|
||||
⚠ Grenzen: die Live-Stichprobe ist n=34 mit genäherter ATR-Zuordnung; A und B sind
|
||||
zwei Modell-Enden, der Live-Betrieb liegt dazwischen (näher an B).
|
||||
- **Auto-Squeeze-Entry = LIVE AUTONOM (User-Vorgabe 2026-07-16, `[trading]
|
||||
auto_squeeze=true`, Default FALSE):** der Bot eröffnet **selbständig eine echte
|
||||
Order**, sobald der **gemessen-validierte** Squeeze-Ausbruch feuert (`wave.squeeze.
|
||||
@@ -2888,6 +2934,7 @@ Bedingungen BETRIEBEN als VALIDIERT. An EINEM Tag wurden drei Fälle gefunden:
|
||||
| 2 | `breakout_k=0,3` | **feste** Zeitebene | TF wechselt 33×/Tag, löscht den Anker | 43 % → **93 % WARTEN** |
|
||||
| 3 | Trailing `mult` | **1,5** | **1,5–3,0** je nach TF | H1 ΣR −249 → **−1367**, Worst −1,50 → −2,50 |
|
||||
| 4 | `_broker_offset_s()` | **frischem** Tick | Tick beliebig alt (Wochenende) | Offset **−9,5 h statt +3 h** → `open_time` 12,5 h in der Zukunft, **Time-Stop-Alter negativ** |
|
||||
| 7 | Auto-Squeeze-**Einstiegspreis** | Fill **AM Ausbruchs-Level** (`backtest_breakout_squeeze.py`) | **MARKET**-Order, live median **+0,306×ATR** über dem Level (34 echte Entries) | ØR **+0,456 → −0,158** (H1) bzw. **+0,611 → −0,006** (H2); WR 56 → 37 % |
|
||||
| 6 | `auto_squeeze_skip_night` | Nacht-Kostenfalle am **Wellensignal** (alle Nacht-Bars: 0,333×ATR) | **Squeeze**-Ausbrüche, die nur bei anziehendem ATR feuern (0,183×ATR = Tag-Niveau) | Gate kostet ΣR **−42 (H1) / −243 (H2)**; geblockte Ausbrüche sind in beiden Hälften positiv |
|
||||
| 5 | `backtest_auto_signal.py` | **ohne Winkel** (`_build` ohne `angle=` → Default 90 → `ad=0`) | Winkel steuert einen **Signalzweig** (Reversal) UND **±15 Konfidenzpunkte** | Urteil vom 30.07. beschrieb weder das alte noch das neue System; der Winkelterm allein hebt H1 bei conf 75 von **−0,123 auf −0,047** |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user