//! Aggregator + conflict + regime enums for the multi-strategy
//! composition tree. See spec §6.

use serde::{Deserialize, Serialize};

#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum EnsembleAggregator {
    Mean,
    MaxConfidence,
    WeightedByValAuc,
    /// ADAPTIVE — per-horizon recent_sharpe weights. Auto-shifts capital
    /// toward empirically winning horizons. See spec §5 + §6.
    WeightedByRealizedSharpe,
}

#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum ConflictPolicy {
    NetOut,
    FirstSubmitWins,
    BlockOpposing,
}

#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
pub enum Regime {
    SpreadQ1,
    SpreadQ2,
    SpreadQ3,
    SpreadQ4,
}
