Do Analyst Upgrades Actually Move Stock Prices? We Measured 61,410 of Them
We ran an event study on 61,410 analyst upgrades on US stocks, 2012 to 2025. The move happens on announcement day. What survives needs no benchmark: one month on, stocks upgraded by two or more firms are up 1.82% against 1.05% for single-analyst upgrades. A 0.77 point gap.
We ran an event study on 14 years of individual analyst rating changes on US stocks. Upgrades move stocks, but almost entirely on the announcement day. If you enter the next day at close, the aggregate upgrade signal is gone. The story is in the breakdown, and it survives without a benchmark at all: one month after an upgrade, stocks upgraded by two or more independent firms are up 1.82% while stocks upgraded by one firm are up 1.05%. That 0.77 point gap is the finding.
Contents
- Method
- What We Found
- The upgrade move is priced in on announcement day
- Clustered upgrades: the only thing that still works
- Large-magnitude upgrades: negligible effect
- Downgrades: persistent but modest
- The asymmetry
- The Data
- Limitations
- The SQL
- Takeaway
Data: FMP financial data warehouse, 2012–2025. Updated August 2026.
Method
Data source: Ceta Research (FMP stock_grade table, individual analyst grade changes) Universe: NYSE, NASDAQ, AMEX (market cap above $1B USD, measured in the company's reporting currency and only where that is USD) Period: 2012–2025 (14 years, 125,598 events) Study type: Event study. Each event is measured independently. Not a portfolio backtest. Benchmark: SPY (S&P 500 ETF) Windows: T+1, T+5, T+21, T+63 trading days after the event Entry: Next-day close after the announcement (MOC execution: can't buy at announcement-day close) Abnormal return: Stock return minus SPY return at each window Deduplication: If the same analyst firm revises the same stock on the same date multiple times (data fetch artifact), only the most recent record is kept. Winsorization: 1st/99th percentile applied before computing statistics to reduce outlier impact. Data quality: Price rows whose adjusted close spikes and reverts within a day or two are removed before any return is computed. Individual events are dropped when the entry price is below $1 or a single window return exceeds +200%. Size filter: FMP reports market cap in the currency a company files in. An issuer that files in euros or yuan would clear a $1B test on a number that isn't dollars, so events are dropped when the reporting currency isn't the listing currency. That removes about 6% of events, most of them foreign issuers with US listings, and leaves the universe 90.4% US-domiciled.
Each analyst upgrade or downgrade is treated as a separate event. We don't aggregate to consensus. We measure each firm's individual revision.
What counts as an upgrade: The action column in FMP's stock_grade table is 'upgrade'. This captures grade changes like Hold→Buy, Sell→Buy, Neutral→Overweight.
Cluster detection: An upgrade is classified as "clustered" when two or more distinct analyst firms upgrade the same stock within 30 calendar days of each other. Single means no other firms upgraded within that window.
Magnitude classification: - Small (+2): Hold→Buy type moves (the most common) - Large (+4): Sell→Buy type moves (rare, stronger prior conviction change)
What We Found
The upgrade move is priced in on announcement day
The average analyst upgrade on a US stock does nothing measurable by the next day's close. By one month, all upgrades are behind SPY by -0.13%. By three months, -0.38%.
| Window | Upgrade CAR | t-stat | n |
|---|---|---|---|
| T+1 | +0.021% | 2.6 | 61,410 |
| T+5 | +0.017% | 0.9 | 61,410 |
| T+21 | -0.128% | -3.6 | 61,410 |
| T+63 | -0.381% | -5.9 | 61,410 |
Winsorized mean, next-day-close entry. T+5 is not significant.
The stock moves when the upgrade comes out. By the time you can act on it, the move is gone.
Read the T+21 and T+63 rows carefully, because they are not what they look like. Those are returns against SPY, and a $1B-plus stock with analyst coverage is not the S&P 500. Over 2012 to 2025 it lost to the S&P 500 whether or not an analyst said anything. We measure that drag directly further down. The short version: most of what those two rows show is the universe, not the upgrade.
This doesn't mean upgrades contain no information. It means the information gets priced in immediately.
Clustered upgrades: the only thing that still works
When two or more independent analyst firms upgrade the same stock within 30 days, the signal is different. Clustered upgrades still show positive drift even after the announcement-day move.
| Category | T+1 | T+5 | T+21 | T+63 |
|---|---|---|---|---|
| Clustered (n=26,728) | +0.057% | +0.087% | +0.308% | +0.168% |
| Single (n=34,682) | -0.006% | -0.038% | -0.466% | -0.804% |
Clustered upgrades produce +0.31% at T+21 (t=5.5, significant). Single-analyst upgrades produce -0.47% at T+21 (t=-10.0, strongly negative). The gap is 0.77 percentage points.
This is the one result here that owes nothing to the choice of benchmark. Both groups are the same event type, in the same universe, over the same period, so whatever the benchmark does it does to both. Strip SPY out entirely and compare raw stock returns:
| Category | Raw return, T+21 | Raw return, T+63 |
|---|---|---|
| Clustered | +1.818% | +4.409% |
| Single | +1.045% | +3.067% |
| Gap | +0.773pp | +1.342pp |
The one-month gap is 0.773 points with no benchmark involved, which is the same 0.773 points the abnormal-return table shows. Nothing about it can be an artifact of comparing mid-caps to the S&P 500.
Single-analyst upgrades don't just fail to add value relative to clustered ones: they trail them by three quarters of a point in a month. The interpretation: when one analyst upgrades a stock, it's likely already reflected in price or the upgrade is weaker information. When multiple independent firms upgrade within 30 days, something else is happening: either a coordinated information signal or genuine fundamental improvement that takes time to reach price.
Large-magnitude upgrades: negligible effect
Large-magnitude upgrades (Sell→Buy, grade change of +4) look like they drift at T+21, but the number doesn't clear significance:
| Category | n | T+1 CAR | T+21 CAR | T+63 CAR |
|---|---|---|---|---|
| Large (+4, Sell→Buy) | 1,165 | +0.071% | +0.514% | -0.395% |
| Small (+2, Hold→Buy) | 60,245 | +0.020% | -0.141% | -0.382% |
The T+21 figure for large upgrades carries a t-statistic of 1.8 on 1,165 events, so it is not distinguishable from zero, and by T+63 it has turned negative. How far one analyst moves a rating tells you less than whether a second analyst agreed.
That matches Stickel (1995), which decomposed the announcement reaction and found the magnitude of a recommendation change behaves like temporary price pressure rather than a permanent information effect.
Downgrades: persistent but modest
Downgrades still underperform after the announcement day, but the effect is smaller than same-day-entry studies suggest, and smaller again once you account for what the universe was doing anyway.
| Window | Downgrade CAR | t-stat |
|---|---|---|
| T+1 | -0.025% | -2.9 |
| T+5 | -0.025% | -1.3 |
| T+21 | -0.054% | -1.4 |
| T+63 | -0.527% | -7.8 |
n=64,188 downgrades. Significant at T+1 and T+63 only. The one-month figure is not distinguishable from zero.
The three-month number needs the same care as the upgrade one. Read against SPY it is -0.53%. But pool every event in the study, upgrades and downgrades together, and the average is -0.46% at three months. That pooled figure is roughly what a $1B-plus US stock with analyst coverage did against the S&P 500 in this period, regardless of what the rating action was.
| T+63 | vs SPY | vs the pooled event average |
|---|---|---|
| Upgrades | -0.381% | +0.082pp |
| Downgrades | -0.527% | -0.064pp |
| Upgrades minus downgrades | +0.146pp |
So the downgrade-specific part is about six hundredths of a point, not half a point, and the cleanest statement is the spread: three months out, upgraded stocks beat downgraded ones by 0.15 points. That is small, it is consistent across 14 years and 125,598 events, and it points the right way.
The direction matches Womack (1996), which found post-recommendation drift of about +2.4% after buy recommendations, modest and short-lived, against roughly -9.1% after sells, running for six months. Our magnitudes are far smaller because we enter at the next close on a later and much larger sample, but the sell side is still where the more durable information sits.
One caveat on our own control. Pooling upgrades and downgrades is not the same as a set of stocks with no rating event at all: analyst actions cluster after big moves and around earnings. It is a first cut at the drag, not a clean counterfactual. A study built to measure the level rather than the spread would need a benchmark matched to this universe on size and sector, which the S&P 500 isn't.
The asymmetry
Clustered upgrades pull ahead. Single upgrades fall behind. Downgrades trail upgrades. The US equity market is efficient enough to price most rating information on announcement day, and what survives afterward is a difference between groups, not a level: clustered against single at one month, upgraded against downgraded at three.
The Data


Limitations
Same-day execution is assumed to be impossible. Results use next-day-close entry. In practice, retail investors still can't capture announcement-day moves; the actual gap between announcement-day price and next-day open is where much of the return lives.
Market cap filter. We excluded stocks below $1B market cap. Smaller stocks may show different patterns. We also drop events where the company's reporting currency isn't USD, because FMP's market cap is denominated in the filing currency and the threshold would otherwise be applied to the wrong number. That costs about 6% of events.
Survivorship bias is limited. The event study measures returns from the event date forward. Stocks delisted after the event create a negative tail in long-window returns, so T+63 figures may be slightly optimistic (for upgrades) and slightly pessimistic (for downgrades).
2012–2025 only. FMP's stock_grade coverage before 2012 is sparse. Results cover one extended bull market, one COVID crash-and-recovery, and a period of rapid rate change. A longer history would test robustness across more regimes.
Cluster window is fixed at 30 days. Different windows may produce different results. 30 days is the baseline used across all five markets in this study.
SPY is not the right benchmark for this universe, and we've said so where it matters. The universe is $1B-plus US listings with analyst coverage; the benchmark is a large-cap index, over the period of maximum large-cap dominance. That mismatch is why we report the cluster result on raw returns and the upgrade-downgrade result as a spread. Any single CAR level in this post carries the drag and should be read with it.
The universe is 90.4% US-domiciled, with Canadian, British and Irish issuers making up most of the rest. That is a real domestic universe measured against a domestic benchmark, and it is the reason this study survived when its European companions didn't: there, most listed names were foreign secondary lines and the numbers said more about the benchmark than the analyst. The cross-market comparison explains what went wrong and why the US result is the one that stands.
The SQL
The current upgrade cluster screen for US stocks:
WITH us_universe AS (
SELECT p.symbol, p.companyName, p.marketCap
FROM profile p
WHERE p.exchange IN ('NYSE', 'NASDAQ', 'AMEX')
AND p.isFund = false
AND p.isEtf = false
AND p.isActivelyTrading = true
AND p.marketCap > 1e9
QUALIFY ROW_NUMBER() OVER (PARTITION BY p.companyName
ORDER BY p.averageVolume DESC) = 1
),
deduped AS (
SELECT
g.symbol, CAST(g.date AS DATE) AS revision_date, g.gradingCompany,
g.previousGrade, g.newGrade,
ROW_NUMBER() OVER (
PARTITION BY g.symbol, CAST(g.date AS DATE), g.gradingCompany
ORDER BY g.dateEpoch DESC
) AS rn
FROM stock_grade g
WHERE CAST(g.date AS DATE) >= CURRENT_DATE - INTERVAL '30' DAY
AND g.action = 'upgrade'
AND g.symbol IN (SELECT symbol FROM us_universe)
),
upgrades AS (
SELECT symbol, revision_date, gradingCompany, previousGrade, newGrade
FROM deduped WHERE rn = 1
),
clusters AS (
SELECT
symbol,
COUNT(DISTINCT gradingCompany) AS distinct_analysts,
MIN(revision_date) AS first_upgrade,
MAX(revision_date) AS last_upgrade,
STRING_AGG(DISTINCT gradingCompany, ', ' ORDER BY gradingCompany) AS analyst_firms,
STRING_AGG(DISTINCT newGrade, ', ' ORDER BY newGrade) AS new_grades
FROM upgrades
GROUP BY symbol
HAVING COUNT(DISTINCT gradingCompany) >= 2
)
SELECT
c.symbol,
u.companyName,
c.distinct_analysts,
c.first_upgrade,
c.last_upgrade,
c.analyst_firms,
c.new_grades,
ROUND(u.marketCap / 1e9, 1) AS mktcap_bn
FROM clusters c
JOIN us_universe u ON c.symbol = u.symbol
ORDER BY c.distinct_analysts DESC, c.last_upgrade DESC
LIMIT 30
Takeaway
Analyst upgrades on US stocks move prices immediately, but that move happens on announcement day, not after. Enter the day after at close and the aggregate upgrade is worth nothing you can trade.
What survives is a difference, not a level. One month after an upgrade, stocks that two or more independent firms upgraded within 30 days are up 1.82%, against 1.05% for stocks one firm upgraded. A 0.77 point gap, on raw returns, with no benchmark in the calculation and no way for a benchmark to have produced it. Three months out, upgraded stocks beat downgraded ones by 0.15 points.
How far a single analyst moved the rating adds nothing: the Sell-to-Buy jumps aren't distinguishable from zero at one month.
The practical takeaway: a single analyst upgrade tells you the price moved yesterday. Multiple upgrades from different firms within 30 days tell you something the market hasn't fully absorbed.
Data: FMP warehouse via Ceta Research, 2012–2025. Event study using individual analyst grade changes (stock_grade table). Entry: next-day close after announcement. 125,598 events, 90.4% US-domiciled.
Can you replicate these results? Every number in this post is derived from FMP's stock_grade table. The cluster screen SQL above reproduces the current signal. The backtest code is available on GitHub.
Past performance does not guarantee future results. This is educational content, not investment advice.