//! Ensemble signal aggregation for trading models use std; use thiserror::Error; pub mod aggregator; pub mod confidence; pub mod model; pub mod voting; pub mod weights; // Re-export key types that are used across ensemble modules pub use aggregator::{ModelSignal, SignalMetadata, SignalStatistics}; /// Errors that can occur in ensemble operations #[derive(Error, Debug)] /// `EnsembleError` component. pub enum EnsembleError { #[error("Failed to acquire lock: {0}")] LockAcquisitionFailed(String), #[error("Invalid ensemble configuration: {0}")] InvalidConfiguration(String), #[error("Model not found: {0}")] ModelNotFound(String), #[error("Insufficient models for ensemble: expected {expected}, got {actual}")] InsufficientModels { expected: usize, actual: usize }, #[error("Weight calculation failed: {0}")] WeightCalculationFailed(String), #[error("Aggregation failed: {0}")] AggregationFailed(String), }