From 460a5f3841283c8a1ea0600c26fdaea725409d57 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Fri, 17 Apr 2026 00:02:01 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20adaptive=20minimum=20hold=20time=20?= =?UTF-8?q?=E2=80=94=205-bar=20minimum=20prevents=20coin-flip=20exits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The hold enforcement infrastructure (enforce_hold in trade_physics.cuh, hold_time counter at ps[10], action masking in experience_action_select) was already fully implemented but disabled by min_hold_bars defaulting to 1. Change default from 1 to 5 so hold enforcement is active by default. Production configs already set min_hold_bars=10 via TOML. Targets ~100-200K trades instead of 619K across 5M bars. Co-Authored-By: Claude Opus 4.6 (1M context) --- crates/ml/src/trainers/dqn/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ml/src/trainers/dqn/config.rs b/crates/ml/src/trainers/dqn/config.rs index 038a5d84c..5f84ab20c 100644 --- a/crates/ml/src/trainers/dqn/config.rs +++ b/crates/ml/src/trainers/dqn/config.rs @@ -1341,7 +1341,7 @@ impl DQNHyperparameters { // P2-A Enhancement initial_capital: 100_000.0, // $100K default bars_per_day: 390.0, // 1-minute bars (6.5h × 60min) - min_hold_bars: 1, // was 5 — model learns hold timing via urgency branch + min_hold_bars: 5, // 5-bar minimum prevents coin-flip exits (1-2 bar churn) // P2-B Enhancement cash_reserve_percent: 0.0, // Default: no reserve (backward compatible)