bars_per_day was hardcoded 390 (1-minute candles) but we use MBP-10 imbalance bars (~7500/day). All Sharpe/Sortino/return annualization was off by sqrt(7500/390) ≈ 4.4×. Now computed from actual fxcache timestamps: bars_per_day = total_bars / (trading_days from timestamp span) Propagates to: val_Sharpe, train_Sharpe, financials, backtest evaluator. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>