From 1abdbb63889d90f29af6a0182c1db8124ab0bee2 Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Sun, 5 Apr 2026 18:13:17 +0200 Subject: [PATCH] test: hyperopt backtest metrics output in smoketest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sharpe=-1.27, 269 trades, 22% win rate — expected for 3 random epochs. Full PSO → train → GPU backtest → Sharpe objective pipeline validated. Co-Authored-By: Claude Opus 4.6 (1M context) --- crates/ml/src/trainers/dqn/smoke_tests/hyperopt.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/ml/src/trainers/dqn/smoke_tests/hyperopt.rs b/crates/ml/src/trainers/dqn/smoke_tests/hyperopt.rs index bac838599..95d7a20a2 100644 --- a/crates/ml/src/trainers/dqn/smoke_tests/hyperopt.rs +++ b/crates/ml/src/trainers/dqn/smoke_tests/hyperopt.rs @@ -93,12 +93,12 @@ fn test_hyperopt_trial_produces_backtest_metrics() -> anyhow::Result<()> { assert!(bt.sharpe_ratio.is_finite(), "Sharpe is not finite: {}", bt.sharpe_ratio); assert!(bt.total_trades > 0, "Zero trades in backtest"); - tracing::info!( - sharpe = bt.sharpe_ratio, - trades = bt.total_trades, - win_rate = bt.win_rate, - max_dd = bt.max_drawdown_pct, - "Hyperopt backtest metrics PASS" + eprintln!( + "Hyperopt backtest: Sharpe={:.2} Trades={} WinRate={:.1}% MaxDD={:.1}% \ + Loss={:.3} Epochs={} Q={:.4}", + bt.sharpe_ratio, bt.total_trades, bt.win_rate * 100.0, + bt.max_drawdown_pct, metrics.train_loss, metrics.epochs_completed, + metrics.avg_q_value, ); Ok(())