# Risiko-Management (Positionsgröße & Stops)

Stand: 2026-07-08.

## Positionsgröße

> **Aktiv (User-Vorgabe): margin-basiert 95 %.** `calc_lots` setzt die Lots auf
> ~95 % der freien Margin (`[trading] margin_buffer_pct=95`, `risk_pct=0`). ⚠ Das
> ist faktisch All-in: **~7 %+ Konto-Risiko pro Trade** (gemessen
> `backtest_sizing.py`: 36 % Wahrscheinlichkeit eines >80 %-Drawdowns). Bewusste
> Entscheidung — 2026-07-06 kurz auf risiko-basiert 1,5 % gestellt, dann auf
> 95 % Margin zurück. Der harte Broker-SL wird trotzdem immer gesetzt.

Das **risiko-basierte** Sizing (`calc_lots_risk`) ist gebaut, gemessen und
jederzeit aktivierbar (`[trading] risk_pct = 1.5` + Restart). Es wählt die Lots
so, dass der **Verlust beim Initial-SL ≈ `risk_pct` % der Equity** ist:

```
val_per_price = tick_value / tick_size          # € je 1.0 Preis je 1 Lot
lots = (Equity × risk_pct/100) / (SL_Distanz × val_per_price)
```

- **SL zuerst:** `_send_locked` berechnet erst den SL (`_calc_sl_tp`, Band
  1,8–2,2×ATR), dann die Lots aus der **echten** SL-Distanz.
- **Margin bleibt Deckel:** nie mehr Lots als die freie Margin (× Buffer) erlaubt.
- **Fallback:** liefert `calc_lots_risk` 0 (fehlende Daten), greift `calc_lots`.
- Vergleich (102-€-Konto, SL 2×ATR≈0,53): 95 % Margin ≈ 0,15 L → −7 € (6,8 %)
  am SL · 1,5 % Risiko ≈ 0,03 L → −1,40 € (1,4 %).

## Stops & Auto-Close

- **Harter Broker-SL auf jeder Bot-Order** (`req["sl"]`) — server-seitig, wirkt
  auch bei Bot-/Verbindungsausfall. Band 1,8–2,2×ATR (Ziel 2,0; gemessen
  `backtest_exit.py`); Breakeven ab +1,3×ATR; Trailing Init/Trail/Lock
  (Parameter gemessen optimal, `backtest_trailing.py`; ATR-Floor 0,06,
  `backtest_atrfloor.py`).
- **Adoptierte Fremd-Trades** (in MT5 manuell eröffnet) bekommen beim Erkennen
  einen **Schutz-SL** nachgerüstet (`_refresh_locked`), falls keiner gesetzt ist.
- **Notfall-Stop (P&L ≤ −Wert) + Gewinn-Ziel (P&L ≥ +Wert):** server-seitiger
  Auto-Close (`engine._check_auto_close`, 1-s-Loop, wirkt bei gesperrtem Handy).
  Notfall-Stop wird beim Öffnen automatisch auf den letzten Wert armiert
  (Start `[trading] auto_emergency_loss`, Default 10 — ⚠ bei ~100-€-Konto sind
  10 € ≈ 10 % Equity, das ist der faktische Risiko-Deckel). „aus"-Button
  deaktiviert auch den Auto-Arm.
- **SL/TP sind im Snapshot + Web sichtbar** (Position-Kachel) — fehlender SL wird
  rot „⚠ kein SL gesetzt!" markiert.

## Bewusst NICHT umgesetzt

- **Tagesverlust-Schalter / Circuit Breaker:** vom User **abgelehnt** — nicht
  einbauen (s. CLAUDE.md).
- **Signal-Filter als Risiko-Schutz:** 5× gemessen wirkungslos/schädlich
  (Winkel, HTF-Winkel, Konfluenz-Strafe, Gegen-H1-Reversal, ER-Chop-Gate).
  Schutz läuft über Stops + Sizing, nicht über das Signal.
