- Walk-forward CPU backtest was calling feature_vector_to_state() without
OFI index, producing zero OFI features during evaluation while training
had real OFI — creating a silent train/eval feature mismatch
- Add convert_to_state_vec_with_ofi() public method on DQNTrainer
- Add ofi_val_offset field to track training data length for OFI indexing
- compute_validation_loss() now passes OFI index to validation states
- Hyperopt CPU eval path now uses convert_to_state_vec_with_ofi()
- Enable DSR (Differential Sharpe Ratio) by default in both config and
GPU experience collector — aligns with hyperopt which always uses DSR
- Fix ensemble adapter test to explicitly disable branching
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>