Replace the hardcoded [0.5, 0.6, 0.7, 0.8, 0.9] mock in
`extract_features_for_symbol` with a real attempt to retrieve
market ticks via `market_data_repository.get_latest_prices`.
Derives a 51-dim feature vector (price mean/std/CV, momentum,
volume mean, tick count) from live tick data, padding unused
dimensions with zeros. Falls back to a zero-filled 51-dim
vector with a WARN log on any failure or empty response, ensuring
the ensemble prediction path is never blocked by missing data.
Also replaces the silent `info!` in `get_fallback_trading_signal`
with a WARN-level message that makes the mock-signal boundary
clearly visible in production logs and adds a TODO pointing to
real DQN epoch-30 checkpoint inference.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>