diff --git a/crates/ml-alpha/cuda/rl_reward_clamp_controller.cu b/crates/ml-alpha/cuda/rl_reward_clamp_controller.cu index 99f93425a..ea90ca51d 100644 --- a/crates/ml-alpha/cuda/rl_reward_clamp_controller.cu +++ b/crates/ml-alpha/cuda/rl_reward_clamp_controller.cu @@ -300,13 +300,14 @@ extern "C" __global__ void rl_reward_clamp_controller( // concern is addressed by the slow atom-span EWMA (α=0.001, // half-life ~700 steps) at Step 5 below — atom span DAMPS the // WIN→atom_span→Q→… loop sufficiently. - if (ema_new > 0.0f) { - const float win_eff = fmaxf(MIN_WIN, margin * ema_new); - const float ratio_now = isv[RL_REWARD_CLAMP_RATIO_INDEX]; - const float loss_eff = ratio_now * win_eff; - isv[RL_REWARD_CLAMP_WIN_INDEX] = win_eff; - isv[RL_REWARD_CLAMP_LOSS_INDEX] = loss_eff; - } + // Static WIN=1.0 / LOSS=3.0 (dd049d9a4 baseline wr=0.567). + // Adaptive WIN/LOSS overrides killed the wr signal (observed + // 2026-05-28: wr=0.27 plateau across multiple runs). + // The done-gated EMAs (slots 585/586) keep collecting trade + // magnitudes for diagnostic continuity, but the clamp bounds + // remain at their bootstrap values. Margin/ratio controllers + // run but their outputs are NOT written to LOSS/WIN slots. + (void) margin; // ── Step 5: C51 atom span adaptation from observed reward EMAs. ── //