Exit-Abstand aus M15-ATR gemessen = faellt durch, Exit bleibt am M5-ATR
Zweiter Teil der M15-Idee: M5-Einstieg behalten, nur den Exit groeber fuehren.
Schliesst zugleich den seit 31.07. in core/trailing.py offenen Punkt
("bisher misst er nur M5").
M5-ATR (heute) H1 +0,219 / PF 1,41 / Worst -2,17
H2 +0,117 / PF 1,25 / Worst -2,23
M15-ATR H1 +0,096 / PF 1,14 / Worst -4,26
H2 +0,019 / PF 1,02 / Worst -6,73
Schlechter in BEIDEN Haelften und das Tail-Risiko verdreifacht sich. Dasselbe
Muster wie bei backtest_sl_basis.py.
Zwei Methoden-Fallen, die die Messung fast entwertet haetten:
1) simulate() normiert R mit DEMSELBEN ATR, den es fuer SL/Trail/TP nutzt. Mit
dem 1,86x groesseren M15-ATR waere dieselbe Dollar-Bewegung ein kleineres R -
die M15-Variante haette mechanisch schlechter ausgesehen. Beide werden
deshalb in M5-Risikoeinheiten zurueckgerechnet.
2) Der erste Lauf sammelte die Entry-Liste ueber exit_fn - das wird von scan()
bei JEDEM Box-Ausbruch gerufen, nicht nur bei den komprimierten: 519 statt
132 Einstiege, also die Kontrollgruppe statt des Squeeze. Behoben ueber den
additiven Rueckruf on_entry(j, d, lvl, atr, komprimiert) in
core/squeeze_scan.py; Bitgleichheit weiter durch tests/test_squeeze_scan.py
belegt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b5eff2a5d6
commit
010007f7a3
@@ -4942,6 +4942,33 @@ Modell schliesst keine Trades.
|
||||
„die Rangfolge ist kaputt" ist **nicht** belegt; belegt ist nur die
|
||||
Basisraten-/Kalibrierungslücke.
|
||||
|
||||
## ⚠⚠ 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.
|
||||
Gemessen (`backtest_exit_atr_tf.py`, 80k M5, feste geteilte Entry-Liste,
|
||||
kanonischer Exit, Echtkosten). Schliesst zugleich den seit dem 31.07. in
|
||||
`core/trailing.py` offenen Punkt („bisher misst er nur M5").
|
||||
| | H1 ØR / PF / Worst | H2 ØR / PF / Worst |
|
||||
|---|---|---|
|
||||
| **M5-ATR (heute)** | **+0,219 / 1,41 / −2,17** | **+0,117 / 1,25 / −2,23** |
|
||||
| M15-ATR (1,86× breiter) | +0,096 / 1,14 / **−4,26** | +0,019 / 1,02 / **−6,73** |
|
||||
**Schlechter in BEIDEN Hälften — und das Tail-Risiko verdreifacht sich.**
|
||||
Dasselbe Muster wie bei `backtest_sl_basis.py`: ein breiterer Exit kauft nichts
|
||||
und kostet Tail. **Der Exit bleibt am M5-ATR.**
|
||||
|
||||
⚠⚠ **METHODEN-FALLE, die die Messung fast entwertet hätte** — zweimal:
|
||||
**(1)** `simulate()` normiert R mit DEMSELBEN ATR, den es für SL/Trail/TP nutzt.
|
||||
Mit dem 1,86× grösseren M15-ATR wäre dieselbe Dollar-Bewegung ein kleineres R —
|
||||
die M15-Variante hätte mechanisch schlechter ausgesehen. Beide werden deshalb in
|
||||
**M5-Risikoeinheiten** zurückgerechnet (`R × ATR_verwendet / ATR_M5`).
|
||||
**(2)** Der erste Lauf sammelte die Entry-Liste über `exit_fn` — das wird von
|
||||
`scan()` bei **JEDEM** Box-Ausbruch gerufen, nicht nur bei den komprimierten:
|
||||
**519 statt 132 Einstiege**, also die Kontrollgruppe statt des Squeeze. Behoben
|
||||
über den additiven Rückruf **`on_entry(j, d, lvl, atr, komprimiert)`** in
|
||||
`core/squeeze_scan.py` (Bitgleichheit weiter durch `tests/test_squeeze_scan.py`
|
||||
belegt). ⚠ **Ein Haken, der mehr liefert als gedacht, ist eine stille
|
||||
Populations-Änderung.**
|
||||
|
||||
## ⚠⚠ SQUEEZE AUF M15 = FÄLLT DURCH — kein M15-Modul gebaut (2026-08-08)
|
||||
|
||||
Anlass: User „baue mir das M15-Empfehlungsmodul". Der Squeeze ist der einzige
|
||||
|
||||
Reference in New Issue
Block a user