8 structs shared the name ModelMetadata across the codebase. Renamed 7 domain-specific variants to descriptive names, keeping ml::ModelMetadata as the canonical definition: - model_loader: ModelMetadata → LoadedModelInfo - config: ModelMetadata → ModelRegistryEntry - trading_service: ModelMetadata → RuntimeModelInfo - ml-data: ModelMetadata → ModelRecord - adaptive-strategy: ModelMetadata → AdaptiveModelInfo - storage: ModelMetadata → ModelStorageExtras - tests/harness: ModelMetadata → TestModelMetrics Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
adaptive-strategy
Adaptive trading strategy framework combining ensemble ML models, execution algorithms, market microstructure analysis, and risk management.
Overview
AdaptiveStrategy is the top-level type. It wraps an EnsembleCoordinator in Arc<RwLock> and coordinates predictions from four model types -- DQN, PPO, TFT, and Mamba2 -- loaded via InferenceAdapterBridge from the ml crate.
EnsembleConfig is re-exported from ml (not defined in this crate).
Modules
- config -- Strategy configuration, seeded IDs (
default-production,development,aggressive) - ensemble --
EnsembleCoordinator, model weighting, signal aggregation - execution -- TWAP, VWAP, Implementation Shortfall, POV, Arrival Price algorithms
- microstructure -- Order book analysis, trade flow classification, price impact modeling
- regime -- Market regime detection (HMM, threshold, ML-based)
- risk -- Position sizing (Kelly, risk parity, vol targeting), portfolio limits, drawdown monitoring
Features
| Cargo feature | Description |
|---|---|
postgres |
Hot-reload strategy config from PostgreSQL |
Usage
use adaptive_strategy::{AdaptiveStrategy, StrategyConfig};
let config = StrategyConfig::default();
let strategy = AdaptiveStrategy::new(config).await?;
Testing
SQLX_OFFLINE=true cargo test -p adaptive-strategy --lib
Dependencies
Core: tokio, candle-core, serde, tracing, chrono
ML models provided by the ml crate.