Statistical Inference · Time Series · Financial Markets
Cross-Sectional Intraday Reversal at Multiple Horizons
Abstract
A current, costed read on cross-sectional intraday reversal for a point-in-time top-500 US-equity universe, measured at 5-, 30-, and 60-minute horizons on ≈373 million Alpaca SIP minute bars. The effect is statistically real but breaks even below half a basis point of round-trip cost — and the study doubles as a reusable cross-sectional evaluation template.
Key results
- 30-min gross long–short (ann.)
- 11.3%
- Break-even cost (30-min)
- 0.26 bps
- 5-min gross (ann.)
- ≈148%
- Minute bars ingested
- ≈373M
Sample. Point-in-time top-500 US equities, 1-minute Alpaca SIP bars, ≈373M bars, 2018–2025
Headline
We replicate and re-measure cross-sectional intraday reversal — the tendency of recent intraday losers to out-perform recent intraday winners over the following minutes — for a point-in-time top-500 US-equity universe on 1-minute consolidated (SIP) bars over 2018–2025. The pipeline ingests ≈373 million minute bars across 529 symbols, sorts each h-aligned cross-section into deciles on the prior-h return, and measures the next-h equal-weighted decile spread for h ∈ {5, 30, 60} minutes.
The 30-minute long–short returns 11.3% annualized gross over the eight-year window. Pooling all 2,007 trading days, that edge is statistically distinguishable from zero (95% block-bootstrap interval [+1.2%, +20.7%], p ≈ 0.04) but economically negligible: it is worth only ≈0.45 bps per sort against ≈1.7× round-trip turnover, so it breaks even at only ≈0.26 bps of round-trip cost and the tradeable signal decays inside a single sort interval (no resolvable exponential half-life). At the 5-minute horizon the effect is enormous (≈148% annualized, CI [+126%, +169%]) but is essentially a bid–ask-bounce artifact concentrated at the session edges.
The result is a clean negative
Post-2018 intraday reversal in US large caps is real in sign, statistically present, and untradeable once realistic transaction costs are applied. The deliverable’s lasting value is twofold: a defensible current read on a classic effect, and a reusable cross-sectional evaluation template — point-in-time membership → decile sort → bootstrapped intervals → decay characterization → transaction-cost overlay → survivorship and microstructure sensitivities. Each component is reusable by later cross-sectional studies.
Data and universe
The headline universe is a point-in-time (PIT) monthly top-500 membership table — a continuous monthly snapshot derived from an S&P 500 historical-components source spanning 97 month-ends from 2017-12-31 through 2025-12-31. Each snapshot holds exactly 500 names with complete coverage; membership for any trading day is resolved as-of the most recent prior month-end, so no constituent change is used before it is known.
One-minute OHLCV bars come from the Alpaca SIP feed (full consolidated tape, history to 2018) for the union of all PIT members. Each symbol-day is reindexed onto the NYSE regular-session minute grid (timezone-converted to America/New_York, holidays and early closes respected); price-like columns are forward-filled at most one minute within a session, and any symbol-day with more than 5% pre-fill missingness is dropped. Per-minute log returns are computed within-session only, never crossing the overnight boundary. An earlier attempt with the Polygon free tier failed because that plan only covers ~2 recent years — a provenance lesson that drove the switch to Alpaca SIP for the full download.
Universe provenance caveat
The PIT source publishes index membership but not monthly market capitalizations, so the rank/market-cap fields are a documented rank proxy rather than an independent market-cap ranking. It controls survivorship at the membership level, but it is not a CRSP-grade market-cap universe, and the headline results inherit this proxy limitation. The earnings calendar was also unavailable for this run, so earnings-tail sensitivity is flagged rather than measured.
| Quantity | Value |
|---|---|
| Distinct symbols requested (union of PIT members) | 529 |
| Symbol–month ingest chunks planned | 50,784 |
| Chunks returning bars | 46,236 |
| Chunk-level coverage | 91.0% |
| Total raw 1-minute bars ingested | ≈372.9M |
| Universe snapshots (month-ends) | 97 |
| Reporting window | 2018-01-01 – 2025-12-31 |
Methodology
Sign convention. We fix the primary reported metric to the reversal payoff: the next-h return of the prior-h losers (decile D1) minus that of the prior winners (D10). A positive value means recent losers subsequently out-perform recent winners.
Decile sort. For each horizon and session, sort timestamps step by h from the open plus a 15-minute open/close exclusion, requiring complete prior- and forward-h windows. At each timestamp the eligible cross-section (valid prior- and forward-returns, ≥10 names) is ranked on its prior-h log return and split into deciles with a deterministic quantile estimator; each decile’s equal-weighted forward return is measured.
Turnover and annualization. A turnover proxy tracks top/bottom-decile basket changes across consecutive sorts; we report round-trip turnover. Intraday long–short returns sum to a daily P&L and annualize at 252 days. Because each horizon fires many times per day (≈70 sorts/day at 5 min vs. ≈4 at 60 min), the 5-minute series compounds far more shots — a fact that inflates its annualized figure.
Inference, decay, and costs. Per-year and pooled full-sample 95% intervals use a 5-day block bootstrap (250 iterations, seed 1729). Decay is traced over a grid of sort-to-hold gaps g ∈ {0, 5, 10, 15, 30, 60, 120} minutes; the requested exponential half-life is reported but, as below, is not identifiable, so we lead with the non-parametric retained fraction ρ(g) = |Rrev(g)| / |Rrev(0)|. Each round-trip cost is charged against turnover and we solve for the break-even cost at which annualized net crosses zero.
Annualized reversal by horizon
At the 5-minute horizon the gross reversal is enormous and remarkably stable — a mean of ≈148% annualized with a Sharpe of 5–10 every single year. At 30 minutes the mean drops to ≈11% with Sharpe below 1, and at 60 minutes to ≈6% with Sharpe ≈0.5 and several outright negative years. The monotone collapse of the effect from 5 to 60 minutes is the central empirical pattern, and it is the first hint that what survives at short horizons is microstructure rather than information. (The headline 11.3% is the simple average of the eight yearly figures; the day-weighted pooled mean is 11.28%.)
| Year | 5-min ann. % | 5-min SR | 30-min ann. % | 30-min SR | 60-min ann. % | 60-min SR |
|---|---|---|---|---|---|---|
| 2018 | 155.7 | 7.65 | 8.8 | 0.93 | -6.5 | -0.78 |
| 2019 | 91.7 | 7.21 | -2.6 | -0.29 | -5.0 | -0.66 |
| 2020 | 195.7 | 6.16 | 22.4 | 1.27 | 23.5 | 1.50 |
| 2021 | 143.0 | 8.15 | 0.5 | 0.04 | -2.1 | -0.21 |
| 2022 | 116.0 | 5.02 | 17.7 | 1.25 | 18.8 | 1.60 |
| 2023 | 155.7 | 9.99 | 26.1 | 2.27 | -1.4 | -0.16 |
| 2024 | 162.6 | 10.50 | 9.2 | 0.85 | 5.2 | 0.68 |
| 2025 | 166.1 | 7.16 | 8.3 | 0.55 | 17.8 | 1.67 |
| Mean | 148.3 | 7.73 | 11.3 | 0.86 | 6.3 | 0.46 |
Statistical significance
The large 5-minute Sharpe ratios are overwhelmingly significant. The economically interesting 30-minute book is marginal year-by-year — its 95% bootstrap interval straddles zero in 7 of 8 years, with 2023 the lone exception — but that conflates a genuine null with small per-year samples. Pooling all 2,007 trading days resolves the question: the full-sample 30-minute effect excludes zero ([+1.2%, +20.7%], p ≈ 0.04), the 5-minute effect is hugely significant, and the 60-minute effect is not distinguishable from zero ([−2.7%, +13.9%], p ≈ 0.10). The honest statement: the 5- and 30-minute effects are real, the 60-minute effect is noise, and "real" at 30 minutes still means an annualized edge whose lower bound is barely positive.
| Horizon | Ann. % | 95% CI (%) | p (approx.) | Excludes 0? |
|---|---|---|---|---|
| 5 min | 148.2 | [+126.1, +168.9] | <0.01 | yes |
| 30 min | 11.3 | [+1.2, +20.7] | 0.04 | yes |
| 60 min | 6.2 | [−2.7, +13.9] | 0.10 | no |
Cross-sectional decile structure
Is the spread a smooth cross-sectional reversal or an artifact of the two extreme deciles? The hero figure plots the equal-weighted mean next-h return for each prior-return decile, averaged over every sort in 2018–2025. The 5-minute profile is cleanly monotone: subsequent return falls steadily from D1 (+0.44 bps, biggest prior losers) to D10 (−0.40 bps, biggest prior winners), the textbook reversal staircase. At 30 and 60 minutes the reversal survives mainly at the extremes (D1 highest, D10 lowest) while the middle deciles are noisy — increasingly so at 60 minutes, mirroring that horizon’s statistical insignificance. The implied D1−D10 spread reconciles exactly to the per-sort gross edge below, an independent check on the long–short construction.
| Decile | 5-min (bps) | 30-min (bps) | 60-min (bps) |
|---|---|---|---|
| D1 (losers) | 0.44 | 0.31 | 0.56 |
| D2 | 0.19 | 0.20 | 0.18 |
| D3 | 0.12 | 0.14 | 0.08 |
| D4 | 0.07 | 0.16 | 0.17 |
| D5 | 0.03 | 0.13 | 0.31 |
| D6 | 0.01 | 0.18 | 0.29 |
| D7 | -0.04 | 0.12 | 0.32 |
| D8 | -0.07 | 0.14 | 0.45 |
| D9 | -0.14 | 0.01 | 0.15 |
| D10 (winners) | -0.40 | -0.14 | -0.07 |
Decay: no resolvable half-life
How fast does the edge decay as the holding window is delayed by a gap g? At the 5-minute horizon only ≈1.6% of the gap-0 edge survives a single 5-minute delay; at 30 minutes the retained fraction bounces between 6% and 56% across gaps — the trace of noise, not of a smooth relaxation. The signal is a gap-0 spike that falls to the noise floor immediately and stays there, non-monotonically.
The brief’s half-life is not identifiable on this data
The requested exponential fit |Rrev(g)| = A e−g/τ + C is run with a multi-start optimizer (so τ is a true optimum) but is flagged unstable at every horizon: the signed mean crosses zero across gaps, and the best-SSE fit collapses to a gap-0 spike below the 5-minute grid resolution, so the implied half-life is an extrapolation below the data’s own resolution and carries no information. An earlier 15.6-minute half-life was an artifact of the optimizer’s starting value and has been retracted. The defensible statement is non-parametric: the tradeable signal is gone within a single sort interval.
Transaction costs and break-even
This is where the effect dies. The book turns over ≈1.7× per sort and fires up to ≈70 times a day, so a per-sort gross of a fraction of a basis point cannot survive any realistic spread. Even the smallest tested cost (2 bps round-trip) drags the annualized 30-minute net deeply negative; the mean break-even cost is 0.49 bps (5 min), 0.26 bps (30 min), and 0.35 bps (60 min) — all far below realistic execution costs and below the bar-based spread proxy itself. The loss is dominated by turnover × cost, not by the small, noisy gross edge.
| Horizon | Sorts / day | Gross bps / sort | R/T turn. / sort | Break-even bps | Net bps / sort @2bps |
|---|---|---|---|---|---|
| 5 min | 69.7 | 0.844 | 1.712 | 0.493 | -2.58 |
| 30 min | 9.9 | 0.450 | 1.728 | 0.260 | -3.01 |
| 60 min | 4.0 | 0.625 | 1.776 | 0.352 | -2.93 |
Robustness and sensitivities
Survivorship. Running the identical analysis on a naive "current top 500" membership changes the 30-minute mean only marginally (11.31% PIT vs. 11.50% naive). The expected teaching artifact — a large PIT-vs-naive gap — does not appear, because the PIT source is an S&P 500 component proxy that overlaps heavily with the current list and because intraday reversal is a within-cross-section microstructure effect insensitive to slow membership churn. The lesson stands but is inverted: survivorship bias is small for this effect on this universe proxy; it would re-emerge for slower, return-level factors or a true market-cap universe with more turnover.
Open/close microstructure. Including all minutes lifts the mean 5-minute annualized return to ≈217% (vs. 148% with the 15-minute exclusion) while the 30-minute mean barely moves (14.0% vs. 11.3%) — the raw 5-minute effect is materially an open/close phenomenon. Spread filter. Dropping the widest-range names cuts the 5-minute gross magnitude by 20–30% and leaves 30/60-minute numbers broadly similar, consistent with the short-horizon effect being concentrated in wider-spread names where bid–ask bounce is largest.
| Minutes excluded each side | 5-min mean (ann. %) | 30-min mean (ann. %) |
|---|---|---|
| 0 (include open/close) | 216.6 | 14.0 |
| 15 (headline) | 148.3 | 11.3 |
| 30 | 186.6 | 11.1 |
Discussion
The results paint a coherent picture. Intraday reversal in post-2018 US large caps is statistically present and correctly signed, but its tradeable content is tiny and horizon-dependent in exactly the way a liquidity-provision / bid–ask-bounce effect should be:
- Largest at the shortest horizon and the session edges. The 5-minute, gap-0 effect is huge in annualized terms but only ≈0.84 bps of signed mean per sort, is amplified by open/close minutes, and is concentrated in wide-spread names — the signature of quoted-spread mean-reversion rather than information-driven reversal.
- Evaporates with a one-period gap. Skipping even 5 minutes between sorting and holding collapses the 5-minute signal to ≈1.6% of its gap-0 magnitude — what you expect if the "edge" is the bounce off the price you would have transacted at.
- Cannot survive costs. Break-even is below 0.5 bps at every horizon, well under realistic spreads and fees, so the net strategy is deeply negative regardless of year.
- The annualized 5-minute figures are a compounding illusion. The 5-minute book fires ≈17× more often than the 60-minute book, so a sub-basis-point per-shot edge annualizes to triple digits. This is arithmetic, not alpha — and precisely the quantity that costs erase.
The honest headline is the negative one: a well-known effect, measured cleanly on current data, is confirmed statistically real but decayed below tradeability. That is a valuable baseline — it establishes what "not worth deploying" looks like and gives any future cross-sectional candidate a costed yardstick to beat. Just as valuable as the number is the reproducible, schema-validated, point-in-time, bootstrap-and-cost-aware template that any subsequent study can reuse and that any future alpha must out-earn on a costed basis.