Methodology
How a call gets a grade
The score is arithmetic. The headline on a call is the recommendation. The grade uses a direction bucket taken from the desk rating, then checks that bucket against the return over a fixed window. A price target is checked against how far the later price landed from that target.
Recommendation and direction
The label on a call, in a book, and on the home tape is the recommendation: what the analyst did. Initiate Buy. Upgrade to Overweight. Downgrade to Neutral. Reiterate Outperform. Maintain Hold, Maintain Neutral, or Maintain Equal-Weight when the desk word is in the hold family and the rating did not change. Target raise. Target cut.
A target raise or a target cut is that action. It is not rewritten as Buy or Sell. The desk rating — the house word on the note — sits under the recommendation. When the action is only a target change, that word does not become the headline. David Chiaverini raising the JPM target while the desk stays at Hold is labeled Target raise. Hold is not the title of that page.
Direction for grading is a coarser bucket, used only by the score. Strong Buy, Buy, Overweight, and Outperform are Buy. Hold, Neutral, and Equal-Weight are Hold. Underperform, Underweight, and Sell are Sell. Screens that still show Buy, Hold, or Sell mark that column “direction for grading.” The same call can be headlined Target raise and graded as Sell, because the desk did not change the rating. The grade asks whether the shares moved the way that bucket required. The target is scored on its own.
Direction
The direction bucket after the call is what gets graded, not the recommendation verb. Strong Buy, Buy, Overweight, and Outperform are up. Hold, Neutral, and Equal-Weight are flat. Underperform, Underweight, and Sell are down.
Each horizon has one threshold, T. The bands do not overlap except on the exact boundary, where both the directional call and a hold receive a hit.
- Up hits when the forward return is at least T.
- Down hits when the forward return is at most −T.
- Flat hits when the absolute return is at most T.
| Horizon | Threshold T | Target full credit | Target zero |
|---|---|---|---|
| 2 weeks | 1% | within 2% | beyond 8% |
| 30 days | 2% | within 4% | beyond 12% |
| 60 days | 4% | within 6% | beyond 16% |
| 90 days | 5% | within 8% | beyond 22% |
| 1 year | 8% | within 12% | beyond 35% |
Forward return is the price at the horizon divided by the price on the call date, minus one. Windows are calendar days: 14 (2 weeks), 30, 60, 90, and 365. Prices are Yahoo Finance adjusted closes (adjusted for splits and dividends). A window that runs past the history is ungraded and reads Not graded yet. A date with no quote is an error, not a blank.
A near-miss is not a hit. For up calls it is a return from half of T up to, but not including, T. Down calls mirror that. Flat calls are a near-miss when the absolute return is outside T but inside 1.35×T. Hit rate uses full hits only. Miss rate is one minus the hit rate, so near-misses count as misses.
Price target
Target error is the absolute gap between the price at the horizon and the target, divided by the price at the call. Dividing by the starting price keeps a $2 miss on a $20 stock comparable to a $20 miss on a $200 stock.
Inside the full-credit band the target earns 30 points. At or beyond the zero band it earns none. Between those bands the points fall in a straight line. A call with no target is scored on direction only, scaled so a clean hit is 100.
GC score
A report card shows two grades. The integer is the GC (Grade Calibration) score, from 1 to 10. GC 1 is a poor track record. GC 10 is an excellent one. Beside it, every card shows the full score out of 100. Hit rate, return if followed, and the number of graded calls stay underneath. They do not set the rank.
The engine scores a call from 0 to 100. Direction is worth 70: all 70 on a hit, 35 on a near-miss, and zero on a miss. The target adds up to 30. That 0–100 score is always visible. The GC score is the same number placed on the GC Scale. It is not a second formula, and it does not look at anyone else’s score.
70+ is STRONG, 40–69 PROVISIONAL, under 40 WEAK; a graded 0 is EXIT LIQUIDITY.
| Tube | Score |
|---|---|
| STRONG | 70+ |
| PROVISIONAL | 40–69 |
| WEAK | under 40 |
A graded 0 is EXIT LIQUIDITY.
Order is separate. A board can sort names by the overall factor, or by the GC score. Names that share a GC score keep the higher overall factor ahead. That sort is the only use of rank.
“If followed” is a separate column. Buys contribute the forward return. Sells contribute the inverse, the return from acting on the negative call. Holds are excluded, because a hold is not an instruction to be long or short.
Overall factor
The overall factor is the average of the 0–100 grades on active calls at this horizon. A call superseded by a later note on the same ticker within 90 days stays visible and does not enter this average, the GC score, or the hit rate.
That average is the same report-card rollup the leaderboards use. It is not a second formula and it is not a blend of horizons. Pick 2W, 30D, 60D, 90D, or 1Y, and the factor is the mean grade of the active calls at that window. An open window is not graded yet, so it waits. The GC score on the same card is this factor placed on the GC Scale with the 70 and 40 lines above. It is not a separate average.
The card also shows how many active calls are graded, how many calls are superseded, and the hit rate on the active book only. Superseded calls stay in their own list, with the nullified and supersedes notes still attached.
GC Scale
On the analysts board, “all horizons” fills the tube with the mean of the windows that already have a print. Picking 2W, 30D, 60D, 90D, or 1Y uses that window only. The board tube averages active calls. A superseded call can still show its own tube. It does not move the board average, the hit rate, or the GC score.
Leaderboards
An analyst’s overall factor is the average of that person’s active graded calls at the selected horizon, on the 0–100 scale. The GC score is that same factor on the GC Scale, using the 70 and 40 lines. A bank uses the average of the bank’s active calls, not the average of its analysts. Boards then order those names. One analyst with forty active calls outweighs one analyst with eight. That is deliberate: the firm published the calls.
Boards hide thin books. Analysts need 8 active graded calls, or 4 inside a sector filter. Banks need 20, or 8 inside a sector. A name with fewer graded calls stays off the leaderboard. Its page still shows the calls that exist. An open horizon reads Not graded yet. A graded 0 reads EXIT LIQUIDITY. Scores from 40 up to 70 read PROVISIONAL. Both the GC score and the overall factor are columns. The default order is the overall factor. Sorting by the GC score is on the page; names that share a GC score keep the higher overall factor ahead. Worst offenders reverse whichever key is selected. Under 40 the GC score is 1–4. From 40 up to 70 it is 5–7. At or above 70 it is 8–10.
Sector filters keep calls whose ticker is in that sector. An analyst who only covers technology is unchanged. A generalist would be scored only on the names in the filter.
Same ticker within 90 days
When the same analyst publishes another call on the same ticker, and the new call’s date is within 90 calendar days of the previous call on that pair, the older call is nullified for scoring. It does not enter the overall factor, the GC score, the hit rate, or the count of graded calls. The newer call is the one that counts. Profiles and call lists keep the active book and the superseded history in separate sections.
A run of calls stays one streak while each step is 90 days or closer. Only the latest call in that streak is active. Every earlier call is nullified, and each one points at the call that replaced it. A gap longer than 90 days starts a new streak. Both sides of that gap stay active, and neither gets a nullify note.
The older row reads “Nullified — superseded by later call on [date] (within 90 days).” The newer row reads “Supersedes prior call on [date] (within 90 days).” A call in the middle of a streak carries both sentences. The date, recommendation, desk rating, target, entry price, and 2W / 30D / 60D / 90D / 1Y outcomes stay on the page. The horizon math does not change. Prices are Yahoo Finance adjusted closes (adjusted for splits and dividends).
Tickers match after dots and slashes are folded to hyphens, so BRK.B and BRK-B are one name. Two calls on the same calendar day are inside the window. The later timestamp wins, and if the timestamps match, the higher call id is treated as later. That same-day order is reported as ambiguous because the calendar date alone does not say which note came first. A call with no date is left active and is not chained.
Controversial flags
A call is flagged when the rating moves by two notches or more (Sell to Buy, Hold to Strong Buy, and the reverse) or when the price target changes by 25% or more versus that analyst’s prior target on the same name. The flag is a label, not a penalty. The grade still comes from the later price.
Where the calls come from
Grades use historical prices. Prices are Yahoo Finance adjusted closes (adjusted for splits and dividends). If that calendar date is not a session, the price is the prior session’s adjusted close, and only when that session is within four calendar days. A missing quote stops the seed and the import. There is no invented price. History ends 16 Oct 2026. A window that has not elapsed is left blank and reads Not graded yet.
Each call is taken from a public news source and links to that page. A German-language page on t-online.de is labelled Source (German). Notes restate the rating and the target in English. They are not a quotation of a research report. data_source=public means a public news source. licensed remains available for a later feed the operator has rights to. A public row is never labelled verified. The validator rejects every row that is not public or licensed.
The names with a split in this window — WMT (3-for-1 on 26 Feb 2024), NVDA (10-for-1 on 10 Jun 2024), AVGO (10-for-1 on 15 Jul 2024), NFLX (10-for-1 on 17 Nov 2025) — use that Yahoo Finance adjusted close, already on the post-split scale and adjusted for dividends, for every date, including sessions before the split, so a window that crosses the split does not print a false crash.
GradedCalls Analysts is not affiliated with any bank, broker-dealer, or third-party ratings site. It does not scrape rankings sites, and it does not call a paid market-data API. Prices are adjusted closes, not a firm’s published targets.
The grader reads a rating, a price at the call, an optional target, and prices 14, 30, 60, 90, and 365 calendar days later. Those prices come from the adjusted-close file. An analyst with few graded calls stays off the leaderboard and still shows PROVISIONAL when the score is from 40 up to 70. A graded 0 is the only score that reads EXIT LIQUIDITY.
What the score is not
- Not investment advice. Past accuracy does not predict future results.
- Not adjusted for the market, the sector, or beta. A buy in a roaring tape can “hit” without any insight. A later version can add a benchmark; this one does not hide that choice.
- Not a judgment of report quality, management access, or timing inside the window. The only input is the rating, the target, and the later print.
- Not a live ranking product, and not those firms’ published research. The grade is this formula applied to the sourced calls.
The worked numbers on each call page use this same module. If the page and this write-up ever disagree, the code in the scoring module is the source of truth — and this page reads its thresholds directly from that module.