| Age | Commit message (Collapse) | Author |
|
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().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Add retry_async decorator with exponential backoff + jitter,
CircuitBreaker class with closed/open/half_open states, and
async_timeout context manager. Pin all shared deps with upper bounds.
|
|
19 tasks across 5 phases: shared library hardening, infrastructure,
service fixes, API security, and operational maturity.
|
|
Bottom-up upgrade plan covering 5 phases: shared library hardening,
infrastructure improvements, service-level fixes, API security, and
operational maturity.
|
|
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
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Add NEWS to EventType enum and NewsEvent class to events.py
- Add insert_news_item, get_recent_news, upsert_symbol_score,
get_top_symbol_scores, upsert_market_sentiment,
get_latest_market_sentiment, insert_stock_selection,
get_stock_selections methods to Database class in db.py
- Add test_news_events.py and test_db_news.py with full coverage
|
|
|
|
|
|
Add NewsCategory enum and NewsItem model to shared/models.py.
Create sentiment_models.py with SymbolScore, MarketSentiment, SelectedStock, Candidate.
|
|
19 tasks across 5 phases: shared models, news collector service (7 collectors),
sentiment aggregation pipeline, stock selector engine, and integration.
|
|
Design for upgrading MOC strategy from fixed symbols to dynamic,
news-driven stock selection with sentiment analysis pipeline.
|
|
|
|
- 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
|
|
|
|
|
|
- Data collector: Alpaca REST polling (replaces Binance WebSocket)
- Order executor: Alpaca submit_order (replaces ccxt)
- Claude stock screener: daily MOC candidate analysis
- Remove ccxt/websockets dependencies
- Default universe: AAPL, MSFT, GOOGL, AMZN, TSLA + 28 more
- 399 tests passing, lint clean
|
|
|
|
|
|
- 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
|
|
|
|
|
|
|
|
- Remove placeholder 'backtest report' command (no stored results)
- Connect walk-forward analysis to CLI: 'trading backtest walk-forward'
- Update test for renamed command
|
|
- SentimentProvider: fetches Fear & Greed Index (free, no key),
CryptoPanic news sentiment (free key), CryptoQuant exchange
netflow (free key)
- SentimentData: aggregated should_buy/should_block logic
- Fear < 30 = buy opportunity, Greed > 80 = block buying
- Negative news < -0.5 = block buying
- Exchange outflow = bullish, inflow = bearish
- Integrated into Asian Session RSI strategy as entry filter
- All providers optional — disabled when API key missing
- 14 sentiment tests + 386 total tests passing
|
|
Simple time-based + RSI strategy for small capital day trading:
- Trading window: KST 9:00-11:00 (UTC 0:00-2:00)
- Entry: RSI(14) < 25 + volume above average
- Exit: +1.5% TP, -0.7% SL, or session end time exit
- Risk: max 3 trades/day, pause after 2 consecutive losses
- Config: ~$75 per trade (10% of 100만원 capital)
|