//! Deep Q-Learning Network implementation for trading //! //! This crate includes both the original DQN implementation and the enhanced Rainbow DQN //! with all 6 components: Double Q-learning, Dueling Networks, Prioritized Experience Replay, //! Multi-step Learning, Distributional RL (C51), and Noisy Networks. #![allow(clippy::module_name_repetitions)] #![allow(clippy::integer_division)] #![allow(clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated)] // Tensor ops: let x = x.relu() is idiomatic #![allow(clippy::non_ascii_literal)] // Math symbols in ML documentation and error messages #![allow(clippy::partial_pub_fields)] // ML config structs: some fields are pub API, some internal #![allow(clippy::same_name_method)] // Intentional: inherent methods shadow trait defaults for ML-specific behavior #![allow(clippy::indexing_slicing)] // Tensor/matrix indexing with bounds guaranteed by construction #![allow(clippy::similar_names)] // ML naming: min_val/max_val, state/states are conventional #![allow(clippy::type_complexity)] // Complex generic types in neural network layers #![allow(clippy::single_char_lifetime_names)] // 'a is idiomatic Rust // Re-export shared modules from ml-core for convenience pub use ml_core::action_space; pub use ml_core::order_router; pub use ml_core::xavier_init; pub use ml_core::portfolio_tracker; pub use ml_core::trading_action; pub use ml_core::trading_action::TradingAction; // Original DQN components pub mod count_bonus; pub mod agent; pub mod attention; pub mod circuit_breaker; pub mod curiosity; pub mod dqn; pub mod experience; pub mod gae; pub mod hindsight_replay; pub mod logging; pub mod network; pub mod nstep_buffer; pub mod regime_conditional; pub mod replay_buffer; pub mod residual; pub mod reward; pub mod softmax; pub mod logit_clipping; pub mod target_update; pub mod trade_executor; // Wave 16 Portfolio Features pub mod entropy_regularization; pub mod multi_asset; // Branching DQN (Phase C+) pub mod branching; #[cfg(test)] mod branching_composition_tests; #[cfg(test)] mod dsr_gpu_tests; #[cfg(test)] mod nstep_gpu_tests; // Rainbow DQN components pub mod distributional; pub mod distributional_dueling; pub mod dueling; pub mod noisy_layers; pub mod quantile_regression; pub mod noisy_sigma_scheduler; pub mod rainbow_agent; pub mod rainbow_config; pub mod rainbow_integration; pub mod rainbow_network; // Replay buffer types pub mod prioritized_replay; pub mod prioritized_replay_staleness; pub mod replay_buffer_type; pub mod experience_dataset; pub mod iql; pub mod noisy_exploration; // Performance validation pub mod performance_tests; pub mod performance_validation; // Wave 26 P2.3: Ensemble Q-network for uncertainty estimation pub mod ensemble_network; // Wave 26 P2.4: RMSNorm pub mod rmsnorm; // GPU-resident replay buffer (DQN-specific) pub mod gpu_replay_buffer; // Checkpoint (Checkpointable impl for DQNAgent) pub mod checkpoint; // DQN evaluation (backtesting engine, metrics, reports) pub mod evaluation; // Re-export core DQN types for public usage pub use action_space::{ExposureLevel, FactoredAction, OrderType, Urgency}; pub use order_router::OrderRouter; pub use agent::{AgentMetrics, DQNAgent, TradingState}; pub use dqn::{GradientResult, DQN, DQNConfig}; pub use experience::{Experience, ExperienceBatch}; pub use nstep_buffer::NStepBuffer; pub use portfolio_tracker::PortfolioTracker; pub use replay_buffer::{ReplayBuffer, ReplayBufferConfig, ReplayBufferStats}; pub use trade_executor::{ ExecutionCostConfig, ExecutionResult, RejectionReason, RiskControlConfig, TradeExecutor, }; // Re-export network components pub use network::{QNetwork, QNetworkConfig}; // Re-export reward components pub use reward::{MarketData, RewardConfig, RewardFunction, RiskMetrics}; // Re-export Rainbow DQN components pub use distributional::{CategoricalDistribution, DistributionalConfig, DistributionalType}; pub use distributional_dueling::{DistributionalDuelingConfig, DistributionalDuelingQNetwork}; pub use branching::{BranchingConfig, BranchingDuelingQNetwork, BranchOutput}; pub use dueling::{DuelingConfig, DuelingQNetwork}; pub use quantile_regression::{QuantileConfig, QuantileNetwork, quantile_huber_loss}; pub use rainbow_agent::RainbowAgent; pub use rainbow_config::{RainbowAgentConfig, RainbowAgentMetrics, RainbowDQNConfig}; pub use rainbow_network::{RainbowNetwork, RainbowNetworkConfig}; // Re-export prioritized replay components pub use prioritized_replay::{PrioritizedReplayBuffer, PrioritizedReplayConfig}; pub use replay_buffer_type::{BatchSample, ReplayBufferType}; // Re-export regime-conditional DQN components pub use regime_conditional::{RegimeClassConfig, RegimeConditionalDQN, RegimeMetrics, RegimeType}; // Re-export logit clipping utilities pub use logit_clipping::{clip_logits, clip_logits_default, softmax_with_clipping, DEFAULT_CLIP_MAX}; // Re-export GAE components pub use gae::{GAECalculator, GAEConfig}; // Re-export Hindsight Experience Replay components pub use hindsight_replay::{ HindsightReplayBuffer, HindsightReplayConfig, HindsightReplayStats, HindsightStrategy, }; // Re-export ensemble network components pub use ensemble_network::{EnsembleConfig, EnsembleQNetwork}; // Re-export RMSNorm components pub use rmsnorm::{LayerNorm, NormType, RMSNorm}; // Re-export offline RL components pub use experience_dataset::ExperienceDataset; pub use iql::IqlConfig;