--- type: decision status: superseded superseded_by: 011-opt-in-vendor-fallback date: 2026-03-17 agent_author: "claude" tags: [data, alpha-vantage, yfinance, fallback] related_files: [tradingagents/dataflows/interface.py, tradingagents/dataflows/alpha_vantage_scanner.py, tradingagents/dataflows/yfinance_scanner.py] --- ## Context Alpha Vantage free/demo key doesn't support ETF symbols and has strict rate limits. Need reliable data for scanner. ## The Decision - `route_to_vendor()` catches `AlphaVantageError` (base class) plus `ConnectionError` and `TimeoutError` to trigger fallback. - AV scanner functions raise `AlphaVantageError` when ALL queries fail (not silently embedding errors in output strings). - yfinance is the fallback vendor and uses SPDR ETF proxies for sector performance instead of broken `Sector.overview`. ## Constraints - Functions inside `route_to_vendor` must RAISE on failure, not embed errors in return values. - Fallback catch must include `(AlphaVantageError, ConnectionError, TimeoutError)`, not just `RateLimitError`. ## Actionable Rules - Any new data vendor function used with `route_to_vendor` must raise on total failure. - Test both the primary and fallback paths when adding new vendor functions.