trading-system-docs/notes/trading/second-brain/Stop_Loss_Fix_2026-08-18.md

42 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Echter Stop-Loss + Risiko-Sizing — Fix 18.08.2026
## Problem
Der Stop-Loss war bisher **nur ein lokaler Wert** in `trades.json`. Der Monitor prüfte
**stündlich** und verkaufte dann per Market-Order. Bei volatilen Pennystocks (MXL, ACRS,
ULCC, XRX) rutschte der Kurs in der Zwischenzeit deutlich unter den SL → Verluste von
7 bis 10 % statt der konfigurierten 8 %. Realisierte Rendite der Periode: **24,33 €**.
Zusätzlich war das Sizing fix auf 50 €/Position → bei weitem SL (8 %) ein Verlust von
~67 € (≈12 % des Positionsbudgets), statt der 2 %-Regel.
## Fix A — Echter Stop-Loss bei T212
- Neuer Endpunkt: `POST /api/v0/equity/orders/stop` (negative Menge = Sell-Stop)
- `place_stop()` + `cancel_stop()` in `t212_resilience.py`
- `ensure_stop()` in `t212_monitor.py`: platziert/aktualisiert den echten Stop bei
Fill, Breakeven (+3 %), Trailing (+5 %) und bei jedem Monitor-Lauf
- **Idempotent:** speichert `stop_order_id` + `stop_order_price` in `trades.json`
kein Cancel+Neu-Churn bei jedem Lauf
- **Rate-Limit-Pacing:** 1 Stop-Request / 2s (T212-Limit)
- **Konservativ bei 429:** leere Live-Stop-Liste → nichts unternehmen (kein Churn)
## Fix B — Risiko-basiertes Sizing
- `calc_risk()` nutzt jetzt `risk_per_trade_pct (2 %)` × Gesamtkapital statt fix 50 €
- Verlust pro Trade in € gedeckelt, egal wie weit der SL steht
- "Trades atmen lassen" (weiter SL) → Position wird automatisch kleiner
## Verifiziert (live gegen T212-API, 18.08.2026)
4 echte Stop-Orders aktiv, keine Duplikate, zweiter Monitor-Lauf = 0 neue Orders:
| Position | Stop | Order-ID |
|----------|------|----------|
| LFST | 11,95 € | 55909740706 |
| TRGP | 271,78 € | 55909740714 |
| WEAV | 6,72 € | 55909740725 |
| UMAC | 28,55 € | 55909740772 |
## Backups
- `t212_monitor.py.bak_*` (mehrere Stände)
- `t212_resilience.py.bak_*`
## Status
✅ Aktiv — Daemon liest Dateien bei jedem Lauf frisch, kein Neustart nötig.