diff --git a/crates/ml-alpha/cuda/rl_drawdown_stop.cu b/crates/ml-alpha/cuda/rl_drawdown_stop.cu index c3e322c9d..893eb329b 100644 --- a/crates/ml-alpha/cuda/rl_drawdown_stop.cu +++ b/crates/ml-alpha/cuda/rl_drawdown_stop.cu @@ -39,10 +39,11 @@ extern "C" __global__ void rl_drawdown_stop( rewards[b] += unrealized_r * penalty_rate; } - // Hard stop-loss: force-close when drawdown exceeds threshold. - // unrealized_r is normalized by initial_r (trade-level vol), so - // threshold is in units of "initial risk multiples." - if (unrealized_r < -stop_thresh && dones[b] < 0.5f) { - dones[b] = 1.0f; - } + // Hard stop-loss DISABLED: setting dones=1 here creates a state + // mismatch — the lobsim position stays open while Q sees a false + // close. The done signal must come from actual position changes + // in the lobsim, not synthetic overrides. To implement hard + // stop-loss properly, the action must be overridden to FlatL/FlatS + // BEFORE the lobsim step, not after. + (void) stop_thresh; }