diff --git a/crates/ml/src/cuda_pipeline/gpu_experience_collector.rs b/crates/ml/src/cuda_pipeline/gpu_experience_collector.rs index d1e56dfba..0b927b1c8 100644 --- a/crates/ml/src/cuda_pipeline/gpu_experience_collector.rs +++ b/crates/ml/src/cuda_pipeline/gpu_experience_collector.rs @@ -237,8 +237,6 @@ pub struct ExperienceCollectorConfig { pub dsr_eta: f32, /// N-step returns lookahead (1 = standard TD, 3-5 typical for Rainbow DQN) pub n_steps: i32, - /// Enable action masking: filters invalid exposure actions in the GPU kernel. - pub enable_action_masking: bool, /// Holding cost rate per bar per unit position. Continuous inventory penalty. pub holding_cost_rate: f32, /// Bars threshold for churn penalty. Trades within this window get graduated penalty. @@ -370,7 +368,6 @@ impl Default for ExperienceCollectorConfig { q_gap_threshold: 0.0, dsr_eta: 0.01, n_steps: 1, - enable_action_masking: false, holding_cost_rate: 0.00000052, // ~0.52 bps / 100 bars churn_threshold: 10.0, churn_penalty_scale: 0.001, diff --git a/crates/ml/src/trainers/dqn/trainer/constructor.rs b/crates/ml/src/trainers/dqn/trainer/constructor.rs index 6a11c5769..83bde5e54 100644 --- a/crates/ml/src/trainers/dqn/trainer/constructor.rs +++ b/crates/ml/src/trainers/dqn/trainer/constructor.rs @@ -377,7 +377,6 @@ impl DQNTrainer { }; // Wave 16 Portfolio Features: action masking and entropy regularization always active - let enable_action_masking = true; let max_position = hyperparams.max_position_absolute; // BLOCKER #2: Use hyperopt-tunable position limit // Entropy regularization: SAC-style computed directly on Q-values in DQN::compute_loss_internal @@ -572,8 +571,7 @@ impl DQNTrainer { training_sharpe_ema: 0.0, training_sharpe_ema_initialized: false, - // Wave 16 Portfolio Features - enable_action_masking, + // Wave 16 Portfolio Features (action masking always active) max_position, current_epoch: 0, multi_asset_portfolio, diff --git a/crates/ml/src/trainers/dqn/trainer/mod.rs b/crates/ml/src/trainers/dqn/trainer/mod.rs index 1ababcb82..13feca381 100644 --- a/crates/ml/src/trainers/dqn/trainer/mod.rs +++ b/crates/ml/src/trainers/dqn/trainer/mod.rs @@ -229,9 +229,7 @@ pub struct DQNTrainer { /// Whether training_sharpe_ema has been initialized. pub(crate) training_sharpe_ema_initialized: bool, - // Wave 16 Portfolio Features - /// Enable action masking (filters invalid actions before Q-value computation) - pub enable_action_masking: bool, + // Wave 16 Portfolio Features (action masking is always active). /// Maximum position size for action masking (default: 2.0) pub max_position: f64, /// Current epoch (for Q-gap warm-up ramp) diff --git a/crates/ml/src/trainers/dqn/trainer/training_loop.rs b/crates/ml/src/trainers/dqn/trainer/training_loop.rs index 877abdd45..2f1a78b9c 100644 --- a/crates/ml/src/trainers/dqn/trainer/training_loop.rs +++ b/crates/ml/src/trainers/dqn/trainer/training_loop.rs @@ -1260,7 +1260,6 @@ impl DQNTrainer { epsilon, gamma: self.hyperparams.gamma as f32, max_position: self.max_position as f32, - enable_action_masking: self.enable_action_masking, curiosity_scale: 1.0, order_credit_weight: self.hyperparams.order_credit_weight as f32, risk_efficiency_weight: self.hyperparams.risk_efficiency_weight as f32,