diff --git a/crates/ml/src/cuda_pipeline/gpu_backtest_evaluator.rs b/crates/ml/src/cuda_pipeline/gpu_backtest_evaluator.rs index 74ba72baf..f3c41baa7 100644 --- a/crates/ml/src/cuda_pipeline/gpu_backtest_evaluator.rs +++ b/crates/ml/src/cuda_pipeline/gpu_backtest_evaluator.rs @@ -191,6 +191,8 @@ pub struct GpuBacktestConfig { /// CME initial margin ~6% of notional for equity index futures. /// Default: 0.06. pub margin_pct: f32, + /// Trading days per year for annualization. CME equity/futures: 252. Crypto: 365. + pub trading_days_per_year: f32, } impl Default for GpuBacktestConfig { @@ -205,6 +207,7 @@ impl Default for GpuBacktestConfig { ofi_dim: 0, bars_per_day: 390.0, // 1-minute bar frequency (6.5h × 60min) min_hold_bars: 5, + trading_days_per_year: 252.0, margin_pct: 0.06, } } @@ -577,7 +580,7 @@ impl GpuBacktestEvaluator { feature_dim, portfolio_dim: PORTFOLIO_AND_MTF_DIM, state_dim, - annualization_factor: (config.bars_per_day * 252.0).sqrt(), + annualization_factor: (config.bars_per_day * config.trading_days_per_year).sqrt(), config, forward_actions_buf, cublas_forward: None, diff --git a/crates/ml/src/hyperopt/adapters/dqn.rs b/crates/ml/src/hyperopt/adapters/dqn.rs index 99197d57c..3b25ef679 100644 --- a/crates/ml/src/hyperopt/adapters/dqn.rs +++ b/crates/ml/src/hyperopt/adapters/dqn.rs @@ -1766,6 +1766,8 @@ impl DQNTrainer { // directly, eliminating the Candle narrow+cat closure. ofi_dim: if ofi_enabled { 8 } else { 0 }, min_hold_bars: internal_trainer.hyperparams().min_hold_bars as i32, + bars_per_day: internal_trainer.hyperparams().bars_per_day as f32, + trading_days_per_year: internal_trainer.hyperparams().trading_days_per_year as f32, ..Default::default() };