When a bulk download reports failures such as "couldn't be fetched" or "returned no data," the cause is almost always the data source rate-limiting the app, not bad symbols and not lost data. Existing history is always kept; a failed fetch just means no new rows this attempt.
What to do
- Use "Retry these." Failed tickers stay listed and selected, so one click re-runs just the stragglers. Most clear on the first retry.
- If retries keep failing, wait. A tripped Yahoo limit can stall requests for a while (sometimes the better part of an hour). The app already paces itself, with profile fetches strictly one at a time and price history in modest batches, because that's the fastest sustainable pace; hammering retries only extends the timeout.
- A ticker that fails every time at one source may just not be covered there. Pin it to the other source on Securities & prices and rebuild its history.
Why this happens
Yahoo's feed is unofficial and throttles sustained request volume; a thousand-ticker universe simply takes minutes. Tiingo has documented, per-key limits: the free plan allows 50 requests an hour, one per Tiingo-priced fund per update. Past that, an update reports the rest as waiting for Tiingo's hourly limit rather than failed, and asks for them first next time.
Failures that aren't rate limits look different: a symbol typo fails instantly and identically at both sources, and a stale price with successful downloads is a different problem entirely.