Gate 4 der M15-Karte: Ziel nur noch in der ERLAUBTEN Richtung
User-Fund: Karte zeigte "verboten SHORT" (= LONG erlaubt) UND ein Ziel 0,15 $ UNTER dem Kurs. Die Arithmetik war korrekt - aber fuer die verbotene Richtung. Ursache: das Ziel war schlicht das entferntere der beiden Level (max nach gap), ohne Richtungspruefung. Strukturell steckte dahinter ein Fade-Trade (Gegenlevel als Ziel = Mean Reversion) in einer Kette, deren Gate 2 ein Trendfilter ist - zwei unvereinbare Konzepte. Damit derselbe Fehler, wegen dem die Gesamtempfehlung entfernt wurde: aus einem VERBOT wird ueber die Hintertuer wieder eine RICHTUNG. Fix nach der gemessenen Population (backtest_m15_gates.py): Einstieg am naechstgelegenen Level, Richtung = die vom HTF erlaubte. Ein Ziel nur, wenn es jenseits dieses Einstiegs in der erlaubten Richtung liegt; sonst "kein Ziel" mit Grund statt einer erfundenen Zahl. Richtung steht jetzt im Anzeigetext. - tests/test_m15_ziel.py (6 Tests, Invariante ueber 32 Konstellationen) - Mutationsprobe: alte Zeile zurueck -> 4 von 6 Tests fallen - deploy.py --feld unterstuetzt jetzt Punktpfade (m15_setup.ziel_grund) - v=159 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b8705e297f
commit
5474c2be61
@@ -5154,6 +5154,72 @@ Mit **5 Szenarien getestet** (alles passt · Bias uneinig · Kosten teuer · Lev
|
||||
zu weit · Kaltstart ohne ATR_M15 → kein Absturz), live verifiziert über
|
||||
`deploy.py --feld m15_setup`.
|
||||
|
||||
### ⚠⚠ GATE ④ ZEIGTE DAS ZIEL IN DER VERBOTENEN RICHTUNG — behoben 2026-08-10
|
||||
|
||||
**User-Fund:** „Kurs ist ca. 79 und Ziel ist 78,7 bei Empfehlung LONG — ein
|
||||
Widerspruch?" **Ja, und zwar ein echter.** Live nachgestellt:
|
||||
| | |
|
||||
|---|---|
|
||||
| Kurs (bid) | **78,918** |
|
||||
| ② Bias | `verboten: SHORT` → erlaubt ist **LONG** |
|
||||
| ④ Ziel | **78,768** — 0,15 $ **unter** dem Kurs, `von: 79,033` |
|
||||
|
||||
Gelesen heisst das „am Widerstand einsteigen, Support anlaufen" = ein **SHORT**.
|
||||
⚠ **Die Arithmetik war korrekt — nur für die verbotene Richtung.** Ursache war
|
||||
eine Zeile:
|
||||
```python
|
||||
fern = max(zonen, key=lambda x: x["gap_atr15"]) # rein geometrisch
|
||||
```
|
||||
Das Ziel war schlicht das **entferntere** der beiden Level, ohne jede
|
||||
Richtungsprüfung.
|
||||
|
||||
⚠⚠ **Der strukturelle Grund ist der wichtigere Teil: zwei unvereinbare
|
||||
Handelskonzepte in einer Kette.** Gate ④ unterstellte stillschweigend einen
|
||||
**Fade-Trade** (Level anlaufen, Gegenlevel als Ziel = Mean Reversion), Gate ② ist
|
||||
aber ein **Trendfilter**. Damit ist es **derselbe Fehler, wegen dem die
|
||||
Gesamtempfehlung entfernt wurde**: aus einem **VERBOT** wird über die Hintertür
|
||||
wieder eine **RICHTUNG** — hier nicht über verrechnete Stimmen, sondern über die
|
||||
Geometrie. Und es ist der zweite Fall in dieser Karte (der erste war der
|
||||
Richtungs-Bias, korrigiert 08.08. nach 13 LONG-Episoden an einem fallenden Tag).
|
||||
**Ein Verbot lässt sich offenbar auf mehr Wegen in eine Richtung verwandeln, als
|
||||
man beim Bauen sieht.**
|
||||
|
||||
✅ **Fix — die gemessene Population ist der Maßstab.** `backtest_m15_gates.py`
|
||||
misst: Einstieg am **nächstgelegenen** Level, Richtung = die vom HTF **erlaubte**;
|
||||
der Exit ist der kanonische Trailing-Exit — **ein Level-Ziel war NIE gemessen**
|
||||
(④ ist ausdrücklich „reine Arithmetik"). Jetzt gilt:
|
||||
| Lage (LONG erlaubt) | Anzeige |
|
||||
|---|---|
|
||||
| nächstes Level = **Support** → Abpraller | Ziel = Widerstand darüber ▲ |
|
||||
| nächstes Level = **Widerstand** → Ausbruch | **kein Ziel** + Grund |
|
||||
| **kein Veto** (M30 flach) | **kein Ziel** — ein einzelnes wäre wieder Richtung |
|
||||
⚠ **„Kein Ziel" ist ein eigener Zustand, keine Lücke** — die Karte nennt den
|
||||
Grund, statt eine Zahl zu erfinden. Beim Ausbruchs-Einstieg ist das nächste Ziel
|
||||
schlicht **nicht berechenbar**: `_draw_levels` liefert bewusst nur die nächste
|
||||
Linie je Seite (Entscheidung 14.07., sonst tauchen beim Kurslauf laufend Linien
|
||||
auf/ab).
|
||||
⚠ Die **Richtung steht jetzt IM Text** (`④ Ziel ▲ 79,033 … Einstieg 78,768`).
|
||||
Ein Ziel ohne genannte Richtung lässt sich still wieder verdrehen — mit genannter
|
||||
nicht. Neue Felder: `ziel.richtung`, `ziel_grund`.
|
||||
|
||||
✅ **Mutationsprobe bestanden** (ein grüner Test belegt sonst nichts): mit der
|
||||
alten Zeile zurückgebaut fallen **4 von 6** Tests, und die Fehlermeldung
|
||||
reproduziert den Fund wörtlich (`{'level': 78.768, … 'von': 79.033}`).
|
||||
⚠ Die zwei übrigen bleiben **korrekterweise** grün — dort liegt das entferntere
|
||||
Level tatsächlich in der erlaubten Richtung, alt und neu stimmen überein. Ein
|
||||
Test, der auch die richtigen Fälle rot färbt, wäre zu eng gefasst.
|
||||
`tests/test_m15_ziel.py` (6 Tests) prüft die Invariante **„ein ausgewiesenes Ziel
|
||||
liegt IMMER in der erlaubten Richtung"** über 32 Konstellationen × 2 Richtungen.
|
||||
✅ **Live beide Zweige belegt**, weil der Kurs während der Prüfung lief: bei
|
||||
bid 78,918 (nächstes = Widerstand) → kein Ziel + „Ausbruch"; bei bid 78,871
|
||||
(nächstes = Support) → Ziel 79,033 ▲, Einstieg 78,768.
|
||||
|
||||
⚠ **Nebenbei behoben: `deploy.py --feld` konnte nur die oberste Snapshot-Ebene**
|
||||
(`a.feld in snap`). Für `m15_setup.ziel_grund` war der Neuheits-Beweis damit gar
|
||||
nicht führbar — und Schritt 4 ist der EINZIGE belastbare Nachweis, dass neuer
|
||||
Python-Code läuft. Jetzt mit **Punktpfaden**; ein Feld mit Wert `None` zählt als
|
||||
vorhanden (geprüft wird der Schlüssel, nicht der Inhalt).
|
||||
|
||||
## ⚠⚠ EXIT-ABSTAND AUS M15-ATR = FÄLLT DURCH (2026-08-08)
|
||||
|
||||
Zweiter Teil der M15-Idee: M5-Einstieg behalten, nur den EXIT gröber führen.
|
||||
|
||||
Reference in New Issue
Block a user