# Macro events, surprises and administrations vs NQ — RESULTS **Date:** 2026-08-25 · **Pre-reg:** `2026-08-25-fundamentals-prereg.md` (frozen 20:25 MDT, before any result) · **Data:** NQ 1m 2010-06-07 → 2026-08-25 (4,033 sessions); `fmp/econ-calendar-2016..2026` (42,089 rows → **1,755 classified pre-open events with consensus + first print**, 909 sessions with a composite surprise) · **Script:** `fp-backtest/fundamentals_nq.py` · **Raw:** `2026-08-25-fundamentals-results.txt` Study #3 of the day. Families and `econSign` reused **verbatim** from the shipped `fp-terminal/scripts/backtest-surprise.mjs`; surprises standardized with an **expanding** (strictly backward) σ rather than that script's full-sample σ. --- ## Headline **The macro→NQ transmission channel switched on around 2020, and it runs backwards from the textbook: good economic news now sells the Nasdaq off.** The relationship is statistically real in the current regime and economically coherent, but it is **not directly tradable** as a direction rule, and it did not exist before 2020. ## VERDICT by hypothesis | | Verdict | |---|---| | **H1** pre-open composite surprise → RTH session | **CONTESTED** — slope passes (t = −3.03) but fails both the tradability and stability legs | | **H2** event-day premium (Savor–Wilson on NQ) | **REFUTED** — event days are *worse*, not better | | **H3** administration effect | **Confounded, as predicted** — the one significant era effect is entirely the COVID year | | *(bonus)* pre-FOMC overnight drift | **Robust and survives every check** — the strongest thing found today | --- ## H1 — the composite surprise OLS `ret_rth ~ signed_z`, 2016–2026, n = 909: **slope = −10.20 bps per 1 σ of surprise, t = −3.03.** (Full-sample-σ robustness, matching the shipped script's convention: −9.77, t = −2.66.) Negative means: **a positive economic surprise predicts a *lower* NQ session return.** Good news is bad news — the rate channel dominating the growth channel for a long-duration index. Horizon matters enormously: | target | slope | t | |---|---|---| | first 5 min | −0.53 | −0.80 | | first 15 min | −0.55 | −0.53 | | **full RTH session** | **−10.20** | **−3.03** | The desk's existing surprise study stopped at 15 minutes and found nothing. **That was the right answer for that horizon** — the effect is not in the open, it accumulates over the session. Extending the window is what surfaced it. ### But it is not tradable, and it is not stable **Tradability.** Trading `sign(signed_z)` at the open, flat at 15:59: hit rate 48.2 %, gross −1.88 bps, t = −0.45; net of 1.0 pt friction −2.82 bps, t = −0.67. (Flipping to the correct sign gives +1.88 bps gross, t = +0.45 — still nothing.) The regression slope comes from the *magnitude* relationship on large-surprise days, not from a reliable sign relationship. A sign-only rule discards exactly the information that makes the slope significant. **Stability — the important part:** | split | n | slope | t | |---|---|---|---| | **IS (< 2020)** | 313 | **−0.13** | **−0.04** | | **OOS (≥ 2020)** | 596 | **−25.09** | **−4.28** | The effect **did not exist before 2020** and is strong after. This is not decay — it is the reverse: a channel switching *on*. The economics are clean: under ZIRP with quiescent inflation, a strong payroll or retail print carried no rate implication for the Nasdaq. Post-2020, with inflation live and the Fed reactive, the same print moves the discount rate and a long-duration index falls. Year-by-year the slope is wild (2021 +28.8, 2022 −55.6, 2023 −66.0, 2025 +60.5; 5/11 positive), so the pooled OOS number should be read as "the regime has a sign," not "the effect is stable enough to size." Per the pre-registered rule (§8: pass slope, fail cost/stability → **contested, shadow-only**), H1 is **CONTESTED**. ## H2 — event-day premium: REFUTED on NQ Savor–Wilson find equities earn most of their premium on scheduled announcement days. On NQ, 2016–2026: | target | event days | non-event days | difference | t | |---|---|---|---|---| | RTH open→close | +0.41 bps (n=728) | +4.13 bps (n=1,923) | **−3.72** | −0.76 | | close→close | +4.14 bps | +9.38 bps | −5.24 | −0.83 | Event days are **directionally worse**, not better, on both measures. Not significant, so the honest statement is "no announcement premium is detectable on NQ in this window," not "event days are bad." Either way, **the premium a day trader can capture inside RTH is absent.** ## Bonus finding — pre-FOMC overnight drift is real and robust Not the primary, but the strongest result of the day. NQ's prior-18:00-ET → 09:30 open return: | sample | n | mean | t | median | |---|---|---|---|---| | **all FOMC days 2016–2026** | 82 | **+26.02 bps** | **+3.59** | +14.59 | | 2016–2019 | 32 | +10.16 | +2.12 | +12.38 | | 2020–2026 | 50 | +36.17 | +3.20 | +22.69 | | **excluding 2020** | 74 | **+21.88** | **+2.88** | +13.78 | | dropping the single largest obs (+380 bps, 2022-01-26) | 81 | +21.65 | **+3.70** | — | It survives every robustness check I threw at it: present in **both** eras, median positive, and **removing the biggest observation makes the t-stat go up**, so it is not outlier-driven. Non-FOMC nights average +4.42 bps, so this is ~5× the baseline overnight drift. **Caveat that keeps it from being a finding-finding:** this is the *overnight leg only*, whereas Lucca–Moench measure the 24 hours before the 14:00 announcement on SPX — so it is an analogue, not a replication. And it is one cell among ~176 in this study; with the cumulative family at ~544, expected max |t| under the pure null is ≈ 3.3, so t = 3.59 clears the bar but not comfortably. It is a **forward-shadow candidate**, not something to size tomorrow. Note this also sits *against* Kurov–Wolfe–Gilbert's "disappearing pre-FOMC drift" (post-2015 decay). In this window, on this instrument, it has not disappeared. ## Per-family: which release actually moves the session | family | n | slope | t | econSign | |---|---|---|---|---| | **claims** | 502 | **+2.51** | **+4.20** | −1 | | retail_mom | 135 | −12.98 | −2.47 | +1 | | unemp | 143 | −7.20 | −2.02 | 0 | | durable_mom | 101 | +17.90 | +1.63 | +1 | | nfp | 101 | +4.21 | +1.65 | 0 | | core_cpi_mom | 112 | +14.14 | +1.61 | −1 | | cpi_mom | 153 | +7.34 | +1.36 | −1 | | others | | | \|t\| < 1 | | **Initial jobless claims is the standout** — and note the sign: `econSign` is −1 (more claims = bad news), and the slope is **positive**, so *bad* labour news → NQ *up*. Same rate-channel logic. Its slope is remarkably stable across regimes (+2.52 pre-2020, +2.53 post-2020) even though its significance is not (t = +0.45 → +3.69), which is a *better* pattern than the composite's: the relationship looks constant and was simply buried in noise before. Claims is also the highest-frequency release (weekly, n = 502), which is why it accumulates significance the monthly series cannot. With 11 families tested, one at t = 4.20 exceeds what multiple testing alone would produce — worth a dedicated follow-up. ## H3 — administrations: the confound, demonstrated | admin | sessions | mean RTH | t | event-day RTH | surprise slope | t | n | |---|---|---|---|---|---|---|---| | Obama-II | 1,645 | +2.23 | +1.06 | +4.33 | +6.84 | +1.72 | 58 | | **Trump-I** | 992 | +3.54 | +1.05 | +2.82 | **−15.25** | **−4.32** | 352 | | Biden | 998 | +2.52 | +0.67 | +2.89 | −7.09 | −0.16 | 364 | | Trump-II | 398 | +2.77 | +0.47 | −11.21 | +1.50 | +0.07 | 135 | Exactly one cell is significant — Trump-I at t = −4.32. The pre-registration said any administration effect would be confounded, so I tested it directly: | slice | n | slope | t | |---|---|---|---| | Trump-I, all | 352 | −15.25 | **−4.32** | | **Trump-I, excluding 2020** | 259 | **−4.10** | **−0.96** | | 2020 alone | 93 | −26.60 | −4.12 | **The entire "Trump-I administration effect" is the COVID year.** Remove 2020 and it vanishes. This is the cleanest available demonstration that administration is not a causal variable here. Each administration is **one draw**, collinear with the Fed cycle, the inflation regime, COVID and the mega-cap AI trend. Trump-II is 398 sessions (~19 months) and its −11.21 bps event-day mean rests on a handful of releases. **No causal claim is made, and none is supportable from this data.** Use administration as an era *label* for regime awareness, never as a predictor. ## What this changes on the desk 1. **The Desk Read's macro handling should be regime-aware, not fixed-sign.** The pre-open composite carries a *signed* relationship in the current regime (good news → lower NQ) that was absent pre-2020. A hard-coded `econSign` prior is right today and was wrong for the first half of the sample. Worth conditioning on inflation/Fed regime rather than assuming. 2. **The horizon matters more than the signal.** Nothing is visible at 5 or 15 minutes; the effect is a session-long drift. The existing desk study's null at 15m was correct, not a miss. 3. **Do not expect an announcement premium on NQ intraday.** H2 refuted; if anything event days are flatter. 4. **Two forward-shadow candidates**, neither shippable on this evidence: the **pre-FOMC overnight drift** (+22 bps ex-2020, t = +2.88) and the **claims → session** relationship (stable slope across regimes, t = +3.69 post-2020). Both need forward grading, and both are single cells in a large family. 5. **"News" proper remains untested** — this desk has no archived timestamped news sentiment. The library's grade-A news results (Tetlock; Boudoukh et al.) are a **data gap**, not a null. Acquiring a timestamped headline archive is the single highest-value data addition for fundamentals work. ## Honest caveats - Calendar coverage starts 2016 → 10.5 years for the surprise tests, and only 909 sessions carry a composite. IS has just 313. - FMP consensus is one vendor's snapshot, not a whisper number. - FOMC decisions land at 14:00 ET so they are excluded from the pre-open composite by construction; they appear only in the event-day and drift tests. - Cumulative pre-counted family across today's three studies ≈ **544 cells**, 3 confirmatory. At that count the expected maximum |t| under the null is ≈ 3.3 — so t = 3.03 (primary) and t = 3.59 (pre-FOMC) are both *at* the noise frontier, not comfortably past it. This is why neither is being called a finding. - Everything here is a hypothesis. Two studies today removed candidates; this one produced a regime description and two things worth watching forward. --- ## CORRECTION 2026-08-26 (supersedes the n=82 pre-FOMC figures above) Building the forward shadow grader surfaced two data bugs affecting the pre-FOMC numbers in this document. Both are fixed; the finding **held and strengthened slightly**. 1. **`econ-calendar-2026.json` was missing January–April entirely.** FMP's endpoint silently truncates a long window — the `from=2026-01-01&to=today` request returned only the most recent ~4 months, so the file looked healthy (7,114 rows) but began in May. Backfilled by monthly chunks to 19,169 rows, recovering FOMC dates **2026-01-28, 2026-03-18, 2026-04-29**. `fp_data_sync.mjs` now pulls the calendar in monthly chunks so this cannot recur silently (backup `.bak-20260826`). 2. **FMP renamed the event** `Fed Interest Rate Decision` → `Interest Rate Decision` mid-2026, and the file mixes ~30 countries. Matching must accept both names **and** filter `country == US`; a draft that did neither gave n = 176 by sweeping in UK/EU/JP decisions. **Corrected pre-FOMC overnight drift: n = 85** (was 82), mean **+25.38 bps gross, t = +3.61** (was +26.02 / +3.59), median +14.26, **hit rate 67.1 %**. Era split 2016–19 +10.16 (t = 2.12) / 2020–26 +34.57 (t = 3.21); ex-2020 +21.34 (t = 2.90); dropping the largest observation raises t to 3.71. Non-FOMC baseline +4.15 bps → **excess +21.2 bps**. The three recovered observations were +54.10, −33.78 and +3.49 bps, i.e. they did not drive the result. The composite-surprise (H1), event-day (H2) and administration (H3) sections gain the four recovered months of 2026. Their conclusions are unchanged in direction, but the exact coefficients quoted above were computed pre-backfill and should be re-run if cited precisely. Forward shadow grading of this rule began 2026-08-26 — see `2026-08-26-prefomc-shadow-spec.md`. --- ## CORRECTION 2026-08-26b — the claims result is REFUTED The per-family table above names initial jobless claims the standout (slope +2.51, t = +4.20, n = 502) and calls its cross-regime slope stability "a *better* pattern than the composite's". A dedicated study — `2026-08-26-claims-results.md`, n = 522, built specifically to try to kill it — found it is **two observations**: | specification | n | t | |---|---|---| | full sample | 522 | −4.23 | | excluding 2020 | 469 | **−0.23** | | excluding \|z\| > 10 (2 rows, 0.38 %) | 520 | **−0.51** | 2020-03-26 is the 6.9-million claims print — a ~30× level shift that scores z = −190 against an expanding σ built from pre-COVID weeks, on a session NQ rallied 4.5 %. The apparent "slope stability across regimes" was those same rows sitting inside the post-2020 half. The co-release confound (claims prints alongside GDP/PPI/durables on many Thursdays) was tested and is **not** the problem — claims survives that control at t = −4.48 on claims-only days. It dies to leverage. No rate-channel response is detectable in ZN (t = +0.20). **Methodological consequence for this document:** expanding-σ standardization is indefensible across a level shift of that size. The per-family t-statistics in the table above should be treated as unreliable wherever a family experienced a COVID-era regime break, and any re-run should winsorize \|z\| or use a median/MAD scale before fitting.