TradingAgents/tradingagents/dataflows/discovery
Youssef Aitousarrah e15e2df7a5 feat(cache): unified ticker universe + nightly OHLCV prefetch
- tradingagents/dataflows/universe.py: single source of truth for ticker
  universe; all scanners now call load_universe(config) instead of
  duplicating the 3-level fallback chain with hardcoded "data/tickers.txt"

- scripts/prefetch_ohlcv.py: nightly script using existing ohlcv_cache.py
  incremental logic; first run downloads 1y history, subsequent runs append
  only new trading days

- .github/workflows/prefetch.yml: runs at 01:00 UTC daily, before all other
  workflows; commits updated parquet to repo

- Updated 6 scanners: minervini, high_52w_breakout, ml_signal, options_flow,
  sector_rotation, technical_breakout — removed duplicate DEFAULT_TICKER_FILE
  constants and _load_tickers_from_file() functions

- minervini, high_52w_breakout, technical_breakout: replace yf.download()
  with download_ohlcv_cached() — reads from prefetched cache instead of
  hitting yfinance at discovery time

- default_config.py: added discovery.ohlcv_cache_dir config key

- data/ohlcv_cache/: initial 1y backfill (588 tickers, 5.4MB parquet)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 16:18:52 -07:00
..
performance feat: discovery pipeline enhancements with ML signal scanner 2026-02-09 22:53:42 -08:00
scanners feat(cache): unified ticker universe + nightly OHLCV prefetch 2026-04-14 16:18:52 -07:00
__init__.py feat: discovery system code quality improvements and concurrent execution 2026-02-05 23:27:01 -08:00
analytics.py learn(iterate): 2026-04-12 — surface worst-performing strategies in ranker context; LLM now sees news_catalyst (0% 7d win rate) and social_hype (14.3%) as explicit penalties 2026-04-12 18:04:46 -07:00
candidate.py feat: discovery system code quality improvements and concurrent execution 2026-02-05 23:27:01 -08:00
common_utils.py fix(discovery): fix three scanner hang/validation bugs found in ranker_debug.log 2026-02-20 22:35:42 -08:00
discovery_config.py learn(iterate): 2026-04-12 — raise score threshold 55→65; minervini leads; insider_buying staleness pattern identified 2026-04-12 18:04:46 -07:00
filter.py feat(scanners): add minervini scanner to registry 2026-04-06 13:51:42 -07:00
ranker.py learn(iterate): 2026-04-14 — automated iteration run 2026-04-14 07:25:30 +00:00
risk_metrics.py fix(discovery): commit risk_metrics.py and reduce Minervini max_tickers to 50 2026-04-07 16:24:29 -07:00
scanner_registry.py Update 2026-02-20 08:38:15 -08:00
ticker_matcher.py feat: discovery pipeline enhancements with ML signal scanner 2026-02-09 22:53:42 -08:00
utils.py feat(scanners): add minervini scanner to registry 2026-04-06 13:51:42 -07:00