Strategy Graveyard
← All strategies

intraday momentum

Cross-sectional intraday momentum

No alphaArchived · long / short · 2014-2026

Pre-registered 2026-06-06 · 1 run · 2 variants

The idea

News that moves a stock in the morning does not reach everyone at once. Traders who learn late, and funds that must trade at the close, push the price the same way again at the end of the day. Gao, Han, Li and Zhou documented this for the market as a whole: the first half-hour of the session predicts the last.

The index version could not be tested here, because the lab's 1-minute SPY history was too short. What was tested instead, and declared as a different claim in advance, is the cross-sectional version: among individual stocks, the morning's winners should beat the morning's losers into the close.

How it was tested

Pre-registered on 2026-06-06 with two windows. V30: the 09:30 to 10:00 return ranks stocks for the 15:30 to 16:00 window. V60: 09:30 to 10:30 ranks them for 15:00 to 16:00. Long the top decile, short the bottom decile, equal weight, closed at the 16:00 close. US stocks at $5 or more, at least $5M of same-day dollar volume, and at least 50 names per day. Costs of 10 bp per side, which is 40 bp on the long-short spread, plus $2 round-trip commission per name. Two variants put the Bonferroni bar at t ≥ 1.96. The prior, written before running: it probably dies on costs.

Where it died

The valid run came third, after two runs were voided for harness bugs that were fixed without touching the registered economics. Gross, the spread was −0.0052% a day for V30 and +0.0037% for V60. Net of costs, both lost about 0.4% a day: −0.405% and −0.396%. Because the spread is market-neutral by construction, its raw t was already the alpha test, and neither variant came near 1.96.

The record

Thesis

Information that moves a stock in the first part of the session propagates with friction, and late-informed traders and closing flows push it the same way again into the close. In the cross-section, the morning's winners should beat the morning's losers over the last part of the day.

Prior: Declared before running: probably dies on costs, since last-half-hour moves are tens of basis points and the spread pays four sides of slippage.

Specification

signal
Rank stocks by their return over the first window of the day. V30: 09:30→10:00 predicts 15:30→16:00. V60: 09:30→10:30 predicts 15:00→16:00.
universe
US stocks, price ≥ $5, same-day dollar volume ≥ $5M, at least 50 names per day
position
long the top decile, short the bottom decile, equal weight, market-neutral
entry
start of the last window; exit at the 16:00 close
costs
10 bp slippage per side (40 bp on the spread), $2 round-trip commission per name
caveat
Gao et al. is a market-level (index timing) effect. 1-minute SPY history was too short to test it, so this is the related but different cross-sectional version, declared as such in advance.

Gates

Pre-registrationpass
Was the hypothesis, its parameters and its pass/fail rule written down before any data was looked at?
Raw significance (legacy)fail
Are the strategy's raw returns statistically different from zero?
t ≥ 1.96 on the daily long-short spread (Bonferroni, 2 variants)
t v30-1.45t v60+0.65gross spread v30 pct per day-0.01gross spread v60 pct per day+0.00
The spread is market-neutral by construction, so its raw t is the alpha test.
Gate F — Frictionfail
Is the alpha per trade large enough to pay for its own execution?
net spread > 0 after costs
net v30 pct per day-0.41net v60 pct per day-0.40

Why it died

There is nothing to eat. The gross long-short spread is about half a basis point a day in either direction (t −1.45 and +0.65 over roughly 250 days a year, 2014-2026). The prior "it will die on costs" was too generous: there is no gross edge for costs to kill.

What it taught

An effect documented on the index does not imply the same effect stock by stock. Two earlier runs were voided by harness bugs — duplicate timestamps, and a timezone shift that put the morning checkpoints in pre-market — and fixed without touching the registered economics.

Verdict history

  1. 2026-06-06Pre-registered: two windows (30 and 60 min), Bonferroni threshold t ≥ 1.96
  2. 2026-06-06Two runs voided by mechanical harness bugs (duplicate labels, timezone shift) Void
  3. 2026-06-06Valid run: both variants fail, gross spread ≈ 0 No alpha