diff --git a/crates/ml/src/cuda_pipeline/state_layout.cuh b/crates/ml/src/cuda_pipeline/state_layout.cuh index 8fc5a509c..a7a2ce12b 100644 --- a/crates/ml/src/cuda_pipeline/state_layout.cuh +++ b/crates/ml/src/cuda_pipeline/state_layout.cuh @@ -115,6 +115,15 @@ #define DIR_FLAT 3 // close all positions to zero #define NUM_DIRECTIONS 4 +// ──────────────────────────────────────────────────────────────────────────── +// Magnitude action sub-indices (mag_idx in [0..NUM_MAGNITUDES)). +// Invariant 8: every magnitude value has a named constant. +// ──────────────────────────────────────────────────────────────────────────── +#define MAG_QUARTER 0 // 0.25× max_position +#define MAG_HALF 1 // 0.50× max_position +#define MAG_FULL 2 // 1.00× max_position +#define NUM_MAGNITUDES 3 + // ── Compile-time checks ── static_assert(SL_PADDING_START + SL_PADDING_DIM == SL_STATE_DIM, "State layout dimensions must sum to SL_STATE_DIM"); diff --git a/crates/ml/src/cuda_pipeline/trade_physics.cuh b/crates/ml/src/cuda_pipeline/trade_physics.cuh index d7f7f134f..4742ccd20 100644 --- a/crates/ml/src/cuda_pipeline/trade_physics.cuh +++ b/crates/ml/src/cuda_pipeline/trade_physics.cuh @@ -70,7 +70,7 @@ __device__ __forceinline__ float compute_target_position_4branch( * Returns NaN as safety net — any arithmetic with NaN propagates visibly. */ if (dir_idx == DIR_HOLD) return __int_as_float(0x7FC00000); /* NaN sentinel */ float direction = (dir_idx == DIR_SHORT) ? -1.0f : (dir_idx == DIR_LONG) ? 1.0f : 0.0f; - float magnitude = (mag_idx == 0) ? 0.25f : (mag_idx == 1) ? 0.5f : 1.0f; + float magnitude = (mag_idx == MAG_QUARTER) ? 0.25f : (mag_idx == MAG_HALF) ? 0.5f : 1.0f; return direction * magnitude * max_position; } diff --git a/docs/dqn-named-dims.md b/docs/dqn-named-dims.md index 5ec25d2e9..f0514b9e7 100644 --- a/docs/dqn-named-dims.md +++ b/docs/dqn-named-dims.md @@ -122,4 +122,5 @@ From the trade_plan MLP output. - Task 4B (plan_isv[0..6) constants): commit 741cb48d5 - Task 4C (plan_params[0..6) constants): commit 0ac83479e - Task 4D (BRANCH_* constants): commit 11755632b -- Task 4E (DIR_* direction sub-indices): commit TBD +- Task 4E (DIR_* direction sub-indices): commit c64fde0be +- Task 4F (MAG_* magnitude sub-indices): commit TBD