diff --git a/crates/ml/src/cuda_pipeline/gpu_backtest_evaluator.rs b/crates/ml/src/cuda_pipeline/gpu_backtest_evaluator.rs index 68bda2efa..0c561fcd8 100644 --- a/crates/ml/src/cuda_pipeline/gpu_backtest_evaluator.rs +++ b/crates/ml/src/cuda_pipeline/gpu_backtest_evaluator.rs @@ -1205,7 +1205,11 @@ impl GpuBacktestEvaluator { } // ── Phase 4: Greedy action selection on chunked Q-values ───────── - // Kernel signature: (q_values, out_actions, rng_states, out_q_gaps, epsilon, N, b0, b1, b2, q_gap_threshold) + // Kernel signature: (q_values, out_actions, rng_states, out_q_gaps, epsilon, N, + // b0, b1, b2, q_gap_threshold, portfolio_states, min_hold_bars, max_position) + let null_portfolio: u64 = 0; // NULL — backtest has no hold enforcement yet + let eval_min_hold: i32 = 0; // 0 = disabled during evaluation + let eval_max_pos: f32 = 0.0; unsafe { self.stream .launch_builder(as_kernel) @@ -1219,6 +1223,9 @@ impl GpuBacktestEvaluator { .arg(&b1) .arg(&b2) .arg(&self.q_gap_threshold) + .arg(&null_portfolio) // portfolio_states (NULL — no hold masking in eval) + .arg(&eval_min_hold) // min_hold_bars (0 = disabled) + .arg(&eval_max_pos) // max_position (unused when disabled) .launch(launch_cfg) .map_err(|e| MLError::ModelError(format!( "chunked action_select chunk_start={chunk_start}: {e}"