summaryrefslogtreecommitdiff
path: root/services/strategy-engine/src/strategy_engine
AgeCommit message (Collapse)Author
63 min.fix: add session lock in StockSelector, remove unused HEALTH_PORT_OFFSET, ↵HEADmasterTheSiahxyz
lint fixes - Add asyncio.Lock to StockSelector._ensure_session() to prevent race condition - Remove unused HEALTH_PORT_OFFSET constant from news-collector - Auto-fix import sorting and formatting from ruff
67 min.fix: remove SecretStr field overrides in service subclass configsTheSiahxyz
StrategyConfig and NewsCollectorConfig redefined anthropic_api_key and finnhub_api_key as plain str, shadowing the parent SecretStr type. This caused AttributeError at runtime when .get_secret_value() was called. The fields are already inherited from Settings — no need to redeclare.
76 min.style: auto-fix lint violations from enhanced ruff rulesTheSiahxyz
84 min.refactor: specialize exception handling across all servicesTheSiahxyz
88 min.fix: deduplicate LLM JSON parsing and reuse aiohttp sessions in stock selectorTheSiahxyz
Extract _extract_json_array() to eliminate duplicate JSON parsing logic between _parse_llm_selections() and LLMCandidateSource._parse_candidates(). Add session reuse in StockSelector via _ensure_session()/close() methods instead of creating new aiohttp.ClientSession per HTTP call. Pass shared session to LLMCandidateSource.get_candidates().
88 min.feat: add graceful shutdown with SIGTERM/SIGINT handlers to all servicesTheSiahxyz
94 min.feat: add config validation, SecretStr for secrets, API security fieldsTheSiahxyz
3 hoursrefactor: remove dead code (SentimentData, CircuitBreaker, TradeRow, unused ↵TheSiahxyz
configs) - Remove SentimentData class and tests (superseded by SentimentAggregator) - Remove CircuitBreaker, CircuitState, retry_with_backoff and tests (never used) - Remove TradeRow ORM model and tests (no DB methods reference it) - Remove unused config fields: circuit_breaker_*, selector_candidates_time, selector_filter_time
3 hoursstyle: fix lint and formatting issues across news collector and sharedTheSiahxyz
3 hoursfeat: integrate stock selector into strategy engine schedulerTheSiahxyz
3 hoursfeat: implement 3-stage stock selector (sentiment → technical → LLM)TheSiahxyz
Adds SentimentCandidateSource (DB scores), LLMCandidateSource (Claude news analysis), and StockSelector orchestrating candidate merge, RSI/EMA20/volume technical filter, and LLM final 2-3 pick selection with Redis publish and DB persistence.
7 hoursrefactor: purge all remaining crypto/Binance referencesTheSiahxyz
- Replace BTCUSDT/SOLUSDT/ETHUSDT with AAPL/MSFT in all test files - Update backtester default symbol to AAPL - Update strategy-engine default symbols to US stocks - Update project description and CLI help text - Remove empty superpowers docs directory - Zero crypto references remaining in codebase
7 hoursrefactor: remove all crypto/Binance code, update to US stock symbolsTheSiahxyz
7 hoursrefactor: migrate to US stocks with Alpaca APITheSiahxyz
- Replace Binance/ccxt with Alpaca REST client (paper + live) - Add MOC (Market on Close) strategy for overnight gap trading - Wire sentiment into strategy engine main loop - Add EMA + bullish candle entry filters to Asian RSI - Remove crypto-specific exchange factory - Update config: Alpaca keys replace Binance keys - 399 tests passing, lint clean
7 hoursrefactor: replace Binance/ccxt with Alpaca API client for US stocksTheSiahxyz
7 hoursfeat: wire sentiment into engine + add EMA/bullish candle entry filtersTheSiahxyz
23 hoursfix: lint cleanup after critical and high priority fixesTheSiahxyz
23 hoursfix: WS factory, backtester config, CI docker builds, health port docsTheSiahxyz
23 hoursfix(strategy-engine): process multiple symbols concurrently with asyncio.gatherTheSiahxyz
24 hoursfix: lint cleanup for API, combined strategy, and formattingTheSiahxyz
24 hoursfeat(security): add bearer token auth for health/metrics endpointsTheSiahxyz
25 hoursfix: resolve lint issues and final integration fixesTheSiahxyz
- Fix ambiguous variable name in binance_rest.py - Remove unused volumes variable in volume_profile_strategy.py - Fix import ordering in backtester main.py and test_metrics.py - Auto-format all files with ruff
25 hoursfeat(strategy): add warmup_period to BaseStrategy and YAML config loadingTheSiahxyz
25 hoursfeat(services): integrate structlog, healthcheck, metrics, and TelegramTheSiahxyz
Replace logging.basicConfig/getLogger with structlog setup_logging in all four service entry points. Add HealthCheckServer, ServiceMetrics, and TelegramNotifier initialization to each service. Update OrderExecutor to accept a notifier parameter and send order notifications. Add RedisBroker.ping() for health checks. Update executor tests with notifier=AsyncMock().
25 hoursfeat: initial trading platform implementationTheSiahxyz
Binance spot crypto trading platform with microservices architecture: - shared: Pydantic models, Redis Streams broker, asyncpg DB layer - data-collector: Binance WebSocket/REST market data collection - strategy-engine: Plugin-based strategy execution (RSI, Grid) - order-executor: Order execution with risk management - portfolio-manager: Position tracking and PnL calculation - backtester: Historical strategy testing with simulator - cli: Click-based CLI for all operations - Docker Compose orchestration with Redis and PostgreSQL - 24 test files covering all modules