config.py: STOP_LOSS_PCT / TAKE_PROFIT_PCT / CHRONOS_SPREAD_THRESHOLD / ASKING_BID_RATIO_THRESHOLD / CONFIDENCE_THRESHOLD / MIN_MOMENTUM_FOR_BUY env vars with sensible defaults (Phase 0 spec §6.1-§6.2 values). state.py: PollState.signals dict[ticker, signal_body] for Phase 5 input. 45 existing tests still pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
23 lines
825 B
Python
23 lines
825 B
Python
"""PollState — process-wide singleton."""
|
|
from collections import deque
|
|
from dataclasses import dataclass, field
|
|
|
|
|
|
@dataclass
|
|
class PollState:
|
|
portfolio: dict | None = None
|
|
news_sentiment: dict | None = None
|
|
screener_preview: dict | None = None
|
|
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)
|
|
signals: dict[str, dict] = field(default_factory=dict)
|
|
last_updated: dict[str, str] = field(default_factory=dict)
|
|
fetch_errors: dict[str, int] = field(default_factory=dict)
|
|
|
|
|
|
state = PollState()
|