Files
foxhunt/adaptive-strategy
jgrusewski 17e60a48de fix(adaptive-strategy): init MarketStateTracker with 0.0 instead of NaN
NaN initial features propagate through the PPO policy network and
produce garbage position sizing on the very first inference call.
Replace with 0.0 so the first prediction is safe (neutral).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 23:02:11 +01:00
..

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.