Eliminates remaining hardcoded controller GAINS in enrichment.rs per pearl_controller_anchors_isv_driven. Both E2 (compute_adaptive_epsilon) and E5 (compute_agreement_threshold) now derive gain magnitudes from val_sharpe_std = √ISV[VAL_SHARPE_VAR_EMA_INDEX=351] — same signal source as the early-stopping pipeline. Phase 2 already signal-drove the anchors; this commit closes the GAIN half. NO new ISV slots. NO kernel changes. NO ISV_TOTAL_DIM bump. Pure value-driven refactor of two enrichment functions. E2 transformation: - Bracket anchors 2.0/0.5/-0.5 → 2.0×std / 0.5×std / -0.5×std - Multiplicative gains 0.8/0.95/1.2 → (1 ± gain_mag) and (1 - 0.5×gain_mag) - gain_mag = val_sharpe_std.clamp(0.05, 0.30) (Invariant 1 carve-out) - Cold-start (var_ema==0) → pass-through E5 transformation: - Tighten step 0.9 → (1 - gain_mag) - Loosen step 1.1 → (1 + gain_mag) - Same gain_mag formula as E2 (consistency) Invariant 1 carve-outs explicitly retained (project-wide priors): - [0.05, 0.30] gain_mag stability clamp (mirrors Wiener-α floor) - [0.85, 0.98] E3 gamma support range (trading-frequency prior) - [0.5, 2.0] E4 per-branch LR multiplier (collapse/divergence guard) Files changed: - crates/ml/src/trainers/dqn/trainer/enrichment.rs: E2 takes new val_sharpe_var_ema arg; both E2 and E5 derive gains from val_sharpe_std; run_enrichments call-site arg added - docs/dqn-wire-up-audit.md: 2026-05-11 audit entry Verification (passing): - cargo check -p ml --tests --features cuda: 0 errors - cargo test -p ml --lib sp21_isv_slots: 3/3 - sp20_aggregate_inputs_test: 12/12 - sp20_phase1_4_wireup_test: 2/2 - sp20_emas_compute_test: 4/4 - sp20_controllers_compute_test: 7/7 - sp21_per_trade_predicted_q_test: 3/3 Total: 34 tests, 0 failures. SP21 T2.2 cascade COMPLETE — all 8 atomic phases landed (1.5, 2, 3, 4, 4.5, 5+6, 7, 8). Remaining future work out of T2.2 scope: - Phase 6.5 (deferred): true E7 hindsight synthetic injection - Phase 7.5 (deferred): true E8 per-segment PER sampling Next operational step: dispatch L40S smoke training run. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ml
10-model ML ensemble for the Foxhunt HFT system, built on Candle v0.9.1.
Models
- DQN (Rainbow) — deep Q-network with prioritized replay, dueling heads, noisy nets
- PPO — proximal policy optimization with GAE, LSTM policies, clip-higher
- TFT — temporal fusion transformer for multi-horizon forecasting
- Mamba2 — state space model for sequence prediction
- Liquid Networks — biologically inspired networks for non-stationary data
- TLOB — transformer-based limit order book analysis
- KAN — Kolmogorov-Arnold networks
- xLSTM — extended LSTM architecture
- TGGN — temporal graph neural network
- Diffusion — diffusion-based generative model
Key Modules
ensemble— model ensemble coordination and confidence aggregationhyperopt— PSO-based hyperparameter optimization with per-model adapterstrainers— unified training loops (DQN, PPO, supervised)inference—InferenceAdaptertrait for predictioncheckpoint— model checkpointing and restorationevaluation— walk-forward evaluation pipeline
Usage
use ml::dqn::DQN;
use ml::ppo::PpoTrainer;