diff --git a/crates/ml/src/trainers/dqn/trainer/metrics.rs b/crates/ml/src/trainers/dqn/trainer/metrics.rs index f475e0102..a441e5c87 100644 --- a/crates/ml/src/trainers/dqn/trainer/metrics.rs +++ b/crates/ml/src/trainers/dqn/trainer/metrics.rs @@ -554,10 +554,16 @@ impl DQNTrainer { ) }.map_err(|e| anyhow::anyhow!("GPU backtest evaluate_dqn_graphed: {e}"))?; - // Single window — take its Sharpe directly - let val_sharpe = metrics.first() - .map(|m| m.sharpe as f64) - .unwrap_or(0.0); + // Single window — log full validation metrics + let val_sharpe = if let Some(m) = metrics.first() { + tracing::info!( + "Validation backtest: Sharpe={:.2} Sortino={:.2} WinRate={:.1}% MaxDD={:.3}% Trades={:.0} Calmar={:.2}", + m.sharpe, m.sortino, m.win_rate * 100.0, m.max_drawdown * 100.0, m.total_trades, m.calmar, + ); + m.sharpe as f64 + } else { + 0.0 + }; Ok(-val_sharpe) }