Provider status, scan history, and how this dashboard is put together.
| Group | Provider | Succeeded | Failed | Stale | Universe Size |
|---|---|---|---|---|---|
| crypto | Binance (public market data) | 2 | 0 | 0 | 2 |
| us-stock | Finnhub -> Twelve Data | 47 | 0 | 0 | 47 |
| us-etf | Finnhub -> Twelve Data | 24 | 0 | 0 | 24 |
| eu-stock | Demo (synthetic) | 50 | 0 | 0 | 50 |
| ucits-etf | Demo (synthetic) | 25 | 0 | 0 | 25 |
| index | Demo (synthetic) | 6 | 0 | 0 | 6 |
Last scan completed: 24 Sept, 10:02 · Data mode: production
Stooq (the intended free EOD source) currently returns a JavaScript proof-of-work anti-bot challenge that cannot be solved without violating the no-bypass rule. Runs on synthetic demo data, clearly labeled, until a real free/licensed source is available.
Finnhub (real-time quote + up to 1yr daily candles, free, no card) as primary; Twelve Data (free, no card) as a REAL-only fallback per instrument when Finnhub fails. Never falls back to synthetic data — if both fail, the last real data is shown as STALE. Set FINNHUB_API_KEY (and optionally TWELVE_DATA_API_KEY) to switch on real data.
Binance public, read-only market-data endpoints. No account, no key, no trading integration.
Frankfurter (FX) and OpenFIGI (ISIN verification) were used during universe curation; live FX conversion in the UI is a v1.1 item — nothing in the current app requires it.
A GitHub Actions workflow runs every 3 hours (0 */3 * * *) — reduced from 2h to stay comfortably inside free-tier limits now that the discovery engine pre-screens a much broader universe every run. Each run scans the tracked-universe groups actually due right now (Europe/UCITS in their pre-open/post-close windows, US stocks/ETFs during NYSE hours, crypto always), then runs the discovery engine: a lightweight quote-only pre-screen across ~374 curated stock/ETF candidates, a dynamic shortlist of the strongest ~50, and full technical analysis on just that shortlist. Daily historical bars are only re-fetched once a real new trading day's close is available — same-day rescans reuse the cached history and only refresh live quotes, to conserve free-tier API quota. GitHub Actions' free scheduler is documented as best-effort and can run late under load — this dashboard always shows the actual last-scan and scanned timestamps rather than assuming a fixed cadence. Can also be triggered manually via the Actions tab, or locally via npm run scan and npm run discover.
Every configured service is free-tier with no card on file: GitHub Actions, Finnhub, Twelve Data, Binance public endpoints, Cloudflare Pages. Expected recurring cost: €0/month.