diff --git a/crates/ml/examples/train_baseline_rl.rs b/crates/ml/examples/train_baseline_rl.rs index db98f99c5..295ea73f2 100644 --- a/crates/ml/examples/train_baseline_rl.rs +++ b/crates/ml/examples/train_baseline_rl.rs @@ -246,6 +246,11 @@ struct Args { #[arg(long)] no_branching: bool, + /// Initial trading capital in dollars. Lower capital teaches conservative + /// position sizing. Must match hyperopt --initial-capital for consistency. + #[arg(long, default_value_t = 35_000.0)] + initial_capital: f64, + /// Named training profile to load from config/training/.toml. /// Profile values are applied after hyperopt JSON but before explicit CLI args. /// Known profiles: dqn-production, dqn-smoketest, dqn-hyperopt. @@ -568,6 +573,7 @@ fn train_dqn_fold( hyperparams.batch_size = hp_usize(hp, "batch_size").unwrap_or(args.batch_size); hyperparams.learning_rate = hp_f64(hp, "learning_rate").unwrap_or(args.learning_rate); hyperparams.max_training_steps_per_epoch = args.max_steps_per_epoch; + hyperparams.initial_capital = args.initial_capital as f32; // Create DQNTrainer -- auto-detects GPU, mixed precision, dynamic batch sizing let mut trainer = DQNTrainer::new(hyperparams) diff --git a/infra/k8s/argo/compile-and-train-template.yaml b/infra/k8s/argo/compile-and-train-template.yaml index 7c5ab3142..96880ff4e 100644 --- a/infra/k8s/argo/compile-and-train-template.yaml +++ b/infra/k8s/argo/compile-and-train-template.yaml @@ -496,6 +496,7 @@ spec: --tx-cost-bps {{workflow.parameters.tx-cost-bps}} \ --tick-size {{workflow.parameters.tick-size}} \ --spread-ticks {{workflow.parameters.spread-ticks}} \ + --initial-capital {{workflow.parameters.initial-capital}} \ --data-dir {{workflow.parameters.data-dir}} \ --mbp10-data-dir {{workflow.parameters.mbp10-data-dir}} \ --trades-data-dir {{workflow.parameters.trades-data-dir}} \