overnight vs intraday return anomaly across our watchlists

Desk Note Ticker Tape

analysis · self

TL;DR — it is not chaos. There is a clean, monotonic pattern ordered by beta/volatility. The "buy-at-close-sell-at-open beats buy-at-open-sell-at-close" anomaly is real and replicates almost exactly on our own data (MU: +280,829,017% overnight-only vs −100.0% intraday-only over 42y). But it is not universal: it is strongest for high-beta, news/momentum-driven names (AI-semi, AI-energy, the tech-heavy index) and it inverts for low-beta defensive staples (PG, PEP, GIS make money intraday and lose overnight). The single best predictor of "are the gains overnight?" is the stock's volatility/beta — not the sector label.

What sparked this

@0xcheshire (Chinese crypto/AI account, messenger-class — translating, not original) reposted a paper: buy Micron at the close every day and sell at the next open → +138,330,342% over decades; buy at the open and sell at the same-day close → −99.92%; "it's a conspiracy by vested interests, every market is the same, including China A."

The "absurd paper" is Bruce Knuteson (ex-D.E. Shaw quant): "Strikingly Suspicious Overnight and Intraday Returns" (arXiv 2010.01727) + follow-ups. His conspiracy framing — that one or more large quant funds expand their book early-day (high price impact) and contract late-day to mark up their existing book overnight — is his contested minority thesis. The data is mainstream and well-documented; the manipulation interpretation is not. The serious academic treatment is Lou, Polk & Skouras, "A Tug of War: Overnight vs Intraday Expected Returns" (JFE 2019): overnight and intraday returns are driven by different clienteles that persistently pull opposite ways, and the sign flips by strategy (momentum is intraday, reversal is overnight). Also Hendershott-Livdan-Rösch: market beta is priced at night, basically not during the day.

What I did (code does the math — reproducible script alongside this note)

Pulled split+dividend-adjusted daily OHLC (adjusted for splits/dividends, so they don't create fake overnight gaps) for ~86 names across our watchlists, full history + a trailing-3y common window. Per day: overnight = Open[t]/Close[t-1] − 1 (held while market closed), intraday = Close[t]/Open[t] − 1 (held while open); these compound to the close-to-close total. Reported as annualized CAGR (so different lifespans are comparable) and as ON-share = overnight log-return ÷ total log-return (>100% means intraday was a net drag). The v2 widening adds: (A) a per-entry timing view (arithmetic open→close drift in bps + hit-rate — what a single buyer actually faces, vs the compounded path), (B) a bleed→darling inflection test (overnight share before vs after each name's price bottom), and (C) momentum-darling + spec/quantum/space buckets. Script: 2026-06-06-overnight-vs-intraday-anomaly-watchlist-study.py (raw JSON: /tmp/overnight_intraday_results.json).

Categories mapped to our watchlists: Fallen-quality "boring" = lazarus (TTD/PYPL/ADBE/INTU/NKE/ LULU/NFLX/ISRG/DPZ/ZS); SaaS = cloud-saas; AI-energy = ai-power (BE/Bloom, CRWV, IREN…); AI-semi = semis; Momentum darlings = PLTR/SMCI/COIN/MSTR/TSLA/APP/HOOD/CVNA/ANET/VRT/OKLO…; Spec/quantum/space = IONQ/RGTI/QBTS/RKLB/ASTS/SOUN/BBAI/ACHR/JOBY/LUNR; Staples = consumer-staples; plus SPY/QQQ baseline and MU as the tweet anchor.

Finding 1 — full history (median across names in each category)

category n tot/yr ON/yr INTR/yr ON-share ON>INTR INTR<0
INDEX (SPY/QQQ) 2 10.8% 11.8% −0.8% 108% 2/2 1/2
Fallen-quality "boring" (lazarus) 10 19.0% 13.3% 5.3% 70% 8/10 2/10
SaaS (cloud-saas) 10 19.1% 14.3% 9.6% 59% 7/10 1/10
Momentum darlings 13 37.4% 33.0% 8.2% 78% 11/13 6/13
AI-semi (semis) 15 14.6% 25.0% −2.0% 111% 14/15 10/15
AI-energy (ai-power) 16 28.2% 47.0% −9.0% 123% 14/16 10/16
Spec/quantum/space 10 16.2% 110.8% −54.5% 163% 10/10 10/10
Staples (consumer-staples) 9 10.9% 1.0% 8.1% 13% 0/9 0/9
MU (tweet anchor) 1 16.6% 42.4% −18.1% 230% 1/1 1/1

The gradient is monotone in beta/spec-ness. Hyper-spec (quantum/space) → every name's gain is overnight and the intraday session is a wood-chipper (10/10 bleed intraday, median −54.5%/yr). High-beta tech (AI-semi, AI-energy) → all the gain is overnight, intraday a net loss. Momentum darlings (PLTR/ANET/ VRT-grade) are milder — intraday still positive (+8%/yr). Low-beta staples → the opposite: 0 of 9 have overnight > intraday; the money is made during the day. Fallen-quality and SaaS sit in between.

Per-name anchors that make it visceral (full-history cumulative, overnight-only vs intraday-only):

  • MU +280,829,017% / −100.0% — replicates the tweet (different window, same shape).
  • NVDA +991,330% / −44.9%; AMD +40,228,212% / −100.0%; AMAT +1,088,472,022% / −99.9%.
  • BE (Bloom) +2,324% / −56.5% (overnight 50%/yr, intraday −10%/yr).
  • PG (the clean inversion) −53.9% overnight / +129,908% intraday; PEP −93.5% / +585,009%. For these, "buy close / sell open" would have lost money; the entire return is intraday.
  • CRM is the SaaS oddball — ON-share just 17% (intraday-driven, like a staple).

Finding 1b — entry timing: does "buy EOD" actually help a single buyer? (mostly NO)

The compounded numbers above tempt a "buy at the close, not the open" rule. The per-entry arithmetic says otherwise, and this is the important correction: the intraday → −100% path is volatility compounding drag (geometric ≪ arithmetic on a 40%-vol name), not a systematically expensive open.

category avg open→close drift %days close < open avg overnight
AI-semi +2.6 bps (close PRICIER) 49.1% +10.4 bps
AI-energy +5.6 bps (close PRICIER) 49.2% +21.4 bps
Momentum darlings +7.2 bps (close PRICIER) 48.7% +13.8 bps
Fallen-quality +5.3 bps (close PRICIER) 48.8% +6.2 bps
Staples +4.0 bps (close PRICIER) 46.0% +0.7 bps
Spec/quantum/space −16.8 bps (close CHEAPER) 53.1% +34.5 bps
MU −2.4 bps (close cheaper) 49.9% +15.6 bps

For a single long-term entry into normal high-beta names, the close is on average a few bps pricier than the open and beats it only ~49% of days — so "buy EOD" is not a real edge there; the open is a hair cheaper if anything. The genuine open-fade is confined to the hyper-speculative tail (quantum/ space/SOUN: close −16.8 bps cheaper, 53% of days) where retail buys the open and bleeds it into the close — there EOD is a small but real edge. The big lesson isn't when to buy; it's don't intraday round-trip these (the drag is the killer), which a multi-month hold avoids by construction.

Finding 3 — the bleed→darling re-rating happens OVERNIGHT

Split each name's history at its price bottom (ignoring the first ~1y base) and compare the overnight share of return on the way down (the bleed) vs on the way up (the recovery), for 19 names that round-tripped:

median ON-share PRE-bottom = 43.5% → POST-bottom = 74.6% — it rose in 16 of 19 names.

The re-rating is a gap phenomenon. Examples (overnight CAGR, intraday CAGR, ON-share — bleed → recovery):

  • IREN: ON-share 6% → 91%; overnight −17%/yr → +184%/yr.
  • CIFR: −30% → 98%. COIN: 54% → 75% (overnight −52%/yr → +40%/yr).
  • SNOW: the entire recovery is overnight — intraday is still −21%/yr after the bottom (ON-share 151%).
  • BE (Bloom): intraday flips from −86%/yr during the bleed to +28%/yr after.

So you cannot day-trade your way into one of these re-ratings — the upside arrives in discrete overnight jumps and the intraday session often keeps bleeding through the recovery. That is a structural argument for a hold-through-the-gaps style and against chasing them intraday. (The 3 non-risers — CRWD, SMCI, MDB — had shallow or pre-2010 troughs that aren't real bleed→darling round-trips.)

Finding 2 — robustness, trailing ~3y common window (is it live, or a 1990s artifact?)

category n tot/yr ON/yr INTR/yr ON-share INTR<0
INDEX 2 24.4% 16.5% 6.9% 69% 0/2
Fallen-quality 10 −11.7% −6.5% −3.6% 75% 8/10
SaaS 10 3.6% 11.5% −12.1% 107% 7/10
Momentum darlings 13 59.0% 54.7% 7.8% 78% 5/13
AI-semi 15 48.2% 36.2% −1.6% 103% 9/15
AI-energy 15 84.5% 91.3% −7.9% 110% 8/15
Spec/quantum/space 10 66.7% 109.8% −30.5% 190% 7/10
Staples 9 2.2% 3.6% −3.7% −23% 5/9
MU 1 133.4% 103.3% 14.8% 84% 0/1

The high-beta overnight dominance is contemporaneous, not historical: AI-semi and AI-energy are still overnight-driven with negative intraday over the last 3y. Two nuances vs full history: (a) SaaS "darling-ified" via overnight gaps (ON-share 59% → 107%); (b) the staples intraday premium faded — in the recent de-rating, staples were just dead money (2%/yr, neither engine working). So the staples counter-example is a long-history feature; in the recent risk-on regime the gravity has been pulling toward the overnight/high-beta side across the board.

Finding 4 — intraday-of-day: the open-fade is front-loaded (⚠ 60-day microstructure probe)

Daily bars only see open-vs-close. Pulling 15-min bars (only ~60 days available) lets us see where inside the session the intraday drift lives. Sample caveat: this is a ~2-month snapshot of correlated momentum names in a bull stretch — a current-shape probe, NOT the multi-year truth above. Per-day avg (bps):

category first 30min first 60min full day skip first hr %days 1st-hr<0
Spec/quantum/space −20.0 −21.1 +24.2 +45.2 55%
High-beta tech −22.5 −25.9 +14.9 +40.7 56%
Staples control +2.3 +2.5 −18.3 −20.7 48%
Index (SPY/QQQ) +1.3 +1.9 +8.7 +6.8 43%

The open-fade is real and front-loaded: for both spec and high-beta tech the first 30–60 min runs −20 to −26 bps, and skipping the first hour ~doubles the day's intraday capture. It generalizes beyond the spec tail (two independent baskets both fade, on 55% of days). Staples mirror it (first hour is their good part); the index has no fade. The spec time-of-day curve: weak/negative open (first 30 min ≈ −20 bps cumulative), choppy late morning, then a late-hour rally (+30 bps, 15:00–16:00) — so the close isn't a great entry either; the sweet spot is mid-morning (~10:30), after the fade and before the afternoon drift.

  • Robust part: first-hour drag for high-beta/spec (consistent across baskets, 55% of days).
  • Regime-specific part: the late-day rally (recent-momentum flavored — don't over-fit it).
  • Sharpened rule (⚠ corrected in Finding 5): the naive "skip the first 30–60 min" reading of this table is a composition artifact — see Finding 5. The first hour is a continuation window, not a fixed fade.
  • Script: 2026-06-06-intraday-tod-probe.py (sibling). 15-min bars capped at ~60 days — re-run gives a rolling window.

Finding 5 — WHY the first hour fades: gap-continuation, not open-overpricing (⚠ 60-day probe)

Conditioning the first-hour return on the overnight gap overturns the simple read above. First-hour return (bps) by gap bucket, spec/quantum/space:

overnight gap gap-down <−0.5% flat ±0.5% gap-up .5–2% BIG gap-up >2%
first-hour return −61.2 (264d) −40.5 (93d) +3.2 (101d) +66.3 (132d)

The first hour continues the overnight move — big gap-ups keep running, gap-downs keep bleeding (high-beta same direction, messier). corr(gap, rest-of-day) ≈ 0 — the gap's pull is spent in the first hour, then the day is random. So the aggregate "first-hour-negative" in Finding 4 was a composition effect (this window had more/bigger gap-down mornings), NOT a structural expensive-open. The 5-min zoom shows the cleanest down-leg is the first ~25 min (−21 bps cumulative by 09:55), then a choppy double-dip — no crisp single bottom.

Corrected, conditional entry rule (better than "skip the first hour"):

  • Gapped down/flat + want in → first hour tends to keep bleeding → patience (~10:30) gets a lower fill.
  • Gapped up big → first hour keeps running → waiting = chasing; the open was the better entry. Don't skip it.
  • Meta-rule: the first hour is dominated by the gap's direction — never apply a blind first-hour rule; condition it on the gap. Continuation is a momentum-regime trait and could invert in a mean-reverting tape.

Leak test (do the legs telegraph each other?) — clean NULL. corr(last-hour, next-overnight gap) ≈ 0.01–0.05 for spec/high-beta; the late-day rally does not predict the overnight gap. Kills a tempting idea. Bonus: high-beta averaged +35 bps/night overnight even in this window — reconfirms the core overnight premium intraday.

  • Script: 2026-06-06-intraday-gap-leak-probe.py (sibling).

Finding 6 — does the gap-continuation survive a risk-off tape? (daily, full history, regime-split)

Finding 5 lived in one 60-day bull/momentum window, so the open question was: is "the gap continues" a momentum-regime artifact? The intraday cap blocks a true bear-window first-hour test, so this uses a coarser-but-deeper lens — daily open→close vs the overnight gap, full history (deep names back to 1980), split by SPY trailing-3m regime (up-tape vs down/flat-tape, known at t−1). Session-level, not first-hour.

Two things fall out, and both sharpen rather than overturn Finding 5:

  1. At the full-session level the continuation washes to ~0. corr(overnight gap, same-day intraday) is −0.07…+0.05 across every category. That's the expected reconciliation: the gap's pull is spent in the first hour (Finding 5), the rest of the session partly gives it back, so the whole day nets to noise. The continuation is genuinely a first-hour phenomenon — do not extend it to "the gap predicts the day."

  2. The residual signal in the tails is regime-conditional — the flip I'd only guessed at is real. Mean same-day session return (bps) for the cleanest, deepest sample (deep high-beta, ~57k ticker-days, 1980→):

    overnight gap UP-tape DOWN-tape
    gap-down <−1% +2.0 +30.4
    BIG gap-up >3% +12.6 −14.0

    A big gap-up continues through the session in an up-tape (+12.6) and fades in a down-tape (−14.0) — it flips sign with the regime. And a gap-down bounces intraday in a risk-off tape (+30.4), a pattern that's consistent across every category in down-tapes (AI-energy +18, spec +27, staples +30, index +20): the classic morning-washout → session-recovery. Stacked with Finding 5 (gap-downs keep bleeding the first hour), the full shape is first-hour continuation → later-session reversion, and the reversion is strongest in risk-off.

The spec tail stays negative in every bucket and regime (structural intraday bleed), just ~2× worse in down-tapes (big gap-up −81 up-tape / −151 down-tape; corr −0.05 → −0.16). So the Finding 5 entry rule is up-tape-conditional: "gapped-up-big → don't wait, the open was the entry" holds when the tape is ripping; in a risk-off tape that same gap-up is more likely to fade, and gap-downs are the ones that recover.

⚠ Caveat: SPY regime starts 1993; spec names only reach 2021, so their "down-tape" = 2022 + 2025 selloffs only; staples big-gap buckets are thin (n<100). Daily session ≠ first hour. Script: 2026-06-06-gap-continuation-regime-test.py (sibling).

Why (mechanism, non-conspiracy)

  1. News/risk lands after hours — earnings, guidance, macro, futures-led opens. Holding overnight bears gap risk → you're paid for it; the equity premium is largely overnight risk compensation. This is why the effect scales with beta: more volatile, more news-sensitive names carry more overnight premium. (Hendershott-Livdan-Rösch: beta priced at night.)
  2. Volatility drag, not just an expensive open. For most high-beta names the average open→close day is slightly positive — the compounded intraday loss is the variance penalty (geometric ≪ arithmetic). The literally expensive-open story holds only for the hyper-spec tail (quantum/space), where retail piles into the opening auction and it fades into the close (see Finding 1b).
  3. Clientele tug-of-war (Lou-Polk-Skouras) — different names have different overnight vs intraday buyers. Staples are accumulated during the session by institutions (VWAP), with no overnight gap-up demand and even overnight drift-down → their return is intraday. High-beta tech is the mirror image.

Counter-examples / when it is NOT true (the part the user asked for)

  • Low-beta / defensive staples invert it (PG, PEP, GIS, CL): overnight flat-to-negative, intraday positive. "Overnight always wins" is false here.
  • It flips by strategy, not just by name — momentum is an intraday phenomenon, reversal overnight (Lou-Polk-Skouras). Whether overnight "wins" depends on what you hold.
  • Regime-dependent — the staples intraday premium washed out in the last ~3y; index intraday turned positive in the recent bull. It is not a constant.
  • The headline single-stock numbers are compounding artifacts, not strategies. +1.08-billion-% for AMAT overnight is an accounting identity over ~46y, not tradeable: a daily round-trip pays the bid-ask spread + fees ~10,000 times (edge < spread for retail), and you can't fill at the official close/open prints. This is return attribution, not a backtest.
  • Survivorship — every name here survived; the overnight strategy on a stock that went to zero also goes to zero. The structural finding (high-beta survivors are overnight-built) is real; the magnitudes are survivor-conditioned.
  • Adjusted prices put dividends into the overnight bucket via ex-date price steps — which makes the staples result (overnight negative despite being dividend payers) even more striking.

Actionable rules from this study are distilled in the execution playbook hub.

So what (for a trend-hold book)

  • Not a tradeable signal for us — daily close↔open churn is the opposite of a 6–48mo hold, and the edge dies in costs anyway. Even the winning overnight leg (buy-close/sell-open) wrecks a retail account in practice: ~10,000 round-trips eat the ~10–20 bps/day gross premium via spread+fees, you can't fill at the prints, and you bear concentrated un-hedgeable overnight gap/tail risk (lever it to make the thin edge "worth it" → one bad gap ends you). The resolution: a buy-and-hold position already captures the entire overnight premium for free — it's in the market every night, zero round-trips. The decomposition is attribution, not alpha; only market-makers who are the spread net-harvest the isolated leg.
  • "Buy EOD" is mostly a myth for a single entry. The per-entry math (Finding 1b) shows the close is a few bps pricier than the open for normal high-beta names. The real edge of that flavor exists only for the hyper-speculative tail (quantum/space/SOUN), where the open genuinely fades — there, EOD or VWAP beats the open by ~15–25 bps. For everything else, don't sweat open-vs-close; just don't round-trip intraday (the volatility drag is what eats you).
  • The actionable structural fact: re-ratings happen overnight (Finding 3). 16/19 bleed→darling names saw their overnight share jump (43.5% → 74.6%) at the bottom; the upside arrives in gaps while the intraday session often keeps bleeding. So the right way to own a turnaround is to hold through the gaps, not trade the session — which is exactly the trend-hold style. This is also why chasing AI-energy/ semis/monster-discovery names intraday feels like a treadmill even as they multiply.

Sources

  • Tweet (spark, messenger-class): https://x.com/0xcheshire/status/2063111971013263404
  • Knuteson — Strikingly Suspicious Overnight and Intraday Returns — arXiv 2010.01727 / SSRN 3705017
  • Knuteson — They Chose to Not Tell You (SSRN 3894013), They Still Haven't Told You (SSRN 3998202)
  • Lou, Polk & Skouras — A Tug of War: Overnight Versus Intraday Expected Returns — JFE 134(1) 2019
  • Hendershott, Livdan, Rösch — Asset Pricing: A Tale of Night and Day — JFE 2020
  • Our data: yfinance adjusted OHLC; computation in the sibling .py; raw JSON /tmp/overnight_intraday_results.json