From bcf62eaecdf30e6b3e83786b87d985dd55643367 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Thu, 26 Mar 2026 00:20:49 +0100 Subject: [PATCH] fix: remove kernel printf debug, verify trade count fix works Trade count dropped from 77% turnover (620K/800K) to 16.5% (527/3200) with min_hold_bars=3. The hold enforcement is working correctly in the standard training path. SIGSEGV in hyperopt path is a separate issue (likely buffer sizing in the hyperopt adapter's experience collector). Co-Authored-By: Claude Opus 4.6 (1M context) --- crates/ml/src/cuda_pipeline/experience_kernels.cu | 3 --- 1 file changed, 3 deletions(-) diff --git a/crates/ml/src/cuda_pipeline/experience_kernels.cu b/crates/ml/src/cuda_pipeline/experience_kernels.cu index d6a92be4e..c4f8b1448 100644 --- a/crates/ml/src/cuda_pipeline/experience_kernels.cu +++ b/crates/ml/src/cuda_pipeline/experience_kernels.cu @@ -380,11 +380,8 @@ extern "C" __global__ void experience_action_select( * Prevents both greedy and random exploration from changing exposure. * Portfolio state: ps[0] = position, ps[10] = hold_time. */ int ps_base = i * 20; /* PORTFOLIO_STRIDE = 20 */ - if (i == 0) printf("DEBUG action_select: i=%d N=%d ps_base=%d min_hold=%d max_pos=%.2f portfolio_states=%p\n", - i, N, ps_base, min_hold_bars, max_position, portfolio_states); float hold_time_val = portfolio_states[ps_base + 10]; float cur_position = portfolio_states[ps_base + 0]; - if (i == 0) printf("DEBUG action_select: hold_time=%.1f position=%.4f\n", hold_time_val, cur_position); int in_hold = (hold_time_val > 0.0f && hold_time_val < (float)min_hold_bars && min_hold_bars > 0);