Two smoke-driven fixes for issues surfaced by smoke v1 (train-grfcw).
Fix 1: inflated Return (financials.rs)
- Prior `exp(sum(log(1+r_i))) - 1` produced `Return=+8.730e19%` on
~4M step_returns/epoch. Math correct but metric meaningless.
- Fix: ANNUALIZED compounded return (CAGR). For n_returns ≥
bars_per_year, scale log_growth by `bars_per_year / n_returns`
then exp. Short rollouts (tests/warmup) fall back to total
compounded. Clamped to log-space `[-23, +20]` for display sanity.
- Smoke v1 epoch 3 with fix: 24.7% annualized (was +e19%).
- Documented v1→v2→v3 history in comment.
Fix 2: missing dqn_fold{N}_best.safetensors (training_loop.rs)
- Smoke v1 evaluate phase failed with "Failed to load DQN
checkpoint" for fold 0 and fold 1.
- Root cause: async best-worker swallowed errors non-fatally; with
3 epochs and checkpoint_frequency=10, periodic never fired; if
async failed, NO checkpoint existed.
- Fix: guaranteed final save at training end. After async drain,
restore_best_gpu_params + serialize + sync callback(is_best=true).
Idempotent if async already wrote; authoritative if it failed.
All errors here non-fatal (training succeeded; eval reports its
own missing-ckpt at proper boundary).
Files changed:
- crates/ml/src/trainers/dqn/financials.rs: v3 annualized return
- crates/ml/src/trainers/dqn/trainer/training_loop.rs: final save
- 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 financials: 7/7
- cargo test -p ml --lib sp21_isv_slots: 4/4
- 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: 39 tests, 0 failures.
Smoke v2 (train-rl5x2) is on commit ad99b79e0 and won't have these
fixes. A v3 dispatch after this commit validates both fixes end-
to-end.
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;