Headless FastAPI-Backend (server.py + core/engine.py) mit Mobile-PWA (web/), Strategie-/Backtest-Suite und Doku. Secrets, DB, Logs und Laufzeit-State sind via .gitignore ausgeschlossen; Config-Vorlage: oil_widget_config.ini.example. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
47 lines
2.4 KiB
Markdown
47 lines
2.4 KiB
Markdown
# Exit-Simulation (Befund B: Initial-SL-Breite)
|
||
|
||
`backtest_exit.py` — misst, ob ein **weiterer Initial-SL** netto mehr bringt,
|
||
unter originalgetreuer Nachbildung des Exit-Ablaufs aus `core/trailing.py`.
|
||
|
||
## Mechanik (nachgebildet)
|
||
|
||
- Initial-SL = **X×ATR** (getestete Variable).
|
||
- **Teil-Exit 50 %** bei +1,5×ATR (einmalig).
|
||
- Phasen: **Init** (<0,3×ATR → Initial-SL halten) · **Trail** (SL = HW∓1,5×ATR,
|
||
Breakeven-Floor ab +0,6×ATR) · **Lock** (≥3,5×ATR → enger). Phasen-Ratsche.
|
||
- Pessimistische Intrabar-Annahme: **Gegenlauf vor Mitlauf** → überschätzt den
|
||
Nutzen eines weiten SL NICHT.
|
||
- PnL in **R** (ATR-Vielfache). Fester Init-TP (+3,5×ATR) weggelassen — der
|
||
Runner-Exit läuft praktisch über den Trailing-SL (konservativ, dominant).
|
||
|
||
> Schlüssel: Der weite Init-SL wirkt **nur in der Init-Phase**. Sobald Trailing
|
||
> greift, kappt HW∓1,5×ATR ihn ohnehin. Er schützt also genau die Trades, die
|
||
> **sofort** gegen den Einstieg laufen (die „Frühstopps").
|
||
|
||
## Ergebnis (M5+M30, ~28 Tage, 3585 Signale)
|
||
|
||
| Init-SL | Treffer | Ø-R | Summe-R | PF | Ø-Verlierer | Worst-R | Init-Stops |
|
||
|--------:|--------:|----:|--------:|---:|-----------:|--------:|-----------:|
|
||
| 1,2 | 37 % | 0,169 | 607 | 1,33 | −1,09 | −1,20 | 37 % |
|
||
| 1,5 | 39 % | 0,182 | 654 | 1,33 | −1,29 | −1,50 | 31 % |
|
||
| **2,0** | **43 %** | **0,223** | **798** | **1,39** | −1,56 | −2,00 | 25 % |
|
||
| 2,5 | 46 % | 0,255 | 914 | 1,43 | −1,78 | −2,50 | 21 % |
|
||
| 4,0 | 51 % | 0,308 | 1104 | 1,49 | −2,28 | −4,00 | 14 % |
|
||
|
||
**Befund:** Ø-R, PF, Treffer steigen monoton mit der SL-Breite, Frühstopps sinken.
|
||
**Aber:** der größte Einzelverlust wächst 1:1 (Worst-R = −X) → Tail-/Drawdown-Risiko.
|
||
|
||
## Bewertung
|
||
|
||
- Das aktuelle Band **1,2–1,5×ATR ist zu eng** (deckt sich mit MAE ~1,7×ATR und
|
||
37 %/31 % Frühstopps). Wechsel auf **~2,0×ATR** ist der ausgewogene Punkt:
|
||
+32 % Ø-R, PF 1,33→1,39, Frühstopps 37→25 %, Worst-Case auf 2,0×ATR begrenzt.
|
||
- **Nicht** auf 3–4×ATR: Durchschnitte steigen weiter, aber die großen Einzel-
|
||
verluste treiben Drawdown/Ruin-Risiko; Stichprobe ist zudem ein Trend-Regime
|
||
(„länger halten" bevorzugt).
|
||
- ⚠ **Money-Management:** ein weiterer SL = mehr Risiko/Trade in EUR bei gleicher
|
||
Lotgröße. Für konstantes EUR-Risiko die Lots ~proportional senken (1,5→2,0 ≈ −25 %).
|
||
|
||
## Aufruf
|
||
`python backtest_exit.py [n_bars]` (Default 8000 M5-Bars)
|