fix(rl): gate controller target 0.02→0.10, dead zone 0.5×/2× → 0.2×/5×

Controller oscillated: 3 dones at step 15k spiked EMA above 2×target,
triggering thousands of steps of tightening that killed trades.
Higher target (10% vs 2%) matches the natural trade frequency at
b=16. Wider dead zone (5× above / 0.2× below) prevents single-batch
spikes from triggering tighten/relax oscillation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
jgrusewski
2026-05-25 10:43:09 +02:00
parent fa561b7676
commit cd149cdb5d
2 changed files with 3 additions and 3 deletions

View File

@@ -56,12 +56,12 @@ extern "C" __global__ void rl_gate_threshold_controller(
float frd_long = isv[RL_FRD_GATE_THR_LONG_INDEX]; float frd_long = isv[RL_FRD_GATE_THR_LONG_INDEX];
float frd_short = isv[RL_FRD_GATE_THR_SHORT_INDEX]; float frd_short = isv[RL_FRD_GATE_THR_SHORT_INDEX];
if (dones_ema < target * 0.5f) { if (dones_ema < target * 0.2f) {
// Trades well below target — relax gates. // Trades well below target — relax gates.
conf_thr *= adjust; conf_thr *= adjust;
frd_long *= adjust; frd_long *= adjust;
frd_short *= adjust; frd_short *= adjust;
} else if (dones_ema > target * 2.0f) { } else if (dones_ema > target * 5.0f) {
// Trades well above target — tighten gates. // Trades well above target — tighten gates.
conf_thr /= adjust; conf_thr /= adjust;
frd_long /= adjust; frd_long /= adjust;

View File

@@ -1616,7 +1616,7 @@ impl IntegratedTrainer {
(crate::rl::isv_slots::RL_PI_SAMPLE_P_MIN_INDEX, 0.015), (crate::rl::isv_slots::RL_PI_SAMPLE_P_MIN_INDEX, 0.015),
(crate::rl::isv_slots::RL_OUTCOME_ALPHA_INDEX, 0.1), (crate::rl::isv_slots::RL_OUTCOME_ALPHA_INDEX, 0.1),
(crate::rl::isv_slots::RL_GATE_WARMUP_STEPS_INDEX, 10000.0), (crate::rl::isv_slots::RL_GATE_WARMUP_STEPS_INDEX, 10000.0),
(crate::rl::isv_slots::RL_GATE_DONES_TARGET_INDEX, 0.02), (crate::rl::isv_slots::RL_GATE_DONES_TARGET_INDEX, 0.10),
(crate::rl::isv_slots::RL_GATE_CONF_MIN_INDEX, 0.0), (crate::rl::isv_slots::RL_GATE_CONF_MIN_INDEX, 0.0),
(crate::rl::isv_slots::RL_GATE_CONF_MAX_INDEX, 0.50), (crate::rl::isv_slots::RL_GATE_CONF_MAX_INDEX, 0.50),
(crate::rl::isv_slots::RL_GATE_FRD_MIN_INDEX, 0.0), (crate::rl::isv_slots::RL_GATE_FRD_MIN_INDEX, 0.0),