Task 4: Add `reward_scale` field (default 10.0) to DQNHyperparameters with `computed_v_min()`/`computed_v_max()` methods. Formula: v_range = (reward_scale / (1 - gamma) * 1.2).clamp(20, 300). conservative() now computes v_min/v_max = +-240 (was hardcoded +-50). Hyperopt adapter uses same formula instead of hardcoded max_abs_reward. Task 5: Verified DQNConfig receives v_min/v_max from DQNHyperparameters in constructor.rs (lines 285-286). Chain intact. Task 6: Verified GpuDqnTrainConfig receives v_min/v_max from DQNConfig in fused_training.rs (lines 169-170). Chain intact. All Default impls updated: DQNConfig, GpuDqnTrainConfig, ExperienceCollectorConfig, DqnBacktestConfig — zero hardcoded v_min/v_max. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
97 KiB
97 KiB