Initial commit: invest-copilot app
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""SectorRotation model."""
|
||||
|
||||
from datetime import date, datetime
|
||||
from decimal import Decimal
|
||||
from typing import Any, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class SectorRotation(BaseModel):
|
||||
"""Pydantic model for sector_rotations table."""
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: Optional[str] = None
|
||||
detection_date: Optional[date] = None
|
||||
sector_ticker: str
|
||||
sector_name: Optional[str] = None
|
||||
rank_now: Optional[int] = None
|
||||
rank_previous: Optional[int] = None
|
||||
rank_change: Optional[int] = None
|
||||
momentum_20d: Optional[Decimal] = None
|
||||
momentum_50d: Optional[Decimal] = None
|
||||
momentum_200d: Optional[Decimal] = None
|
||||
relative_strength: Optional[Decimal] = None
|
||||
rotation_signal: Optional[str] = None
|
||||
macro_context: Optional[dict] = None
|
||||
analysis_summary: Optional[str] = None
|
||||
created_at: Optional[datetime] = None
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
return {
|
||||
"id": self.id,
|
||||
"detectionDate": self.detection_date.isoformat() if self.detection_date else None,
|
||||
"sectorTicker": self.sector_ticker,
|
||||
"sectorName": self.sector_name,
|
||||
"rankNow": self.rank_now,
|
||||
"rankPrevious": self.rank_previous,
|
||||
"rankChange": self.rank_change,
|
||||
"momentum20d": float(self.momentum_20d) if self.momentum_20d else None,
|
||||
"momentum50d": float(self.momentum_50d) if self.momentum_50d else None,
|
||||
"momentum200d": float(self.momentum_200d) if self.momentum_200d else None,
|
||||
"relativeStrength": float(self.relative_strength) if self.relative_strength else None,
|
||||
"signal": self.rotation_signal,
|
||||
"analysisSummary": self.analysis_summary,
|
||||
"macroContext": self.macro_context,
|
||||
}
|
||||
Reference in New Issue
Block a user