from dataclasses import dataclass from datetime import datetime from enum import Enum from typing import Optional, Any class SignalType(Enum): BUY = "BUY" SELL = "SELL" HOLD = "HOLD" @dataclass class StrategySignal: timestamp: datetime symbol: str signal_type: SignalType price: float quantity: Optional[float] = None confidence: Optional[float] = None metadata: Optional[dict] = None def __post_init__(self): if isinstance(self.timestamp, str): self.timestamp = datetime.fromisoformat(self.timestamp.replace('Z', '+00:00')) if isinstance(self.signal_type, str): self.signal_type = SignalType[self.signal_type.upper()]