Connect a data source
This app reads live analyst recommendation trends from
Finnhub.
The free tier covers everything used here. The key is held by
serve.mjs as FINNHUB_API_KEY and attached to each
request there — it is never sent to this page, so it appears in no
URL, no console line and no screenshot of either.
You are on the hosted version. Two features need the local server
(serve.mjs) and are switched off here: Fundamentals,
because SEC EDGAR refuses requests from web pages, and Assess,
which needs an Anthropic key held server-side. Everything else runs in this browser.
Additional sources all optional
Each is a separate free account with its own quota, so connecting several adds up.
Most have budgets far too small for 579 names and are used only for a symbol you
open; Polygon is the exception — metered per minute rather than per day, it
is what the Technicals board’s price history comes from. Saving a key spends
one request to verify it. Keys live in this browser’s localStorage
and are sent only to the provider they belong to.
Board
Filters
Your watchlist is empty. Search for a ticker above to add one.
Score history
| Logged | Composite | Raw | Analysts | Price | Price since |
|---|
| Composite band | Symbols | Avg return | Median return |
|---|
Backtest
Scores are computed from bars up to and including the start date — the series is truncated there, so nothing after it is in scope. Forward return is the close at the start date against the close one holding period later; symbols without a complete forward window are excluded rather than measured over less time. Combined is the plain average of the two scores, and covers only symbols that have both — a name scored on one side alone is left out rather than filed next to a genuinely combined one. Averaging pulls scores toward the middle, so the fixed score bands leave the combined extremes nearly empty and its spread is then a few symbols wide; equal fifths ranks each score and cuts it into five groups of the same size, which is what makes the three columns comparable.
Rating harness
The rating is the one number on this board with no external evidence behind it. Every other score — including everything marked untested — descends from a published effect somebody measured on somebody’s data, even where this board has never confirmed it. The rating descends from a model’s judgment and nothing else. This page is the only thing that could ever change that, and until it holds enough entries the rating is untested in the strongest sense of the word.
Measured on this board’s stored series, the cross-sectional standard deviation of forward returns is 12.9 points at one month, 18.8 at three and 30.7 at six. At six months the standard error of the top-minus-bottom spread is therefore about 19 points with 5 assessments per bucket, 14 with 10, 9 with 25 and 6 with 50 — so with a few dozen logged assessments any spread smaller than roughly 27 points is inside the noise. Detecting a spread of the size a useful rating might actually have (5–10 points) would need 150–600 per bucket. This harness can catch a large effect or a backwards one. It is not going to certify a small one, and a reading that does not clear its own standard error is not a result. Dates matter more than names: assessments run in one batch share a market window, so their forward returns move together and the effective sample is nearer the number of distinct days than the number of rows.