The rules
Gao, Han, Li and Zhou (2018): the signal is SPY's return from the previous trading day's 16:00 close to 10:00, so it includes the overnight move. At the start of the last half-hour, 15:30, buy SPY if that return is positive and sell it short if it is zero or negative, and close the position at the 16:00 close. It trades every day with the same fixed position size, with no stop or target. Days with fewer than 500 SPY trades were excluded.
- Universe
- SPY
- Bars
- 1-minute
- Position size
- 97% of equity in SPY, bought or sold short, one position a day. Published: the same fixed position, bought or sold short, every day.
- Rebalance
- Every full session: the signal at 10:00, the trade from 15:30 to the close. Published: the same, every trading day.
What the research found
Gao, Han, Li and Zhou (Journal of Financial Economics 2018; SPY, 1993-2013) find the first half-hour return, measured from the prior close, predicts the last half-hour with a slope of about 0.07 (6.94 in the paper, which scales slopes by 100), so a 1% rise pointed to about 0.07%, and an R-squared (the share of last half-hour moves it explains) of 1.6% (0.8% without the 2007-09 crisis; 1.4% out of sample from 1998, forecasting each day only from earlier data). Trading the last half-hour long or short by that return's sign earned 6.67% a year with a Sharpe ratio (return per unit of risk) of 1.08, against -1.11% a year for buying every last half-hour. Over 2005-2013 it earned 7.96% a year before costs and 6.52% after paying the 15:30 bid-ask spread (the gap between buy and sell prices); with commissions of $2 to $10 a side on 1,000 shares, the authors put the full trading cost, spread included (their implementation shortfall), at 1.49% to 1.64% a year and conclude the profit remains after all costs. Li, Sakkas and Urquhart (Journal of Financial Markets 2022) found it significant in and out of sample in most of 16 developed markets. Baltussen, Da, Lammers and Martens (Journal of Financial Economics 2021) found it significant but weaker than the return from the prior close to 30 minutes before the close; its out-of-sample R-squared, below zero when worse than a plain average forecast, was -1.68% on S&P 500 futures and 1.15% on the S&P 500 index. Rosa (Journal of Futures Markets 2022; S&P 500 futures) finds the predictability gone over 2014-2020 except from March to December 2020 and says its disappearance, rather than decay, suggests data mining (a pattern found by chance), though trading only on large signals earned more than trading every day. QuantConnect's replication on SPY and two other funds from January 2015 to August 2020 had a Sharpe ratio of -0.63 against the benchmark's 0.58. CXO Advisory (August 2012 to May 2014) found last half-hour moves too small to beat trading costs; Alpha Architect found no support in its own tests. Zhang and Hua (Risks 2024), testing the overnight and 9:31-10:00 moves separately on SPY and a Nasdaq-100 fund, find both links fading over 2007-2018 and neither significant over January 2022 to September 2024. The paper's 6.67% a year is about 0.026% a day before costs (derived over 252 trading days), against the 0.10% the library charges a round trip.
Results
| Measure | Orbital test | SPY, same days |
|---|---|---|
| Window | Oct 30, 2023 to Oct 30, 2026 | Oct 30, 2023 to Oct 30, 2026 |
| Total return | −51.52% | +88.60% |
| CAGR | −21.44% | +23.54% |
| Sharpe | −8.63 | 1.22 |
| Discounted Sharpe | −12.66 | — |
| Max drawdown | −51.6% | −18.7% |
| Win rate | 25.6% | — |
| Profit factor | 1.00 | — |
| Trades | 746 | — |
Hypothetical: a backtest with modeled costs, not traded with real money.
Hypothetical growth of $10,000
R08 First Half-Hour Momentum · −51.5% vs SPY +88.6%
Rebuild it in Orbital
Paste this into Orbital Chat. The Strategy Developer builds the workflow and asks before it runs any backtest.
Build a program on 1-minute bars for SPY, using the session clock. Keep the prior session's split-adjusted close: the open of its 16:00 closing-print minute, or on early-close days the close of its 13:00 minute, or its last close if that minute has no bar. When the 09:59 bar closes, record its close as the 10:00 price. When the 15:29 bar closes, if the 10:00 price is above the prior close, buy SPY with 97% of equity; otherwise sell SPY short with 97% of equity. Either order fills at the 15:30 open. Close the position when the 15:59 bar closes, so it fills at the open of the 16:00 closing-print minute. Take no trade on the backtest's first session, which has no prior close, or on early-close days. Use a margin account so it can sell short. Backtest the last 3 years with $100,000.
Is it real?
- Strategies tested together
- 10
- Beta to SPY
- 0.02
- Alpha vs SPY
- −28.7% a year
- Costs paid
- $51,607, 59640% of the gain before costs
- Data
- 1m decisions on 1-minute bars, 754 sessions
- Fills
- Next open at market, sized at the fill
Read this before you trust it
The exit fills at the open of the 16:00 closing-print minute, measured by Orbital at a median 0% from the official close, rather than in the closing auction, and the prior session's close is taken the same way; after an early-close day it is the 13:00 minute's close, since that day's closing auction is usually that minute's last trade. The 10:00 price is the close of the 09:59 minute bar rather than the paper's price at 10:00 from trade-by-trade records, and the entry fills at the 15:30 minute's open. Sessions that close early are skipped, where the paper dropped days with fewer than 500 trades. Selling short needs a margin account; a short sale closed the same day pays no borrowing fee. 97% of equity, leaving room for costs. Each of a session's two fills pays 0.05% slippage, an assumed trading cost, where the paper's net returns charged only the 15:30 bid-ask spread and no spread at the close, and its estimate of the full trading cost (its implementation shortfall) also adds commissions of $2-$10 on each side for 1,000 shares.
Sources