Verdict: No, not "mostly against" — the full-sample contrarian rate runs 36.6% to 49.2% across all eight horizons, never sustainably above 50%; at +1Y it falls to 38.6% and the direction-aligned return turns positive at +5.83%.
76 major revisions, 464 valid observations across eight horizons. The contrarian rate oscillates between 36.6% and 49.2% at short horizons and falls to 38.6% at +1Y; direction-aligned mean returns are +0.09% / +0.16% / -0.42% / +0.85% in the first four short windows and +0.53% / +1.35% / +3.60% / +5.83% in the last four. "GS/MS are reverse indicators" therefore fails as a general claim and survives only as a conditional claim about horizon, action, firm and asset class: 57.5% after upgrades, Morgan Stanley at +1D, and single-stock calls at 75.0%. Splitting into layers is presentation only — the headline contrarian rate keeps the full 76-event denominator.
Definitions: a fall after an upgrade, or a rise after a downgrade = contrarian. Rate = contrarian count / valid observations (zero returns and unmatured windows excluded). Direction-aligned return = +r for upgrades, −r for downgrades; >0 means the call worked, <0 means the market went against it. Eight identification horizons: +1 / +5 / +10 / +15 / +20 / +60 / +120 / +250 trading days ≈ 1D / 1W / 2W / 3W / 1M / 1Q / 6M / 1Y; +15 (3W) is newly added on the same basis as the other seven. Prices: Wind Financial MCP daily closes, 2006-01-03 to 2026-11-06. Events come from public media and secondary accounts of research notes; dates in Section 5.
Every curve uses "trading days after the event" on the x-axis, with the event-day base return set to 0. Curves are cross-sectional averages; days with fewer than 3 valid events are left blank (no interpolation). Above zero = market moved with the call; below zero = against it.
The 76 events are cut into four disjoint classes: 29 equity-index, 6 sector, 16 commodity and 25 single-stock events, summing to 76 — exactly the full sample. Each layer reports its own contrarian rate, aligned return and contrarian magnitude across all eight horizons. Layering is presentation only: the headline contrarian rate keeps the full 76-event denominator, with each window using that window's matured, non-zero observations.
Prices are integrated for every watchlist group, but for Silver, Major HK-listed companies no verifiable GS/MS major upgrade or downgrade was found in the study window, so their event counts are honestly left at zero rather than fabricated. 9 of the US top-30 names are integrated; the remainder are blocked by the monthly batch quota and the daily tracker will backfill them and fold any new revisions into the statistics.
Seven recalculations address clustering of recent events, dilution by unmatured windows, a single extreme case, low-quality sources and shared-source sector splits. Each cell shows the contrarian rate with the direction-aligned mean return below it, across all eight horizons. These are robustness checks only; the headline denominator is unchanged.
+6M contrarian rate 42.6% (n=47); +1Y 38.6% (n=44, agree 27 / contra 17), aligned returns +3.60% / +5.83%. Neither long horizon makes the reversal more common. But events matured enough for +250 stop around mid-2025, so the long-horizon sample is structurally tilted toward early events and cannot separate horizon length from period.
Every table so far answers was the direction right? (a count), not how far did it go the other way?. We add contrarian magnitude CM = max(0, −aligned return): zero when the call agrees, otherwise equal to the loss from following the note and to the gain from fading it. The contrarian rate stays near 38.6%, yet mean CM rises from 1.03% at +1D to 8.61% at +1Y (about 8.4x), and the top three events supply 29.1%–46.4% of total CM in every window. The largest reversal is therefore not noise but the main source of contrarian P&L.
Peak day = the trading day when that event's CM was largest. 4 of the top 12 involve crude or gold: directional commodity calls are the main source of extreme reversals. P01 peaks at +74.55% on T+204. The pre-20D / pre-60D columns identify calls made after a run-up or a sell-off; source grades are explained in Section 5.
Each day we scan for newly published upgrades or downgrades from both firms on major global indices, commodities and key stocks / sectors (targets, ratings, price forecasts, outlooks), de-duplicate by date ±1 day + firm + instrument + direction, append to daily-tracker/events.jsonl, recompute the statistics, rebuild both editions and upload the refreshed deliverables.
| Date | Firm | Action | Instrument | Change summary | Source | Grade | Status |
|---|---|---|---|---|---|---|---|
| Tracking is live; waiting for the first upgrade / downgrade entry. | |||||||
Only Goldman Sachs and Morgan Stanley are tracked; JPMorgan, Citi, UBS and others are excluded. Entries without an exact date, without a tradeable instrument, or based on unverifiable second-hand accounts are logged but excluded from the backtest. Unmatured horizons stay blank (no interpolation). Source grades A / B are defined in section 5.1.
Actual returns (%) for 76 events across eight horizons. Default: green = up, red = down (international convention); switch or customise via Colour settings. Cell shading follows direction alignment: light blue = agree, light orange = contrarian, grey = unmatured / zero. Prices are Wind Financial MCP daily closes. Click any row to open that event's daily path in three views (actual / aligned / contrarian magnitude).
Source grades: A authoritative financial media / institutional public abstract with an explicit date; B secondary account of a research note, original to be verified. This event list is not a primary research-note database; grade-B dates and magnitudes may be off by ±1–2 days, the largest input error in this study.
| Item | Convention |
|---|---|
| Firm scope | Strictly Goldman Sachs and Morgan Stanley. JPMorgan, Citi, UBS, BofA, Jefferies etc. are excluded even when named in the same article. |
| Event definition | A major upgrade or downgrade of an index target / rating, a commodity price forecast, a sector view, or a stock rating / target price, with a verifiable public date. No exact date, no tradable instrument, no price series → excluded. |
| Asset classes | Four disjoint classes: indices / sectors / commodities / single stocks, summing to the full sample. Layering is presentation only and does not change the headline denominator; sector calls use index proxies and are flagged as such. |
| Instrument mapping | Index targets → CSI 300 / Hang Seng / Hang Seng Tech / S&P 500 / Nasdaq 100; gold / silver / oil → spot gold / spot silver / Brent; sectors → matching CSI or thematic indices; stocks → adjusted A-share closes and explicit HK / US tickers. MSCI China and HSCEI are proxied by the corresponding market index. |
| Base price | Event-day close; for a non-trading day, the most recent prior trading-day close. |
| Identification horizons | Eight: +1 / +5 / +10 / +15 / +20 / +60 / +120 / +250 trading days ≈ 1D / 1W / 2W / 3W / 1M / 1Q / 6M / 1Y. Counted in actual trading days after holiday placeholders were removed. |
| Return | r = close on the N-th trading day / base close − 1; unmatured windows return null with no interpolation. |
| Agree / contrarian | Rise after upgrade / fall after downgrade = agree; fall after upgrade / rise after downgrade = contrarian; r=0 is flat. |
Early Wind series contain holiday placeholder rows (open = high = low = close, or duplicate dates). Left in, they shift every window by counting non-trading days. 275 rows were removed across 33 instruments. The v2 cleaning rule was corrected: a row is a placeholder only when all four prices are equal and the close equals the previous close; four-equal-price rows whose close changes are genuine trading days (common in early gold / crude / semiconductor index data) and are kept. Limit-up "one-price" days in individual stocks are kept.
US single stocks are now in the statistics: querying Wind with explicit tickers (NVDA.O / AAPL.O / MSFT.O / INTC.O etc.) returns genuine single-stock daily closes, fixing the earlier Chinese-name fuzzy match. There are 32 US events in total, 17 of them on US top-30 names. HK / offshore China assets are reported on both a primary and an expanded basis (see 6.3 and the layer section). Cases previously listed as a qualitative appendix (Adobe / Intuit / China CXO / Arm) remain excluded because no verifiable exact publication date or usable price series exists.
Price library market-data.json (33 instruments, cleaned 2006–2026 daily closes) → gs-ms-event-study-20y.js → study-result-20y.json → build_report.py compiles the static pages. Edit the event list and re-run to recompute every number, curve and layer table. Inside site/, index.html (Chinese, site root) and en/index.html (English, /en/) link to each other with relative paths; all data and the chart library are inlined — zero external requests, works fully offline. Live at contrarianindicator.net (Chinese at /, English at /en/), served by Caddy on a Tencent Cloud Lighthouse instance (Frankfurt) with automatic HTTPS; the 08:45 daily tracker rebuilds and syncs both editions.
Upgrades / downgrades also have a meaning independent of sell-side research: a company's own earnings pre-announcement, flash report or guidance being revised sharply up or down, and the timing chosen to publish those numbers. This section uses twenty years (2006-2026) of structured A-share pre-announcement fields for market-wide statistics — the source is corporate disclosure, not broker research — with a +/-50% threshold on forecast net-profit change. All post-event returns are recomputed from the in-house 2006-2026 daily closes on the same eight horizons.
Each main-line event is bucketed by the percentile of its event-day close within the trailing 250 trading days. High (>=80th percentile): n=41, with contrarian rates of 56.8% at +2W and 50.0% at +1M, both above the full-sample 49.2% / 42.9%. Low (<20th percentile, n=15) rises above 55% only from +1M onward. Timing is an informative condition: optimistic calls published at price highs are punished more often, but the effect migrates across horizons and is not an unconditional contrarian signal.
Streaks are defined as same-firm / same-instrument / same-direction runs with gaps <=180 days and no intervening opposite revision. The 2nd consecutive call (n=11) shows a 22.2% contrarian rate at +1M and mean peak CM of 12.0%, versus 46.7% and 14.6% for the first call (n=63). Third-or-later calls number 2 (too few to conclude). Repeated revision in one direction is itself a state variable worth tracking: once the market has been re-anchored several times, the marginal information and reversal risk of the next call both change.