TradingAgents/tradingagents/dataflows/discovery/scanners
Youssef Aitousarrah c792b17ab6 fix(discovery): fix three scanner hang/validation bugs found in ranker_debug.log
1. executor.shutdown(wait=True) still blocked after global timeout (critical)
   The previous fix added timeout= to as_completed() but used `with
   ThreadPoolExecutor() as executor`, whose __exit__ calls shutdown(wait=True).
   This meant the process still hung waiting for stuck threads (ml_signal) even
   after the TimeoutError was caught.  Fixed by creating the executor explicitly
   and calling shutdown(wait=False) in a finally block.

2. ml_signal hangs on every run — "Batch-downloading 592 tickers (1y)..." never
   completes. Root cause: a single yfinance request for 592 tickers × 1 year of
   daily OHLCV is a very large payload that regularly times out at the network
   layer. Fixed by:
   - Reducing default lookback from "1y" to "6mo" (halves download size)
   - Splitting downloads into 150-ticker chunks so a slow chunk doesn't kill
     the whole scan (partial results are still returned)

3. C (Citigroup) and other single-letter NYSE tickers rejected as invalid.
   validate_ticker_format used ^[A-Z]{2,5}$ requiring at least 2 letters.
   Real tickers like C, A, F, T, X, M are 1 letter. Fixed to ^[A-Z]{1,5}$.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 22:35:42 -08:00
..
__init__.py feat: improve all 9 scanners and add 3 new scanners 2026-02-20 08:36:18 -08:00
analyst_upgrades.py Update 2026-02-20 08:38:15 -08:00
earnings_calendar.py feat: improve all 9 scanners and add 3 new scanners 2026-02-20 08:36:18 -08:00
insider_buying.py feat: improve all 9 scanners and add 3 new scanners 2026-02-20 08:36:18 -08:00
market_movers.py feat: improve all 9 scanners and add 3 new scanners 2026-02-20 08:36:18 -08:00
ml_signal.py fix(discovery): fix three scanner hang/validation bugs found in ranker_debug.log 2026-02-20 22:35:42 -08:00
options_flow.py feat: improve all 9 scanners and add 3 new scanners 2026-02-20 08:36:18 -08:00
reddit_dd.py Update 2026-02-20 08:38:15 -08:00
reddit_trending.py feat: improve all 9 scanners and add 3 new scanners 2026-02-20 08:36:18 -08:00
sector_rotation.py fix(discovery): fix infinite hang when a scanner thread blocks indefinitely 2026-02-20 22:14:53 -08:00
semantic_news.py Update 2026-02-20 08:38:15 -08:00
technical_breakout.py Update 2026-02-20 08:38:15 -08:00
volume_accumulation.py Update 2026-02-20 08:38:15 -08:00