The largest US & European stocks, scored on valuation, price trend and analyst sentiment.
Everything here is a mechanical screen: formulas applied uniformly to public data. Nothing is a recommendation, a prediction, or advice tailored to you. "Buy candidates" and "sell candidates" mean a formula ranked them highest and lowest — not that anyone thinks you should trade them. Always do your own research; never invest money you can't afford to lose.
Value Score (0–100): each stock is ranked on valuation multiples — trailing P/E, PEG, Price/Book and EV/EBITDA — against the other stocks here, blended 50/50 with its position in its own sector's frozen market norms (so a bank has to be cheap for a bank, not just cheaper than tech, to score well). Financial companies use the classic bank lens instead: their P/B is ranked only against other financials, ROE (higher = better) joins their score, and EV/EBITDA — which isn't meaningful for banks — is left out. Higher = cheaper. A high score can mean a bargain or a business in trouble — the score can't tell the difference.
Indicator Score (~0.5–1.5): blends price-trend signals — the 50-day and 200-day moving averages, golden/death cross, RSI momentum — with the average analyst recommendation. Each component is centered at 1.0: above 1.0 leans positive, below leans negative.
Combined Score = Value Score × Indicator Score. The watchlist is simply the top 3 and bottom 3 by this number.
Absolute Score (0–100): a complementary rating that does not depend on the peer set — each stock is judged against a frozen snapshot of the wider US market (a top-500 cross-section, rebuilt roughly yearly): valuation multiples vs the whole market's distribution (40%), business quality — margins, returns and leverage — vs its own sector's norms (30%), and the analyst view — consensus target upside and buy-recommendation share (30%). Bands: Strong ≥ 70 · Solid ≥ 55 · Mixed ≥ 40 · Stretched ≥ 25 · Weak below. A stock can be cheap relative to peers yet score poorly here (or vice versa) — the two views together are the point. In short: the Value and Combined Scores grade on the curve; the Absolute Score grades against frozen market norms.
Prices, fundamentals and analyst data come from Finnhub and Yahoo Finance, refreshed roughly hourly on weekday market hours. Numbers can be delayed, stale over weekends, or occasionally wrong at the source; market caps, prices and multiples reflect the fetch time and drift intraday. Analyst consensus price targets are refreshed daily. Each stock's detail card shows its data freshness. European stocks are shown in their home-exchange currency — London prices are in pence.
A curated, growing pool of the largest US and UK/European companies: each week any new entrants to the top market-cap ranks are added, and once a stock is covered it stays covered. If a stock isn't here, it hasn't reached those ranks yet (or it's on our exclusion rules — e.g. secondary share lines). You can suggest additions on the Requests page.
The dashboard's scores are available as a free, read-only JSON API — no key or signup needed. Base URL: https://stockdash-proxy.harris-stockdash.workers.dev
GET /api — endpoint reference
GET /api/scores — every covered stock with Value / Indicator / Combined scores, valuation position and watchlist flag
GET /api/scores/{ticker} — one stock, incl. the score breakdown and its daily Combined-Score history
GET /api/watchlist — the current buy/sell watchlist
Responses are JSON with open CORS, so you can call it straight from a browser, script or spreadsheet — e.g. curl https://stockdash-proxy.harris-stockdash.workers.dev/api/scores. Data refreshes with the dashboard (roughly hourly on weekday market hours) and responses are cached for ~5 minutes. The API serves this dashboard's own derived metrics only — raw vendor market data (prices, fundamentals) is not re-served. If you build on it, a credit linking back here is appreciated; everything above about scores being a mechanical screen, not advice, applies to the API too.
This dashboard is provided as-is, with no guarantee of accuracy, availability or fitness for any purpose. By continuing you accept that any use of this information is entirely at your own risk.