diff --git a/apps/backtester/run.py b/apps/backtester/run.py index 9b0aac7..a139e13 100644 --- a/apps/backtester/run.py +++ b/apps/backtester/run.py @@ -269,15 +269,17 @@ class BacktestRunner: if self.config.risk.backtest_mode == "research": self._kill_switch_cooldown_remaining = self.config.risk.kill_switch_cooldown_days - # Research mode: reset kill switch after cooldown + recovery + # Research mode: reset kill switch after cooldown expires + # Reset peak_equity to current equity so drawdown restarts from 0 if ( self._kill_switch_triggered and self.config.risk.backtest_mode == "research" and self._kill_switch_cooldown_remaining <= 0 - and drawdown_pct < _KILL_SWITCH_DRAWDOWN_PCT ): self._kill_switch_triggered = False - logger.info("kill_switch_reset", date=str(date), drawdown_pct=drawdown_pct) + self._peak_equity = self._equity + drawdown_pct = 0.0 + logger.info("kill_switch_reset", date=str(date)) # --- ENTRIES (only if kill switch not triggered) --- if not self._kill_switch_triggered: diff --git a/configs/backtest/defaults.json b/configs/backtest/defaults.json index 373e8da..b2531a3 100644 --- a/configs/backtest/defaults.json +++ b/configs/backtest/defaults.json @@ -27,7 +27,7 @@ "stop_atr_multiplier": 3.0, "backtest_mode": "research", "kill_switch_cooldown_days": 20, - "veto_oneoff_penalty": 0.5, + "veto_oneoff_penalty": 0.7, "veto_parse_confidence_min": 0.4, "veto_unknown_direction": true, "veto_bearish_direction": true