Wave 9: Feature Integration (20 agents) - Wire Wave D features into extraction pipeline (ml/src/features/extraction.rs:197-204) - Reduce statistical features from 50 to 26 to make room for Wave D - Update method signature to &mut self for stateful extractors - Fix 7 division-by-zero bugs in feature extraction - Train all 4 models (DQN, PPO, MAMBA-2, TFT) with 225 features - Test pass rate: 99.2% (2,061/2,074 tests) Wave 10: Production Feature Extractor Fix (1 agent) - Create ProductionFeatureExtractor225 trait - Implement ProductionFeatureExtractorAdapter - Fix production code using only 66 features + 159 zeros - Use dependency injection to avoid circular dependencies Wave 11: Service Migration (20 agents) - Migrate Trading Service to use ProductionFeatureExtractorAdapter - Migrate Backtesting Service to use production extractor - Update all integration tests and E2E tests - Performance: 3.98μs/bar (22% faster than Wave 9) - Test pass rate: 99.84% (1,239/1,241 tests) Key Achievements: - All 225 features (201 Wave C + 24 Wave D) fully integrated - All services using production feature extractor - Zero NaN/Inf errors after division-by-zero fixes - 922x average performance improvement vs targets - System 100% ready for extended training data download Files Modified: - ml/src/features/extraction.rs (Wave D wiring) - ml/src/features/production_adapter.rs (NEW - adapter pattern) - common/src/ml_strategy.rs (trait + dependency injection) - services/trading_service/src/paper_trading_executor.rs - services/backtesting_service/src/ml_strategy_engine.rs - 18+ test files updated for &mut self pattern Next Steps: - Wave 12: Download 180 days Databento data (~$3.50) - Wave 13: Retrain all models with extended datasets - Wave 14: Run Wave Comparison Backtest - Wave 15-16: Production deployment 🤖 Generated with Claude Code (Waves 9-11: 41 agents, 153 total) Co-Authored-By: Claude <noreply@anthropic.com>
96 lines
3.4 KiB
Rust
96 lines
3.4 KiB
Rust
//! Common utilities and shared types for Foxhunt HFT Trading System
|
|
//!
|
|
//! This crate contains shared utilities that are used across multiple services
|
|
//! in the Foxhunt HFT trading system, eliminating code duplication and providing
|
|
//! a consistent interface for common operations.
|
|
//!
|
|
//! # Modules
|
|
//!
|
|
//! - [`database`] - Database connection utilities and configurations
|
|
//! - [`error`] - Common error types and utilities
|
|
//! - [`traits`] - Shared traits used across services
|
|
//! - [`constants`] - Shared constants and configuration values
|
|
//! - [`types`] - Common data types
|
|
|
|
#![allow(missing_docs)] // Internal implementation details
|
|
#![warn(missing_debug_implementations)]
|
|
#![allow(clippy::float_arithmetic)] // Financial calculations require float arithmetic
|
|
#![warn(rust_2018_idioms)]
|
|
#![deny(
|
|
clippy::unwrap_used,
|
|
clippy::expect_used,
|
|
clippy::panic,
|
|
clippy::unimplemented,
|
|
clippy::unreachable
|
|
)]
|
|
|
|
pub mod constants;
|
|
pub mod database;
|
|
pub mod error;
|
|
pub mod features; // Wave D: Shared feature extraction (225 features)
|
|
pub mod market_data;
|
|
pub mod ml_strategy;
|
|
pub mod regime_persistence;
|
|
pub mod thresholds;
|
|
pub mod traits;
|
|
pub mod types;
|
|
|
|
// Re-export database types for external use
|
|
pub use database::{DatabaseConfig, DatabaseError, DatabasePool};
|
|
|
|
// Re-export commonly used types at crate root for convenience
|
|
pub use types::{
|
|
AccountId, Aggregate, BarEvent, BrokerType, CommonTypeError, ConfigVersion, ConnectionEvent,
|
|
ConnectionInfo, ConnectionStatus, Currency, DataType, ErrorEvent, Execution, GenericTimestamp,
|
|
HftTimestamp, Level2Update, MarketDataEvent, MarketRegime, MarketStatus, Money, Order,
|
|
OrderBookEvent, OrderEvent, OrderEventType, OrderId, OrderSide, OrderStatus, OrderType,
|
|
Position, PositionMap, Price, PriceLevel, Quantity, QuoteEvent, RequestId, ResourceLimits,
|
|
ServiceId, ServiceStatus, Subscription, Symbol, TimeInForce, Timestamp, TradeEvent, TradeId,
|
|
Volume,
|
|
};
|
|
|
|
// Re-export error types
|
|
pub use error::{CommonError, CommonResult};
|
|
|
|
// Re-export common traits for convenience
|
|
pub use traits::{
|
|
CircuitBreaker, Configurable, DetailedHealth, GracefulShutdown, HealthCheck, HealthStatus,
|
|
Metrics, RateLimitStatus, RateLimited, Reloadable, Service,
|
|
};
|
|
|
|
pub use market_data::{
|
|
BarEvent as BarEventFromMarketData, BarInterval,
|
|
MarketDataEvent as MarketDataEventFromMarketData, NewsEvent,
|
|
OrderBookEvent as OrderBookEventFromMarketData, QuoteEvent as QuoteEventFromMarketData,
|
|
TradeEvent as TradeEventFromMarketData,
|
|
};
|
|
|
|
// Import market data types for canonical use
|
|
// Use common::market_data::{MarketDataEvent, TradeEvent, QuoteEvent, BarEvent} etc.
|
|
pub mod trading;
|
|
|
|
// Re-export shared ML strategy types
|
|
pub use ml_strategy::{
|
|
MLFeatureExtractor, MLModelAdapter, MLModelPerformance, MLPrediction,
|
|
ProductionFeatureExtractor225, SharedMLStrategy, SimpleDQNAdapter,
|
|
};
|
|
|
|
// Re-export regime persistence manager
|
|
pub use regime_persistence::RegimePersistenceManager;
|
|
|
|
// Re-export feature extraction types and functions (Wave D: 225 features)
|
|
pub use features::{
|
|
FeatureVector225, BarData,
|
|
// Technical indicators (streaming + batch)
|
|
RSI, EMA, MACD, BollingerBands, ATR, ADX,
|
|
rsi_batch, ema_batch, macd_batch, bollinger_batch, atr_batch, adx_batch,
|
|
};
|
|
|
|
// Test utilities module (available for all tests)
|
|
#[cfg(test)]
|
|
pub mod test_utils;
|
|
|
|
// Test module for database features
|
|
#[cfg(all(test, feature = "database"))]
|
|
mod sqlx_test;
|