From 5461915a9788ac8f830d0e171ce44659c3fa3f53 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Sat, 18 Apr 2026 01:27:07 +0200 Subject: [PATCH] fix: update test assertions for state_dim=65 (42 market + 20 OFI + 3 portfolio) Tests had hardcoded state_dim=45/53 from before OFI was always enabled. PPO tests use raw 45-dim data (no OFI), DQN tests use 65-dim. 899 unit tests pass, 20 GPU smoke tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) --- crates/ml/src/cuda_pipeline/mod.rs | 10 +++++----- crates/ml/src/trainers/dqn/trainer/tests.rs | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/crates/ml/src/cuda_pipeline/mod.rs b/crates/ml/src/cuda_pipeline/mod.rs index 978447dcd..2c80495cb 100644 --- a/crates/ml/src/cuda_pipeline/mod.rs +++ b/crates/ml/src/cuda_pipeline/mod.rs @@ -857,7 +857,7 @@ mod tests { let gpu_data = DqnGpuData::upload(&data, &stream).expect("upload"); let portfolio = [0.95_f32, 0.5, 0.0001]; let state = gpu_data.build_state_tensor(0, &portfolio, &stream).expect("state"); - assert_eq!(state.len(), 45); // 42 market + 3 portfolio + assert_eq!(state.len(), 65); // 42 market + 20 OFI (zeros) + 3 portfolio } #[test] @@ -988,10 +988,10 @@ mod tests { // Build batch of 32 states starting at bar 10 let batch = gpu_data.build_batch_states(10, 32, &portfolio, &stream).expect("batch"); - assert_eq!(batch.len(), 32 * 45); // 42 market + 3 portfolio + assert_eq!(batch.len(), 32 * 65); // 42 market + 20 OFI + 3 portfolio // Download and verify portfolio features in row 0 - let mut host = vec![0.0_f32; 32 * 45]; + let mut host = vec![0.0_f32; 32 * 65]; dtoh_f32(&stream, &batch, &mut host).expect("DtoH"); // Row 0: features[42..45] should be portfolio [0.95, 0.5, 0.0001] @@ -1000,7 +1000,7 @@ mod tests { assert!((pf[1] - 0.5).abs() < 0.02, "portfolio[1]={}", pf[1]); // Row 31: same portfolio features - let row31_start = 31 * 45; + let row31_start = 31 * 65; let pf31 = &host[row31_start + 42..row31_start + 45]; assert!((pf31[0] - 0.95).abs() < 0.02); @@ -1020,7 +1020,7 @@ mod tests { // Request more bars than available -> clamped to 2 let batch = gpu_data.build_batch_states(0, 100, &portfolio, &stream).expect("batch"); - assert_eq!(batch.len(), 2 * 45); + assert_eq!(batch.len(), 2 * 65); // Start beyond range -> error let err = gpu_data.build_batch_states(5, 10, &portfolio, &stream); diff --git a/crates/ml/src/trainers/dqn/trainer/tests.rs b/crates/ml/src/trainers/dqn/trainer/tests.rs index ec23ccec4..85e540854 100644 --- a/crates/ml/src/trainers/dqn/trainer/tests.rs +++ b/crates/ml/src/trainers/dqn/trainer/tests.rs @@ -117,9 +117,9 @@ async fn test_feature_vector_to_state() { let state = state.unwrap(); // State dimension depends on whether OFI (MBP-10) data dirs are configured: // - Without OFI: 45 = 42 market + 3 portfolio - // - With OFI: 53 = 42 market + 8 OFI + 3 portfolio + // - With OFI: 65 = 42 market + 20 OFI + 3 portfolio // Smoketest TOML sets mbp10_data_dir, so OFI is enabled. - let expected_dim = if trainer.hyperparams.mbp10_data_dir.is_empty() { 45 } else { 53 }; + let expected_dim = if trainer.hyperparams.mbp10_data_dir.is_empty() { 45 } else { 65 }; assert_eq!( state.dimension(), expected_dim,