From 7923d6ff24cf14971f89504ee48061713390ba5b Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Mon, 20 Apr 2026 08:59:43 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20ISV-adaptive=20micro-reward=20weights?= =?UTF-8?q?=20=E2=80=94=20regime=20routing=20adjusts=20reward=20compositio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Volatile regime → price confirmation weighted higher (momentum matters) Stable regime → book aggression + hold quality weighted higher Regime transition → hold quality drops (don't hold through shifts) Uses ISV signals[11] (regime_stability) and signals[2] (volatility) already available in env_step_batch. Zero new parameters — the temporal attention pipeline drives reward composition through ISV routing. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/cuda_pipeline/experience_kernels.cu | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/crates/ml/src/cuda_pipeline/experience_kernels.cu b/crates/ml/src/cuda_pipeline/experience_kernels.cu index 6ddc1ef39..657ee2d88 100644 --- a/crates/ml/src/cuda_pipeline/experience_kernels.cu +++ b/crates/ml/src/cuda_pipeline/experience_kernels.cu @@ -1789,11 +1789,22 @@ extern "C" __global__ void experience_env_step( hold_quality = sign_pos * hold_return / fmaxf(atr_pct, 1e-6f); } - /* Composite quality */ + /* ISV-adaptive reward weights: regime routing adjusts micro-reward composition. + * Volatile regime → weight momentum (price_confirm) higher. + * Stable regime → weight book aggression + hold quality higher. + * Regime transition (low stability) → reduce hold quality (don't hold through shifts). */ + float regime_stab = (isv_signals_ptr != NULL) ? isv_signals_ptr[11] : 0.5f; + float volatility = (isv_signals_ptr != NULL) ? isv_signals_ptr[2] : 0.5f; + + float w_price = price_confirm_weight * (0.5f + 0.5f * volatility); + float w_book = book_aggression_weight * (0.5f + 0.5f * regime_stab); + float w_hold = hold_quality_weight * regime_stab; + + /* Composite quality — regime-adaptive */ float quality = flow_momentum * (1.0f + vol_informed) - + price_confirm_weight * price_confirm - + book_aggression_weight * sign_pos * book_aggression - + hold_quality_weight * hold_quality + + w_price * price_confirm + + w_book * sign_pos * book_aggression + + w_hold * hold_quality - spread_penalty; reward = micro_reward_scale * tanhf(quality / micro_reward_temp); } else if (!segment_complete && fabsf(position) > 0.001f) {