ROOT CAUSE: run_backtracking_epoch_end received epoch_sharpe (training
Sharpe from experience collection, ~0.65-0.79 oscillating) instead of
val_Sharpe (deterministic backtest, 33.49 frozen for 56 epochs).
Training Sharpe oscillates even when the model is frozen → sharpe_frozen
was always false → AND condition never met → backtracking never triggered
despite 56 consecutive frozen epochs in train-2tgs7.
Fixes:
1. Pass val_sharpe (-val_loss) to run_backtracking_epoch_end
2. prev_val_sharpe field on BacktrackingState (not sharpe_history)
3. improvement_rate uses val_Sharpe delta (not training Sharpe)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>