Market Intelligence

Settings & System Health

Provider status, scan history, and how this dashboard is put together.

Last Scan

GroupProviderSucceededFailedStaleUniverse Size
cryptoBinance (public market data)2002
us-stockFinnhub -> Twelve Data470047
us-etfFinnhub -> Twelve Data240024
eu-stockDemo (synthetic)500050
ucits-etfDemo (synthetic)250025
indexDemo (synthetic)6006

Last scan completed: 24 Sept, 10:02 · Data mode: production

Discovery Engine

Discovery Scanner Statusproduction
Universe scanned
374
222 stocks, 152 ETFs
Pre-screened
371
of 374 attempted
Fully analyzed
50
shortlist size 50
Cache hits
30
history reused, not re-fetched
Stale / carried
280
last real data shown, not fabricated
Twelve Data budget
20/800
within budget
Last discovery scan
24 Sept, 10:02
Provider failures
0

Data Sources

Europe / UCITS ETFsDEMO

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.

US Stocks / ETFsLIVE

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.

Crypto (BTC/ETH)LIVE

Binance public, read-only market-data endpoints. No account, no key, no trading integration.

FX / IdentifiersNot yet wired into the scan loop

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.

Scheduling

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.

Cost

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.