From 4ac7da8670f8f9b5d84e26ebb5ecc14d03d4a2c0 Mon Sep 17 00:00:00 2001 From: gahusb Date: Sat, 16 May 2026 17:46:09 +0900 Subject: [PATCH] =?UTF-8?q?feat(signal=5Fv2-phase3b):=20foundation=20?= =?UTF-8?q?=E2=80=94=20config=20+=20state=20+=20requirements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - config.py: CHRONOS_MODEL env (default amazon/chronos-2) - state.py: PollState extended with daily_ohlcv + chronos_predictions + minute_momentum - requirements.txt: transformers + chronos-forecasting 33 existing tests still pass. Co-Authored-By: Claude Opus 4.7 (1M context) --- requirements.txt | 4 ++++ signal_v2/config.py | 1 + signal_v2/state.py | 5 ++++- 3 files changed, 9 insertions(+), 1 deletion(-) 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)