import pandas as pd from dataclasses import dataclass from typing import Optional, Dict PredictionsSeries = pd.Series WeightsSeries = pd.Series ProbabilitiesDataFrame = pd.DataFrame Stats = Dict[str, float] ModelOverTime = pd.Series TransformationsOverTime = list[pd.Series] @dataclass class TrainingOutcome: model_id: str predictions: PredictionsSeries probabilities: ProbabilitiesDataFrame stats: Optional[Stats] model_over_time: ModelOverTime @dataclass class BetSizingWithMetaOutcome: model_id: str meta_training: TrainingOutcome meta_transformations: TransformationsOverTime weights: WeightsSeries stats: Optional[Stats] @dataclass class DirectionalTrainingOutcome: training: TrainingOutcome transformations: TransformationsOverTime @dataclass class PipelineOutcome: directional_training: DirectionalTrainingOutcome bet_sizing: BetSizingWithMetaOutcome def get_output_weights(self) -> WeightsSeries: return self.bet_sizing.weights def get_output_stats(self) -> Stats: return self.bet_sizing.stats