--- knowledge_schema: 1 id: object/91c7786c-cffa-1197-0837-e55a87cdc161 type: design role: design representation: source state: current --- # trend_pullback_v1.1 — Spezifikation > Status: **IMPLEMENTIERT + DEPLOYT** (`backtesting:0.1.2`, Modul-12), V1-Kompatibilitätsmodus bitgenau. > Erstellt: 20.08.2026 (Rain Ocampo) · Aktualisiert: 20.08.2026 ## 1. Motivation Die Produktions-Strategie `trend_pullback_v1` (Modul-05/12) ist unter den **unveränderten** produktiven Regime-Schwellen fachlich widersprüchlich (messbar): Ein TREND_UP-Regime verlangt Volatilität, der Pullback `close < EMA20` verlangt ein flaches Plateau. Im 60-Bars-Produktionsfenster (`regime_lookback=60`) schneiden sich `TREND_UP` und `close95% der `close ema_slow_l) UND adx_l >= adx_trend_threshold trend_dir = DOWN wenn (ema_fast_l < ema_slow_l) UND adx_l >= adx_trend_threshold sonst: kein Trade # KEIN atr_ratio-Check für die Richtung # --- Pullback-Timing (ATR-Band um EMA20) --- atr_prev = ATR(prev_highs, prev_lows, prev_closes, atr_period) ema20 = EMA20(prev_closes) pullback_limit = ema20 + pullback_band_atr * atr_prev # LONG pullback_limit = ema20 - pullback_band_atr * atr_prev # SHORT LONG wenn trend_dir==UP UND last_close>sma200 UND last_close < pullback_limit UND last_close>prev_close UND swing_low=min_risk_reward SHORT wenn trend_dir==DOWN UND last_close pullback_limit UND last_closelast_close UND rr>=min_risk_reward ``` - `break_high` entfällt (Befund: `prev_high ≥ prev_close` ⇒ `break_high ⇒ close_up`; bleibt als `close_up`/`close_down` erhalten — nicht restriktiv). - Deterministisch: reine Listen-Berechnung, kein Zufall, kein Hidden-State. ## 4. Parameter-Tabelle | Parameter | V1 produktiv (Code) | V1.1 Default | Min | Max | Zweck | V1.1 Optimierbar? | |---|---|---|---|---|---|---| | `pullback_band_atr` | — (strikt `< EMA20`) | **0.35** | 0.0 | 1.0 | ATR-Band um EMA20. `0.0`=strikt V1. | **Ja** | | `atr_period` | 14 | **14** | 14 (fix) | 14 (fix) | ATR-Fenster für Pullback-Band | Nein (fix) | | `trend_regime_window` | 60 (geteilter 60er) | **200** | 60 | 500 | Fenster für strategie-internes Trend-Regime | **Ja** | | `regime_vol_override` | true (geteilt) | **false** | — | — | false=V1.1 strategie-eigene Richtung | Nein (fix) | | `rr_multiplier` | 2.0 | **2.0** | 1.0 | 4.0 | Target = Entry + rr_multiplier×Risiko | **Ja** | | `min_risk_reward` | 1.0 | **1.0** | 1.0 (min) | 3.0 | Mindest-RR; keine Kandidaten mit Chance/Risiko <1 | Nein (fix) | **Zusätzliche Trend-Parameter (produktiv, V1.1 fix — NICHT von Modul-13 optimieren):** | Parameter | V1 produktiv (Code) | V1.1 | Zweck | |---|---|---|---| | `adx_trend_threshold` | **20.0** (config.py:54) | fix 20.0 | ADX-Schwelle für echten Trend | | `adx_period` | **14** (config.py:50) | fix 14 | ADX-Indikatorfenster | | `ema_fast_period` | **20** (config.py:36) | fix 20 | Fast-EMA (Strategie-Pullback-Basis) | | `ema_slow_period` | **30** (config.py:47) | fix 30 | Slow-EMA (Regime-Flanke) | ## 5. V1-Kompatibilitätsmodus (bitgenau V1) ``` pullback_band_atr = 0.0 regime_vol_override = true trend_regime_window = 60 + alle übrigen V1-Parameter auf produktiven Defaults ``` ⇒ muss V1 **bitgenau** reproduzieren (Rückwärtskompatibilität; Backtest ohne `strategy_params` bleibt fachlich identisch). **E2E-verifiziert**: V1-Kompatmodus LONG+SHORT bitgenau (net 200.0, target r=2.0). ## 6. Abgrenzung / No-Go - **Keine KI/LLM** in V1.1, keine Live-Orders. - Produktions-Regime-Schwellen (`adx_trend_threshold=20`, `trend_min_ema_gap=0.02`, `high_vol_atr_ratio=0.03`, `low_vol_atr_ratio=0.008`) werden **nicht verändert**. - `atr_period`, ADX-/EMA-Perioden, `min_risk_reward` werden in dieser ersten Optimierungsrunde **nicht** über Modul-13 optimiert. --- ## Geändert ``` Geändert von: Rain Ocampo Datum: 20.08.2026 Grund: V1.1-Spec von ENTWURF auf DEPLOYT aktualisiert (backtesting:0.1.2); V1-Kompatmodus bitgenau E2E-verifiziert. ```