How Rankings Work
What "4+ sources agree" actually means, where the data comes from, and the honest limitations of a free-tier data pipeline.
The short version
Every stock in the tracked universe is checked against three independent data sources. If 4 or more distinctly-named sources (analyst firms or news outlets) currently rate a stock Buy, it lands on the Buy board; the same logic applies for Sell. Boards are ranked by how many sources agree — more agreement, higher rank — not by price movement, trading volume, or how many shares changed hands.
Data sources
SeekingAlpha and Morningstar specifically aren't reachable without violating their terms of service (paywalled ratings, bot-blocked pages), so this app uses three licensed APIs instead. Each contributes distinct, named, dated ratings:
| Source | What it contributes | Counts as |
|---|---|---|
| Finnhub | Aggregated analyst recommendation trend (how many firms rate a stock Strong Buy / Buy / Hold / Sell / Strong Sell) and the live price quote | 1 source: "Finnhub Analyst Consensus" |
| Financial Modeling Prep (FMP) | Individual rating actions from named analyst firms (e.g. "Citigroup: maintain Buy", "Keybanc: downgrade to Underweight") | 1 source per firm |
| Alpha Vantage | News sentiment analysis across financial outlets (Benzinga, Seeking Alpha, Reuters, TipRanks, etc.), plus historical price charts | 1 source per outlet with a strongly bullish/bearish article |
The consensus rule
- Only ratings from the trailing 90 days count — older ratings age out automatically rather than being deleted, so they can still count again if a source repeats the same call.
- A stock needs 4 or more distinct sources (by name, not by rating count) agreeing on the same direction to qualify for a board. One firm issuing three "maintain Buy" notes in 90 days still counts as one source, not three.
- A stock can appear on both boards at once if different sources are split — e.g. some analysts upgrading it while news sentiment turns bearish. That's a real signal of disagreement, not a bug.
- Within each board, stocks are ranked by total agreeing-source count, highest first, capped at the top 20.
Trend indicators
Every Monday, that week's Top 20 Buy and Sell boards are snapshotted. The ▲ / ▼ / – arrow next to a stock compares its rank to the previous week's snapshot, and the number beside it ("3w") is how many consecutive weeks it's held that exact rank. A ★ marks a stock's first week appearing on a board.
Tracked universe
This app tracks the 200 largest S&P 500 companies by market-cap weight, not the full US market. That's a deliberate tradeoff to stay within free-tier API rate limits — a smaller, higher-quality universe means daily call budgets stretch further and more symbols get real multi-source data rather than partial coverage across hundreds of thinly-tracked names.
What this is not
- Not trading volume or order flow. "Sources" here means analyst firms and news outlets issuing Buy/Sell opinions — not how many shares were bought or sold, and not a "most popular trades today" list.
- Not investment advice. This aggregates public opinions from third parties; it doesn't evaluate whether those opinions are correct.
- Not always fully live. Free-tier API rate limits (particularly Alpha Vantage's ~25 requests/day and FMP's daily cap) mean data collection is rationed — news-sentiment checks are prioritized for stocks already one source away from a board, and historical price charts refresh only for stocks currently on a board. A "Refresh Data" click may not update every source for every stock immediately if a provider's daily quota is already spent.