Skip to content

Stale data & provider outages

3 min read · updated 2026-10-23

Free data sources go down; that’s the deal. SleeveFolio’s response is layered: fall back, then disclose.

Fallback first

Each data need has a provider chain: price history (“bars”) tries Tiingo, then falls back to Alpaca IEX. A single provider outage usually costs nothing but a short delay, and once a day’s prices are fetched they’re stored and reused, so recent history stays on hand even while a source is down.

The freshness chip

Pages such as Signals and Positions pin a freshness chip to their header, color-blind safe (a colored dot paired with its label, never color alone); the dashboard flags its chart in place instead, and only when the chart is behind. Pages that read live from your broker — your positions — read real-time: they load fresh or show a clear error, never silently aged numbers. Pages built on stored data show how old that data is instead. Your signals (from the latest run) read fresh when current and go stale once the set is more than 20 hours old, for example if the daily run hasn’t landed. The dashboard’s equity curve (from your daily balance snapshots) carries no chip while its snapshots arrive on time; if one is missed (or its age can’t be read), a chip appears just above the chart, amber once the newest snapshot is more than 26 hours old and stale after 50 — for example if a scheduled update stops running. So an aging chart or an old signal set is always flagged, never dressed up as live.

When a whole chain is down

When an entire chain is down (every fallback exhausted) a banner appears above your data reading Live data is unavailable, names the affected chain (for example Market history), and offers a Retry button. Your most recent cached values still load and order paths stay open. A single provider failing while its fallback still serves shows nothing: the banner appears only when no provider in a chain can serve.

A few panels also say so in place when their own source can’t be reached, instead of showing a healthy-looking empty state: the Filings page’s material-events and earnings cards, the fundamentals panel beside the earnings calendar, and the dashboard’s S&P 500 comparison line (its legend reads benchmark unavailable while your own curve keeps rendering).

What keeps working

Everything that doesn’t need fresh external data: your positions and orders (as long as the broker connection itself is up), the audit log, settings, the kill switch. Signal runs handle outages symbol by symbol: if every source for a symbol is down, it’s still scored, using the most recent prices (and, for stocks, company financials) already stored. There’s no age cutoff on those stored values; the price scores look back over months of history, so a short outage is a small slice of what they measure. Only a symbol without enough stored price history to score is left out of that run.

Automatic trading is stricter: it never sizes an order from an old price. A buy with no fresh price is skipped for that run, and if your broker’s market clock can’t be read, stock orders wait as if the market were closed. When missing market data is the only reason a run skipped anything, the run is recorded as short of market data and, if it placed nothing, a note in your in-app inbox (never an email) says so. The next scheduled run tries again.

What to do

Usually: wait. Chains recover on their own. If the staleness coincides with broker trouble, see Broker connection errors; if you’re live and uneasy, Pause costs nothing.