diff --git a/requirements.txt b/requirements.txt index 5185c72..abadae1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,7 @@ pytest>=8.0 pytest-asyncio>=0.23 respx>=0.21 websockets>=12 +# Phase 3b dependencies (Chronos-2 + ML) +transformers>=4.40 +chronos-forecasting>=1.4 +# torch: typically already installed via V1 venv; if not, install with CUDA support manually diff --git a/signal_v2/config.py b/signal_v2/config.py index fdc29de..e0c0033 100644 --- a/signal_v2/config.py +++ b/signal_v2/config.py @@ -34,6 +34,7 @@ class Settings: str(Path(__file__).parent.parent / "signal_v1" / "data" / "kis_token.json")) ) ) + chronos_model: str = field(default_factory=lambda: os.getenv("CHRONOS_MODEL", "amazon/chronos-2")) @property def kis_is_virtual(self) -> bool: diff --git a/signal_v2/state.py b/signal_v2/state.py index 669953f..11fd7a6 100644 --- a/signal_v2/state.py +++ b/signal_v2/state.py @@ -8,9 +8,12 @@ class PollState: portfolio: dict | None = None news_sentiment: dict | None = None screener_preview: dict | None = None - # Phase 3a additions minute_bars: dict[str, deque] = field(default_factory=dict) asking_price: dict[str, dict] = field(default_factory=dict) + # Phase 3b additions + daily_ohlcv: dict[str, list[dict]] = field(default_factory=dict) + chronos_predictions: dict[str, dict] = field(default_factory=dict) + minute_momentum: dict[str, str] = field(default_factory=dict) last_updated: dict[str, str] = field(default_factory=dict) fetch_errors: dict[str, int] = field(default_factory=dict)