The German Analyst Upgrade Drift Was Netflix and Apple
We reported that German stocks drift +1.63% above the DAX after analyst upgrades. Then we checked the universe: only 1.5% of the events were German companies. 88% were US mega-caps' Frankfurt listings scored against a German index, and they drifted up after downgrades too. This is the correction.
Correction, August 2026. This post used to report that German stocks under-react to analyst upgrades, drifting +1.63% above the DAX over three months. That number was real but it wasn't measuring German stocks. Only 1.5% of the analyst events in our XETRA universe belonged to German companies. The rest were foreign companies' Frankfurt listings, mostly US mega-caps, scored against a German index. The post below is the corrected version. We've kept the original numbers visible so you can see exactly what changed and why.ContentsWhat we originally reportedWhat the universe actually containsSplit by domicile, the finding invertsWhy we can't just publish the German-only numbersWhat this means for reading exchange-filtered researchMethodLimitationsTakeaway
We built an event study on 21,539 analyst rating changes on XETRA-listed stocks and found what looked like a clean finding: German stocks under-react to analyst upgrades, and the drift keeps growing for three months. Then we checked which companies were actually in the universe. Netflix, Intel, Tesla, Wells Fargo, First Solar and Apple. The "German under-reaction" was US mega-caps outrunning the DAX.
Data: FMP financial data warehouse, 2012–2025. Updated August 2026.
What we originally reported
Screening every company listed on XETRA and measuring each analyst revision against the DAX produces this:
| Window | Upgrade CAR | t-stat | Downgrade CAR | t-stat |
|---|---|---|---|---|
| T+1 | +0.080% | 3.9 | -0.083% | -4.2 |
| T+5 | +0.198% | 4.6 | -0.105% | -2.5 |
| T+21 | +0.647% | 7.9 | +0.234% | 2.8 |
| T+63 | +1.335% | 8.7 | +0.562% | 3.7 |
n=10,844 upgrades, n=10,695 downgrades. Winsorized mean, next-day-close entry.
One bookkeeping note before the rest. These are rerun figures on current data, not the numbers exactly as first published. The three-month upgrade drift we published was +1.63%; the identical screen today returns +1.335%. FMP's data shifted underneath us. The mistake didn't.

Every upgrade window clears significance comfortably. The t-statistics run past 8. On its face this is one of the strongest post-announcement drift results you can find in developed-market equities, and that's how we wrote it up.
There's a problem sitting in plain view in that table. Look at the downgrade column. By T+21 it's positive. By T+63 it's +0.56% with a t-statistic of 3.7. Downgraded stocks are beating the index, significantly, for a quarter.
A real analyst signal can't do that. If upgrades genuinely predict outperformance, downgrades should predict the opposite, or nothing. When both directions drift the same way, something other than the analyst is moving the number.

What the universe actually contains
We joined every event to the company's country of domicile in FMP's profile table. XETRA breaks down like this:
| Group | Share of events | Events |
|---|---|---|
| Domiciled in Germany | 1.5% | 326 |
| Domiciled in the US | 88.1% | 18,972 |
| Other foreign | 10.4% | 2,241 |
Nearly nine in ten analyst revisions in a "German" study are revisions of US companies. The most-graded tickers in the universe are the German listing lines of American mega-caps:
| Ticker | Company | Grade events |
|---|---|---|
| NFC.DE | Netflix | 647 |
| INL.DE | Intel | 609 |
| TL0.DE | Tesla | 557 |
| NWT.DE | Wells Fargo | 545 |
| F3A.DE | First Solar | 544 |
| APC.DE | Apple | 526 |
When a US analyst upgrades Netflix, our study recorded the return on Netflix's Frankfurt line and subtracted the DAX. From 2012 to 2025 US mega-caps beat the DAX by a wide margin, in any 63-day window you care to pick, whether or not an analyst said anything. That gap is what the study was measuring.
Split by domicile, the finding inverts

| Group | Upgrade T+21 | Upgrade T+63 | Downgrade T+21 | Downgrade T+63 |
|---|---|---|---|---|
| US-domiciled (88.1%) | +0.700%** | +1.485%** | +0.281%** | +0.649%** |
| Other foreign (10.4%) | +0.698%** | +0.736% (ns) | +0.230% (ns) | +0.609% (ns) |
| German (1.5%) | -2.846%** | -3.449%** | -2.253%** | -4.927%** |
** = significant at p<0.05. ns = not significant.
The US-domiciled block carries the entire headline result, and it carries it in both directions. Upgrades +1.48% at three months. Downgrades +0.65% at three months. Both significant, both positive. That's a benchmark mismatch with a t-statistic attached, not an information effect.
German companies move the other way at every long window. That doesn't rescue the post as a "German stocks actually fall" story, for reasons in the next section, but it does kill the original claim outright. Whatever German companies do after an upgrade, they don't drift up against the DAX.
Why we can't just publish the German-only numbers
The obvious fix is to filter to German-domiciled companies and report those figures. We ran it. The sample won't support a conclusion:
- 155 upgrade events across 31 companies, over 14 years
- Deutsche Bank alone accounts for 54 of those 155 upgrades, 35% of the sample
- 116 of the 326 total German events fall in a single year, 2021
A -2.85% one-month CAR computed mostly from Deutsche Bank in 2021 isn't a fact about German equity markets. It's a fact about Deutsche Bank in 2021.
The coverage gap has a mundane cause. FMP's stock_grade table records most German companies' analyst actions against the primary or US ticker rather than the Frankfurt line. SAP has 536 grade records under SAP and 240 under SAP.DE. Siemens has 21 under SIEGY and 17 under SIE.DE. BMW has 6 records under BMW.DE across the whole period. Screening by exchange picks up the Frankfurt tickers, which is exactly where German companies' analyst coverage isn't.
So the honest position is that this dataset can't measure the German analyst revision effect in either direction. Not that the effect is negative.
What this means for reading exchange-filtered research
The mechanism generalises past this post. Any study that screens WHERE exchange = X and benchmarks against country X's index inherits two assumptions that mostly aren't true outside the US: that listing location tells you where a company is domiciled, and that the local index is the right risk benchmark for everything trading on that venue.
Our companion study shows the same contamination on the LSE (85.7% US-domiciled) and SIX (74.2%). Canada is the exception at 90.5% domestic, and the US is clean by construction.
The cheapest defence is the direction test. Run your signal and its inverse. If both produce the same sign against the benchmark, you're measuring the benchmark.
Method
Data source: Ceta Research (FMP stock_grade table, individual analyst grade changes) Universe: XETRA (Frankfurt Stock Exchange, market cap above €500M EUR) Period: 2012–2025 (14 years, 21,539 events) Study type: Event study. Each event measured independently. Benchmark: DAX (^GDAXI, German blue-chip index, local currency) Windows: T+1, T+5, T+21, T+63 trading days after the event Entry: Next-day close after announcement (MOC execution) Abnormal return: Stock return minus DAX return at each window Winsorization: 1st/99th percentile before computing statistics Data quality: Price rows whose adjusted close spikes and reverts within a day or two are removed before any return is computed. Events are dropped when the entry price is below $1 or a single window return exceeds +200%. Domicile: Company country from FMP's profile table, joined per event.
Limitations
Domicile is a proxy for risk exposure, not a perfect one. A German-domiciled company earning most of its revenue in dollars isn't well benchmarked by the DAX either. Splitting by domicile catches the large, obvious contamination. It doesn't produce a clean factor model.
The German sample is too small for any claim. 155 upgrade events, 31 companies, one name at 35% of the sample. We report it to show the original result doesn't survive, not as a replacement finding.
We didn't rerun with a currency-matched global benchmark. Scoring a US company's Frankfurt line against the S&P 500 in euros would be the more careful treatment. That's a different study.
2012–2025 only. FMP's stock_grade coverage before 2012 is essentially empty, so the window can't be extended backwards. Within it, XETRA events are spread evenly, about 1,600 a year before 2018 and 1,500 after. The German-domiciled subset is the part that isn't: 116 of its 326 events fall in 2021 alone.
Takeaway
The German analyst upgrade drift we published was a listing artifact. 88% of the events were US companies' Frankfurt lines measured against the DAX, and those listings drifted up after upgrades and after downgrades alike, which is the signature of a mismatched benchmark rather than a signal.
Restricted to German companies, the sample collapses to 155 upgrades across 31 names, a third of them Deutsche Bank. There's no German result here in either direction.
What survives from this project is the US study, where the universe is domestic, the benchmark matches, and the finding is less flattering: upgrade alpha is priced in on announcement day, and only clustered upgrades keep drifting afterward.
Data: FMP warehouse via Ceta Research, 2012–2025. XETRA stocks, market cap >€500M. Benchmark: DAX (^GDAXI). Entry: next-day close after announcement. Domicile from FMP profile country. Not investment advice.
The backtest code and the domicile decomposition script are on GitHub. Run the domicile check yourself: python3 analyst-revision/domicile_analysis.py