# CryptoTradingBot Gesamtstrategie Doctrine

Status: gebaut als zentrale, side-effect-freie Policy in `src/strategies/global_strategy_policy.py`.

## Ziel

Der Bot soll nicht mehr einfach viele Signale handeln, sondern nur dann einen Trade Richtung Tiny-Live zulassen, wenn **Edge, Marktregime, Kosten, Timing und Safety** gleichzeitig grün sind.

## Harte Learnings aus bisherigen Tests

1. **Negative Live-Historie ist Edge-Failure, kein Sizing-Problem.**
   - Kurze Holds und schnelle Scalp-/RSI-Churn-Muster bleiben blockiert.
2. **Anti-Chase ist Pflicht.**
   - Kein Breakout-Entry nach überdehntem Move ohne Retest/Reclaim.
3. **Kosten-Hurdle ist Pflicht.**
   - Erwarteter Move muss mindestens 4× realistische Roundtrip-Kosten erreichen.
4. **Copy ist Research/Confirmation, nicht Executor.**
   - Bei 0 allowed Copy-Signalen bleibt direkte Copy-Ausführung blockiert.
5. **Paper muss simulator-sane sein.**
   - Keine Promotion aus Replay allein oder synthetischen Instant-Wins.
6. **Live nur tiny, 1x, stop-first.**
   - Max 1 initiale Position, reduceOnly Stop nach Fill, harte Loss Gates.

## Policy Gates

Ein Kandidat wird nur `tiny_live_preview_ready`, wenn alle Gates grün sind:

| Gate | Regel |
|---|---|
| Market Regime | Long nur bei BTC+ETH bullish; Short nur bei BTC+ETH bearish; choppy = no trade |
| Anti-Chase | Retest/Reclaim muss bestätigt sein |
| Kosten | Expected move vs cost >= 4 |
| Promotion | >=30 closed Paper/Shadow Trades, Total PnL > 0, last 20 > 0 |
| Qualität | Winrate >=45% oder Profit Factor >=1.25 |
| Konzentration | Top-Coin Share <=35% |
| Scalping | Short-scalp Anteil <=25% |
| Simulator | sanity ok, replay-only nicht promotable |
| Safety | Reconcile clean, Stops bestätigt, Alerts bestätigt, Kill-switch aus |
| Tiny Live | Leverage <=1x, max 1 initiale offene Position |

## Copy-Track Entscheidung

Die aktuelle Copy Observation bleibt wertvoll, aber direkte Copy-Ausführung wird blockiert, solange:

- 7d Run unvollständig ist,
- allowed Copy-Signale fehlen,
- keine Shadow-PnL/Slippage/Exit-Daten vorliegen.

Copy wird daher künftig als **Confirmation-Layer** genutzt, nicht als alleiniger Trade-Auslöser.

## Hauptkandidat

`v76 strict/base` bleibt Research-/Candidate-Basis, aber nur in einer strengeren Variante:

- fee-aware,
- anti-chase,
- retest/reclaim,
- live-parity paper accounting,
- simulator sanity,
- positive fresh paper/shadow sample.

## Implementierter Code

- `src/strategies/global_strategy_policy.py`
  - `MarketRegimeContext`
  - `CopyObservationEvidence`
  - `PromotionEvidence`
  - `StrategyCandidate`
  - `GlobalStrategyContext`
  - `evaluate_global_strategy(...)`

## Tests

- `tests/test_global_strategy_policy.py`

Abgedeckt:

- direkte Copy-Ausführung blockiert bei 0 allowed Signalen,
- Long blockiert in bearish/choppy regime,
- Kosten-Hurdle/Anti-Chase/Retest zwingend,
- Promotion- und Safety-Gates blockieren live,
- tiny-live-preview nur bei komplett grünen Gates.

## Umgesetzter nächster Schritt

`paper_scorecard_report.py` ist jetzt an die globale Policy angeschlossen. Jede Paper-Strategie erhält zusätzlich eine `global_policy=...` Zeile mit empfohlenem Modus und Blockgründen. Ohne explizite Safety-Evidence fallen Reconcile/Stops/Alerts geschlossen aus.

## Nächster operativer Schritt

1. `v76_anti_chase_live_candidate` direkt als fokussierte Paper-Runtime starten/auffüllen.
2. Copy-Shadow v2 bauen: hypothetische PnL, Exit, Fees, Slippage, Leader Score.
3. Optional `strategy_policy_context.json` nur nach geprüften Safety-Gates schreiben.
4. Tiny-live erst starten, wenn Policy grün und Sir explizit freigibt.
