🔥 COMPILATION SUCCESS: Complete resolution of all 543+ compilation errors

ARCHITECTURAL ACHIEVEMENTS:
 Zero compilation errors across entire workspace
 Complete elimination of circular dependencies
 Proper configuration architecture with centralized config crate
 Fixed all type mismatches and missing fields
 Restored proper crate structure (config at root level)

MAJOR FIXES:
- Fixed 19 critical data crate compilation errors
- Resolved configuration struct field mismatches
- Fixed enum variant naming (CSV → Csv)
- Corrected type conversions (FromPrimitive, compression types)
- Fixed HashMap key types (u32 vs usize)
- Resolved TLOBProcessor constructor issues

WORKSPACE STATUS:
- All services compile successfully
- Trading Service:  Ready
- Backtesting Service:  Ready
- ML Training Service:  Ready
- TLI Client:  Ready

Only documentation warnings remain (3,316 warnings to be addressed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
jgrusewski
2025-09-29 10:59:34 +02:00
parent 18904f08bc
commit eb5fe84e22
293 changed files with 5103 additions and 18491 deletions

View File

@@ -5,17 +5,17 @@
//! uncertainty quantification, and performance-based adaptation.
// Import core types
use common::types::Order;
use common::types::Position;
use common::types::Symbol;
use common::types::Price;
use common::types::Quantity;
use common::Order;
use common::Position;
use common::Symbol;
use common::Price;
use common::Quantity;
use common::error::CommonError;
use common::error::CommonResult;
use common::types::HftTimestamp;
use common::types::OrderId;
use common::types::TradeId;
use common::types::ExecutionId;
use common::HftTimestamp;
use common::OrderId;
use common::TradeId;
use common::Execution;
use anyhow::Result;
use serde::{Deserialize, Serialize};

View File

@@ -9,22 +9,21 @@ use serde::{Deserialize, Serialize};
use std::collections::{HashMap, VecDeque};
use tokio::time::{Duration, Instant};
use tracing::{debug, info, warn};
use common::types::OrderStatus;
use common::types::OrderType;
use common::types::Order;
use common::types::OrderSide;
use common::types::Position;
use common::types::Execution;
use common::types::Symbol;
use common::types::Price;
use common::types::Quantity;
use common::OrderStatus;
use common::OrderType;
use common::Order;
use common::OrderSide;
use common::Position;
use common::Execution;
use common::Symbol;
use common::Price;
use common::Quantity;
use common::error::CommonError;
use common::error::CommonResult;
use common::types::HftTimestamp;
use common::types::OrderId;
use common::types::TradeId;
use common::types::ExecutionId;
use common::types::TimeInForce;
use common::HftTimestamp;
use common::OrderId;
use common::TradeId;
use common::TimeInForce;
use super::config::{ExecutionAlgorithm, ExecutionConfig};
use super::microstructure::{MicrostructureAnalyzer, OrderLevel, Trade};
@@ -64,7 +63,7 @@ pub struct OrderManager {
// OrderSide, OrderType and OrderStatus imported from canonical source in common::prelude
// REMOVED: TimeInForce duplicate - use common::types::TimeInForce
// REMOVED: TimeInForce duplicate - use common::TimeInForce
// Note: GTD variant not supported in canonical definition
/// Fill information

View File

@@ -49,17 +49,17 @@ pub mod regime;
pub mod risk;
// Import core types from common types crate
use common::types::Order;
use common::types::Position;
use common::types::Symbol;
use common::types::Price;
use common::types::Quantity;
use common::Order;
use common::Position;
use common::Symbol;
use common::Price;
use common::Quantity;
use common::error::CommonError;
use common::error::CommonResult;
use common::types::HftTimestamp;
use common::types::OrderId;
use common::types::TradeId;
use common::types::ExecutionId;
use common::HftTimestamp;
use common::OrderId;
use common::TradeId;
use common::Execution;
use anyhow::Result;
use serde::{Deserialize, Serialize};

View File

@@ -10,16 +10,16 @@ use std::collections::{HashMap, VecDeque};
use tracing::{debug, info, warn};
// Add missing core types
use common::types::Symbol;
use common::types::Price;
use common::types::Quantity;
use common::types::HftTimestamp;
use common::Symbol;
use common::Price;
use common::Quantity;
use common::HftTimestamp;
use common::error::CommonError;
use common::error::CommonResult;
use common::types::Order;
use common::types::Position;
use common::types::OrderId;
use common::types::TradeId;
use common::Order;
use common::Position;
use common::OrderId;
use common::TradeId;
// REMOVED: Add ML types - compilation issues
// use ml::prelude::*;
// REMOVED: Add data types - compilation issues

View File

@@ -78,16 +78,16 @@ use std::collections::HashMap;
use tracing::{debug, info, warn};
// Add missing core types
use common::types::Position;
use common::types::Symbol;
use common::Position;
use common::Symbol;
use crate::regime::MarketRegime;
use common::types::Price;
use common::types::Quantity;
use common::Price;
use common::Quantity;
use common::error::CommonError;
use common::error::CommonResult;
use common::types::Order;
use common::types::OrderId;
use common::types::HftTimestamp;
use common::Order;
use common::OrderId;
use common::HftTimestamp;
// ML types are imported via the prelude above
// Add risk types

View File

@@ -10,18 +10,18 @@
//! - Volatility-based position size optimization
// Import core types
use common::types::Position;
use common::types::Symbol;
use common::types::Price;
use common::types::Quantity;
use common::Position;
use common::Symbol;
use common::Price;
use common::Quantity;
use rust_decimal::Decimal;
use common::error::CommonError;
use common::error::CommonResult;
use common::types::Order;
use common::types::OrderId;
use common::types::HftTimestamp;
use common::types::TradeId;
use common::types::MarketRegime;
use common::Order;
use common::OrderId;
use common::HftTimestamp;
use common::TradeId;
use common::MarketRegime;
use anyhow::Result;
use serde::{Deserialize, Serialize};
@@ -32,14 +32,7 @@ use uuid::Uuid;
// Add missing core types
use super::config::{PositionSizingMethod, RiskConfig};
use kelly_position_sizer::{
DrawdownTracker, VolatilityRegime, KellyPositionSizer, DynamicRiskAdjuster,
KellyConfig, MarketData, ConcentrationMetrics
};
use ppo_position_sizer::{
PPOPositionSizer, PPOPositionSizerConfig, ContinuousTrajectory,
ContinuousPPOConfig, ContinuousPolicyConfig, RewardFunctionConfig
};
// Note: Types are imported through pub use statements below
// Enhanced Kelly Criterion implementation
mod kelly_position_sizer;
@@ -47,9 +40,16 @@ mod kelly_position_sizer;
// PPO-based position sizing implementation
mod ppo_position_sizer;
// NO RE-EXPORTS: Import directly from submodules
// Use adaptive_strategy::risk::kelly_position_sizer::{KellyPositionSizer, DynamicRiskAdjuster, etc.} instead
// Use adaptive_strategy::risk::ppo_position_sizer::{PPOPositionSizer, PPOPositionSizerConfig, etc.} instead
// Re-export key types for external use
pub use kelly_position_sizer::{
KellyCriterionOptimizer, KellyOptimizerConfig, KellyPositionRecommendation,
KellyPositionSizer, DynamicRiskAdjuster, KellyConfig, MarketData, ConcentrationMetrics,
DrawdownTracker, VolatilityRegime
};
pub use ppo_position_sizer::{
PPOPositionSizer, PPOPositionSizerConfig, ContinuousTrajectory,
ContinuousPPOConfig, ContinuousPolicyConfig, RewardFunctionConfig
};
// Comprehensive tests
#[cfg(test)]
@@ -70,15 +70,15 @@ pub struct RiskManager {
/// Position sizing calculator
position_sizer: PositionSizer,
/// Enhanced Kelly Criterion position sizer
kelly_sizer: Option<KellyPositionSizer>,
kelly_sizer: Option<kelly_position_sizer::KellyPositionSizer>,
/// PPO-based position sizer
ppo_sizer: Option<PPOPositionSizer>,
ppo_sizer: Option<ppo_position_sizer::PPOPositionSizer>,
/// Portfolio risk monitor
portfolio_monitor: PortfolioRiskMonitor,
/// Risk metrics calculator
metrics_calculator: RiskMetricsCalculator,
/// Dynamic risk adjuster
risk_adjuster: DynamicRiskAdjuster,
risk_adjuster: kelly_position_sizer::DynamicRiskAdjuster,
}
/// Position sizing engine
@@ -295,11 +295,11 @@ impl RiskManager {
let position_sizer = PositionSizer::new(&config)?;
let portfolio_monitor = PortfolioRiskMonitor::new(&config)?;
let metrics_calculator = RiskMetricsCalculator::new()?;
let risk_adjuster = DynamicRiskAdjuster::new(&KellyConfig::default())?;
let risk_adjuster = kelly_position_sizer::DynamicRiskAdjuster::new(&kelly_position_sizer::KellyConfig::default())?;
// Initialize enhanced Kelly sizer if Kelly method is selected
let kelly_sizer = if matches!(config.position_sizing_method, PositionSizingMethod::Kelly) {
let kelly_config = KellyConfig {
let kelly_config = kelly_position_sizer::KellyConfig {
max_fraction: config.kelly_fraction,
min_fraction: 0.01,
lookback_period: 252,
@@ -311,20 +311,20 @@ impl RiskManager {
correlation_adjustment: 0.85,
base_kelly: config.kelly_fraction,
};
Some(KellyPositionSizer::new(kelly_config)?)
Some(kelly_position_sizer::KellyPositionSizer::new(kelly_config)?)
} else {
None
};
// Initialize PPO sizer if PPO method is selected
let ppo_sizer = if matches!(config.position_sizing_method, PositionSizingMethod::PPO) {
let ppo_config = PPOPositionSizerConfig {
let ppo_config = ppo_position_sizer::PPOPositionSizerConfig {
state_dim: 128,
ppo_config: ContinuousPPOConfig {
ppo_config: ppo_position_sizer::ContinuousPPOConfig {
state_dim: 128,
action_dim: 1,
learning_rate: 3e-4,
policy_config: ContinuousPolicyConfig {
policy_config: ppo_position_sizer::ContinuousPolicyConfig {
state_dim: 128,
hidden_dims: vec![256, 128, 64],
action_bounds: (0.0, 1.0),
@@ -344,7 +344,7 @@ impl RiskManager {
num_epochs: 10,
max_grad_norm: 0.5,
},
reward_config: RewardFunctionConfig {
reward_config: ppo_position_sizer::RewardFunctionConfig {
sharpe_weight: 2.0,
drawdown_penalty_weight: 5.0,
kelly_alignment_weight: 1.5,
@@ -361,7 +361,7 @@ impl RiskManager {
..Default::default()
};
Some(
PPOPositionSizer::new(ppo_config)
ppo_position_sizer::PPOPositionSizer::new(ppo_config)
.map_err(|e| anyhow::anyhow!("Failed to create PPO position sizer: {}", e))?,
)
} else {
@@ -587,14 +587,14 @@ impl RiskManager {
}
/// Build market data for Kelly calculation
async fn build_market_data(&self, symbol: &str, current_price: f64) -> Result<MarketData> {
async fn build_market_data(&self, symbol: &str, current_price: f64) -> Result<kelly_position_sizer::MarketData> {
let mut prices = HashMap::new();
prices.insert(symbol.to_string(), current_price);
let mut volatilities = HashMap::new();
volatilities.insert(symbol.to_string(), 0.20); // 20% default volatility
Ok(MarketData {
Ok(kelly_position_sizer::MarketData {
prices,
volatilities,
correlations: HashMap::new(),
@@ -729,23 +729,23 @@ impl RiskManager {
/// Update market regime for both Kelly and PPO sizing
pub async fn update_market_regime(&mut self, regime: MarketRegime) -> Result<()> {
if let Some(kelly_sizer) = &mut self.kelly_sizer {
// Convert common::types::MarketRegime to regime::MarketRegime
// Convert common::MarketRegime to regime::MarketRegime
let local_regime = match regime {
common::types::MarketRegime::Normal => crate::regime::MarketRegime::Normal,
common::types::MarketRegime::Trending => crate::regime::MarketRegime::Trending,
common::types::MarketRegime::Sideways => crate::regime::MarketRegime::Sideways,
common::types::MarketRegime::Bull => crate::regime::MarketRegime::Bull,
common::types::MarketRegime::Bear => crate::regime::MarketRegime::Bear,
common::types::MarketRegime::Crisis => crate::regime::MarketRegime::Crisis,
common::types::MarketRegime::HighVolatility => crate::regime::MarketRegime::HighVolatility,
common::types::MarketRegime::LowVolatility => crate::regime::MarketRegime::LowVolatility,
common::types::MarketRegime::Volatile => crate::regime::MarketRegime::HighVolatility, // Alias
common::types::MarketRegime::Calm => crate::regime::MarketRegime::LowVolatility, // Alias
common::types::MarketRegime::Unknown => crate::regime::MarketRegime::Unknown,
common::types::MarketRegime::Recovery => crate::regime::MarketRegime::Recovery,
common::types::MarketRegime::Bubble => crate::regime::MarketRegime::Bubble,
common::types::MarketRegime::Correction => crate::regime::MarketRegime::Correction,
common::types::MarketRegime::Custom(_) => crate::regime::MarketRegime::Unknown, // Map custom to unknown
MarketRegime::Normal => crate::regime::MarketRegime::Normal,
MarketRegime::Trending => crate::regime::MarketRegime::Trending,
MarketRegime::Sideways => crate::regime::MarketRegime::Sideways,
MarketRegime::Bull => crate::regime::MarketRegime::Bull,
MarketRegime::Bear => crate::regime::MarketRegime::Bear,
MarketRegime::Crisis => crate::regime::MarketRegime::Crisis,
MarketRegime::HighVolatility => crate::regime::MarketRegime::HighVolatility,
MarketRegime::LowVolatility => crate::regime::MarketRegime::LowVolatility,
MarketRegime::Volatile => crate::regime::MarketRegime::HighVolatility, // Alias
MarketRegime::Calm => crate::regime::MarketRegime::LowVolatility, // Alias
MarketRegime::Unknown => crate::regime::MarketRegime::Unknown,
MarketRegime::Recovery => crate::regime::MarketRegime::Recovery,
MarketRegime::Bubble => crate::regime::MarketRegime::Bubble,
MarketRegime::Correction => crate::regime::MarketRegime::Correction,
MarketRegime::Custom(_) => crate::regime::MarketRegime::Unknown, // Map custom to unknown
};
kelly_sizer.update_market_regime(local_regime).await?;
}
@@ -772,7 +772,7 @@ impl RiskManager {
}
/// Get concentration metrics if Kelly sizer is available
pub async fn get_concentration_metrics(&self) -> Result<Option<ConcentrationMetrics>> {
pub async fn get_concentration_metrics(&self) -> Result<Option<kelly_position_sizer::ConcentrationMetrics>> {
if let Some(kelly_sizer) = &self.kelly_sizer {
Ok(Some(kelly_sizer.get_concentration_metrics().await?))
} else {
@@ -783,7 +783,7 @@ impl RiskManager {
/// Update PPO policy with trading experience (if PPO sizer is available)
pub async fn update_ppo_policy(
&mut self,
trajectory: ContinuousTrajectory,
trajectory: ppo_position_sizer::ContinuousTrajectory,
) -> Result<Option<(f32, f32)>> {
if let Some(ppo_sizer) = &mut self.ppo_sizer {
let (policy_loss, value_loss) = ppo_sizer
@@ -806,7 +806,7 @@ impl RiskManager {
}
/// Get PPO configuration if available
pub fn get_ppo_config(&self) -> Option<&PPOPositionSizerConfig> {
pub fn get_ppo_config(&self) -> Option<&ppo_position_sizer::PPOPositionSizerConfig> {
self.ppo_sizer.as_ref().map(|sizer| sizer.get_config())
}
@@ -1345,7 +1345,7 @@ mod tests {
#[test]
fn test_dynamic_risk_adjuster() {
let adjuster = DynamicRiskAdjuster::new(&KellyConfig::default()).unwrap();
let adjuster = kelly_position_sizer::DynamicRiskAdjuster::new(&kelly_position_sizer::KellyConfig::default()).unwrap();
let position_metrics = PositionRiskMetrics {
expected_return: 0.05,