feat(signal_v2-phase3b): foundation — config + state + requirements

- 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) <noreply@anthropic.com>
This commit is contained in:
2026-05-16 17:46:09 +09:00
parent b690900cfc
commit 4ac7da8670
3 changed files with 9 additions and 1 deletions

View File

@@ -7,3 +7,7 @@ pytest>=8.0
pytest-asyncio>=0.23 pytest-asyncio>=0.23
respx>=0.21 respx>=0.21
websockets>=12 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

View File

@@ -34,6 +34,7 @@ class Settings:
str(Path(__file__).parent.parent / "signal_v1" / "data" / "kis_token.json")) 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 @property
def kis_is_virtual(self) -> bool: def kis_is_virtual(self) -> bool:

View File

@@ -8,9 +8,12 @@ class PollState:
portfolio: dict | None = None portfolio: dict | None = None
news_sentiment: dict | None = None news_sentiment: dict | None = None
screener_preview: dict | None = None screener_preview: dict | None = None
# Phase 3a additions
minute_bars: dict[str, deque] = field(default_factory=dict) minute_bars: dict[str, deque] = field(default_factory=dict)
asking_price: dict[str, dict] = 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) last_updated: dict[str, str] = field(default_factory=dict)
fetch_errors: dict[str, int] = field(default_factory=dict) fetch_errors: dict[str, int] = field(default_factory=dict)