From 35aa61c651217663406c9cd6df404f85338b2d68 Mon Sep 17 00:00:00 2001 From: TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> Date: Thu, 2 Apr 2026 14:17:43 +0900 Subject: style: fix lint and formatting issues across news collector and shared --- .../strategy-engine/src/strategy_engine/main.py | 6 ++-- .../src/strategy_engine/stock_selector.py | 13 +++---- .../strategy-engine/tests/test_stock_selector.py | 40 ++++++++++++---------- 3 files changed, 31 insertions(+), 28 deletions(-) (limited to 'services/strategy-engine') diff --git a/services/strategy-engine/src/strategy_engine/main.py b/services/strategy-engine/src/strategy_engine/main.py index e9c96b2..5a30766 100644 --- a/services/strategy-engine/src/strategy_engine/main.py +++ b/services/strategy-engine/src/strategy_engine/main.py @@ -126,9 +126,9 @@ async def run() -> None: anthropic_model=config.anthropic_model, max_picks=config.selector_max_picks, ) - tasks.append(asyncio.create_task( - run_stock_selector(selector, notifier, db, config, log) - )) + tasks.append( + asyncio.create_task(run_stock_selector(selector, notifier, db, config, log)) + ) log.info("stock_selector_enabled", time=config.selector_final_time) await asyncio.gather(*tasks) diff --git a/services/strategy-engine/src/strategy_engine/stock_selector.py b/services/strategy-engine/src/strategy_engine/stock_selector.py index e1f2fe7..268d557 100644 --- a/services/strategy-engine/src/strategy_engine/stock_selector.py +++ b/services/strategy-engine/src/strategy_engine/stock_selector.py @@ -4,17 +4,14 @@ import json import logging import re from datetime import datetime, timezone -from decimal import Decimal -from typing import Optional import aiohttp -import pandas as pd from shared.alpaca import AlpacaClient from shared.broker import RedisBroker from shared.db import Database from shared.models import OrderSide -from shared.sentiment_models import Candidate, MarketSentiment, SelectedStock, SymbolScore +from shared.sentiment_models import Candidate, MarketSentiment, SelectedStock logger = logging.getLogger(__name__) @@ -325,7 +322,9 @@ class StockSelector: ema20 = sum(closes[-20:]) / 20 # simple approximation current_price = closes[-1] if current_price <= ema20: - logger.debug("%s price %.2f <= EMA20 %.2f", candidate.symbol, current_price, ema20) + logger.debug( + "%s price %.2f <= EMA20 %.2f", candidate.symbol, current_price, ema20 + ) continue avg_volume = sum(volumes[:-1]) / max(len(volumes) - 1, 1) @@ -333,7 +332,9 @@ class StockSelector: if current_volume <= 0.5 * avg_volume: logger.debug( "%s volume %.0f <= 50%% avg %.0f", - candidate.symbol, current_volume, avg_volume, + candidate.symbol, + current_volume, + avg_volume, ) continue diff --git a/services/strategy-engine/tests/test_stock_selector.py b/services/strategy-engine/tests/test_stock_selector.py index a2f5bca..ff9d09c 100644 --- a/services/strategy-engine/tests/test_stock_selector.py +++ b/services/strategy-engine/tests/test_stock_selector.py @@ -1,12 +1,8 @@ """Tests for stock selector engine.""" -import pytest -from unittest.mock import AsyncMock, MagicMock, patch +from unittest.mock import AsyncMock, MagicMock from datetime import datetime, timezone -from decimal import Decimal -from shared.models import OrderSide -from shared.sentiment_models import SymbolScore, MarketSentiment, SelectedStock, Candidate from strategy_engine.stock_selector import ( SentimentCandidateSource, @@ -17,10 +13,12 @@ from strategy_engine.stock_selector import ( async def test_sentiment_candidate_source(): mock_db = MagicMock() - mock_db.get_top_symbol_scores = AsyncMock(return_value=[ - {"symbol": "AAPL", "composite": 0.8, "news_count": 5}, - {"symbol": "NVDA", "composite": 0.6, "news_count": 3}, - ]) + mock_db.get_top_symbol_scores = AsyncMock( + return_value=[ + {"symbol": "AAPL", "composite": 0.8, "news_count": 5}, + {"symbol": "NVDA", "composite": 0.6, "news_count": 3}, + ] + ) source = SentimentCandidateSource(mock_db) candidates = await source.get_candidates() @@ -64,15 +62,19 @@ def test_parse_llm_selections_with_markdown(): async def test_selector_blocks_on_risk_off(): mock_db = MagicMock() - mock_db.get_latest_market_sentiment = AsyncMock(return_value={ - "fear_greed": 15, - "fear_greed_label": "Extreme Fear", - "vix": 35.0, - "fed_stance": "neutral", - "market_regime": "risk_off", - "updated_at": datetime.now(timezone.utc), - }) - - selector = StockSelector(db=mock_db, broker=MagicMock(), alpaca=MagicMock(), anthropic_api_key="test") + mock_db.get_latest_market_sentiment = AsyncMock( + return_value={ + "fear_greed": 15, + "fear_greed_label": "Extreme Fear", + "vix": 35.0, + "fed_stance": "neutral", + "market_regime": "risk_off", + "updated_at": datetime.now(timezone.utc), + } + ) + + selector = StockSelector( + db=mock_db, broker=MagicMock(), alpaca=MagicMock(), anthropic_api_key="test" + ) result = await selector.select() assert result == [] -- cgit v1.2.3