refactor(ml): extract universe, backtesting, asset-selection into sub-crates
- ml-universe (1.7K lines): correlation, liquidity, momentum, volatility
modules. Only depends on ml-core (MLError, PRECISION_FACTOR).
6 tests passing.
- ml-backtesting (1.1K lines): action_loader, barrier_backtest, report
modules. Only depends on ml-core (MLError). Discovered and included
previously undeclared report.rs module. 10 tests passing.
- ml-asset-selection (1.2K lines): scorer, selector modules with
AssetClass, AssetUniverse, PredictabilityScorer, ActiveSetSelector.
Only depends on ml-core (MLError). 33 tests passing.
All three replaced with thin facade re-exports in ml — existing
`use ml::universe::*` / `use ml::backtesting::*` /
`use ml::asset_selection::*` paths continue to work.
Total: 15 sub-crates extracted from ml monolith.
Workspace: 0 errors, ml tests 902 passed + 49 in sub-crates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>