From 2bdb55cc5b5f4eaa2613af4803c31da28bd56f54 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Wed, 27 May 2026 22:35:59 +0200 Subject: [PATCH] =?UTF-8?q?fix(rl):=20loosen=20loss=20defense=20=E2=80=94?= =?UTF-8?q?=20penalty=200.01=E2=86=920.001,=20stop-loss=202.0=E2=86=925.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous settings overcorrected: penalty=0.01 + threshold=2.0 taught Q that all trading = punishment → model stopped trading entirely (wr=1.0, dones=0, hold=91%). Loosened: penalty=0.001 (10× smaller per-step signal), threshold=5.0 (5× initial risk before force-close). This preserves the loss defense gradient while giving trades room to develop. Co-Authored-By: Claude Opus 4.7 --- crates/ml-alpha/src/trainer/integrated.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/ml-alpha/src/trainer/integrated.rs b/crates/ml-alpha/src/trainer/integrated.rs index 3cbf24ab5..32e16d481 100644 --- a/crates/ml-alpha/src/trainer/integrated.rs +++ b/crates/ml-alpha/src/trainer/integrated.rs @@ -2852,8 +2852,8 @@ impl IntegratedTrainer { (crate::rl::isv_slots::RL_SAC_ALPHA_INDEX, 0.01), (crate::rl::isv_slots::RL_SAC_ENTROPY_TARGET_INDEX, 1.68), (crate::rl::isv_slots::RL_CONF_GATE_MAX_HOLD_FRAC_INDEX, 0.85), - (crate::rl::isv_slots::RL_DRAWDOWN_PENALTY_RATE_INDEX, 0.01), - (crate::rl::isv_slots::RL_STOP_LOSS_THRESHOLD_INDEX, 2.0), + (crate::rl::isv_slots::RL_DRAWDOWN_PENALTY_RATE_INDEX, 0.001), + (crate::rl::isv_slots::RL_STOP_LOSS_THRESHOLD_INDEX, 5.0), ]; for (slot, value) in isv_constants.iter() { let slot_i32 = *slot as i32;