feat: add technical indicator and fundamentals fields to MarketSnapshot

This commit is contained in:
Viktor Barzin 2026-02-23 21:39:37 +00:00
parent 5cb65e8e4f
commit 2398e8faf6
No known key found for this signature in database
GPG key ID: 0EB088298288D958

View file

@ -134,6 +134,22 @@ class OHLCVBar(BaseModel):
volume: float
class FundamentalsSnapshot(BaseModel):
"""Fundamental financial data for a single ticker — cached daily."""
ticker: str
eps_ttm: float | None = None
pe_ratio: float | None = None
peg_ratio: float | None = None
revenue_growth_yoy: float | None = None
profit_margin: float | None = None
debt_to_equity: float | None = None
market_cap: float | None = None
fetched_at: datetime
model_config = {"from_attributes": True}
class MarketSnapshot(BaseModel):
"""Snapshot of market data for a single ticker — used by strategies."""
@ -147,7 +163,20 @@ class MarketSnapshot(BaseModel):
sma_20: float | None = None
sma_50: float | None = None
rsi: float | None = None
# Technical indicators — computed by MarketDataManager
ema_9: float | None = None
ema_21: float | None = None
sma_200: float | None = None
macd: float | None = None
macd_signal: float | None = None
macd_histogram: float | None = None
bollinger_upper: float | None = None
bollinger_mid: float | None = None
bollinger_lower: float | None = None
vwap: float | None = None
atr: float | None = None
bars: list[dict[str, Any]] = Field(default_factory=list)
fundamentals: FundamentalsSnapshot | None = None
model_config = {"from_attributes": True}