Research and backtests
Summary
30 strategy variants were built and tested on historical data with trading costs included. Each was designed using one stretch of history and then evaluated once on later years it had never seen. Three are live: two intraday breakout strategies based on Zarattini, Aziz and Barbon (2024), and a daily portfolio of five strategies whose weights are set by an online-learning algorithm. None of the 30 variants clears the significance bar once it is adjusted for the number of attempts (t ≥ 3.14), so the results below are encouraging evidence rather than proof.
| Strategy | Design: return | Design: Sharpe | Design: worst drop | Unseen: return | Unseen: Sharpe | Unseen: worst drop |
|---|---|---|---|---|---|---|
| QQQ breakout trader | 37.0% | 1.23 | -27% | 38.4% | 1.30 | -23% |
| Staggered breakout portfolio | 20.6% | 0.93 | -25% | 21.3% | 0.78 | -16% |
| Learning allocator | 58.2% | 1.90 | -16% | 22.7% | 0.88 | -32% |
| S&P 500 (SPY), for comparison | 15.4% | 1.24 | -13% | 14.7% | 0.68 | -34% |
Returns are per year. "Design" is the period the strategy was built on and "unseen" is the later period it was tested on once. The intraday strategies were designed on 2017–2022 and tested on 2023 onward; the learning allocator was designed on 2012–2017 and tested on 2018 onward. The S&P 500 row uses the learning allocator's periods.
How the strategies were tested
Data. Daily prices come from Yahoo Finance, and five-minute bars come from Alpaca's consolidated market feed starting in 2016. Leveraged funds are rebuilt from their underlying index for the years before they launched, which lets the daily tests start in 2003.
Costs. Daily trades in exchange-traded funds pay 3 basis points each. Intraday trades in leveraged funds pay half of a one-cent bid-ask spread at each fund's current price plus 0.5 basis points of slippage, with a minimum of 1.5 basis points. Bitcoin trades pay 0.30%, which covers Alpaca's fee and the spread.
Design and evaluation periods. Every design decision was made on the earlier period. The later period was looked at once, after the choices were final, so it gives an honest read on how the strategy handles data it was not tuned to.
Significance. Every variant is recorded, including the ones that failed. The t-statistic needed to pass uses a Šidák correction: the more variants have been tried, the higher the bar, because the best of many attempts can look good by luck alone.
Checking the live code. Past trading days were replayed through the live trading code on a simulated clock and compared with the backtest. More than 99% of decisions matched; the few that did not were ties decided by a few cents of difference between the two price feeds.
The live strategies
QQQ breakout trader. QQQ usually stays within a predictable distance of its opening price, and how far it strays depends on the time of day. The strategy measures that distance as the average move from the open to each time of day over the past 14 days, widened when the market gaps overnight. At each half-hour mark, a price above the range buys TQQQ and a price below it buys SQQQ. The position is closed when the price crosses back through the range or the day's volume-weighted average price, and everything is sold before the close.
Staggered breakout portfolio. The same rule runs on the Nasdaq-100, the S&P 500 and the semiconductor index, each with its own pair of 3x funds. Every market runs on three half-hour clocks offset by ten minutes, which makes nine independent slices of the account. The result trades about 16 times a day without checking any single slice more often than every 30 minutes.
Learning allocator. Five daily strategies share the account: Bitcoin trend-following, short volatility that steps aside when the VIX futures curve inverts, TQQQ held overnight during uptrends, TQQQ bought after sharp two-day drops, and a TQQQ trend position sized to its recent volatility. The Hedge algorithm, a multiplicative-weights method from online learning, scores each strategy daily by its return relative to its volatility and shifts money toward the ones doing well. It keeps at least 5% in each and slowly forgets old results, so it can adapt when conditions change.
Intraday strategies
Both published intraday strategies were rebuilt with signals on QQQ and trades in TQQQ and SQQQ. The volatility-band breakout held up after costs. The opening-range breakout, which looks strong in its paper, did not, matching what independent replications have found.
| Strategy | Trades a day | Design: return | Design: Sharpe | Design: worst drop | Unseen: return | Unseen: Sharpe | Unseen: worst drop |
|---|---|---|---|---|---|---|---|
| Noise-area breakout, 3x | 1.8 | 26.0% | 0.93 | -28% | 39.5% | 1.34 | -21% |
| Noise-area breakout, paper sizing | 1.8 | 6.9% | 0.46 | -17% | 23.3% | 1.28 | -13% |
| Opening-range breakout, 3x | 2.0 | 6.2% | 0.30 | -45% | -1.0% | -0.11 | -31% |
| Opening-range breakout, paper sizing | 2.0 | 6.6% | 0.33 | -30% | 1.3% | -0.03 | -26% |
The next question was how to trade more often without losing the edge. Checking the breakout every five minutes instead of every thirty turned a profitable strategy into a losing one, and every five-minute strategy built around the volume-weighted average price lost money once costs were counted. Running the breakout on six other markets roughly broke even, because the edge shows up in the large index and technology funds but not in small caps, Treasuries, banks or energy. Keeping the 30-minute rhythm and staggering it across three clocks and the three markets where the edge appeared kept most of the returns while multiplying the number of trades.
| Strategy | Trades a day | Design: return | Design: Sharpe | Unseen: return | Unseen: Sharpe |
|---|---|---|---|---|---|
| QQQ breakout, 30-min checks (live) | 1.8 | 37.0% | 1.23 | 38.4% | 1.30 |
| Staggered breakout portfolio (live) | 16.0 | 20.6% | 0.93 | 21.3% | 0.78 |
| QQQ breakout, 5-min checks | 4.2 | -16.8% | -0.59 | — | — |
| QQQ breakout, 5-min checks, scaled | 7.2 | -14.2% | -0.56 | — | — |
| VWAP follow, 3x, 5-min | 48.5 | -51.7% | -2.10 | — | — |
| VWAP fade, 3x, 5-min | 48.5 | -60.9% | -2.90 | — | — |
| VWAP follow, QQQ 1x, 5-min | 26.6 | -4.8% | -0.88 | — | — |
| VWAP fade, QQQ 1x, 5-min | 21.9 | -8.5% | -1.27 | — | — |
| Breakout on 6 other markets, 30-min | 11.4 | 0.6% | 0.03 | -2.8% | -0.55 |
| Breakout on 6 other markets, 15-min | 15.8 | -1.7% | -0.13 | -9.2% | -0.94 |
Bold rows are live. The out-of-sample columns are only filled in for the candidates that were evaluated on 2023 onward.
Daily strategies
Seven daily strategies were tested with the default settings from the research or trading practice they came from, using 3x funds where the idea concerns stocks. Five went into the learning allocator; the turn-of-the-month effect was left out because it was the weakest during the design period, and the plain overnight strategy was replaced by the version that only holds in uptrends.
| Strategy | Design years | Design: return | Design: Sharpe | Design: worst drop | Unseen: return | Unseen: Sharpe | Unseen: worst drop |
|---|---|---|---|---|---|---|---|
| Leveraged trend + vol target | 2003–2017 | 16.5% | 0.59 | -48% | 30.3% | 0.83 | -43% |
| Short volatility (VIX curve) | 2012–2017 | 49.5% | 1.02 | -51% | 4.5% | 0.21 | -54% |
| Overnight TQQQ | 2003–2017 | 16.9% | 0.61 | -69% | 10.8% | 0.40 | -74% |
| Overnight TQQQ, uptrend only | 2003–2017 | 19.3% | 0.83 | -39% | 24.0% | 0.75 | -50% |
| Turn of month, 3x | 2003–2017 | 7.0% | 0.36 | -49% | 9.3% | 0.39 | -28% |
| RSI(2) dip buying, 3x | 2003–2017 | 17.2% | 0.71 | -36% | 14.9% | 0.54 | -31% |
| Crypto trend (BTC) | 2015–2020 | 105.9% | 1.79 | -63% | 25.7% | 0.71 | -46% |
The five strategies are only loosely related to each other, and Bitcoin trend-following is close to uncorrelated with the rest, so combining them reduces risk considerably. The table compares three ways of splitting the money between them.
| Weighting | Design: return | Design: Sharpe | Design: worst drop | Unseen: return | Unseen: Sharpe | Unseen: worst drop |
|---|---|---|---|---|---|---|
| Equal weight (the fund) | 47.9% | 1.78 | -16% | 24.6% | 1.00 | -30% |
| Learning allocator, Hedge | 58.2% | 1.90 | -16% | 22.7% | 0.88 | -32% |
| Risk parity | 39.5% | 1.80 | -17% | 22.9% | 0.95 | -27% |
Bold rows were run live. The equal-weight version ran for one day before it was retired, because it held the same strategies as the learning allocator.
Risks
- Short volatility can lose a large share of its value within days. In February 2018 this strategy fell 34% for the year, and the combined portfolio was down 23% that year.
- Bitcoin trend-following went through a 60% drawdown during the out-of-sample years.
- The intraday strategies hold 3x leveraged funds, so a single bad day can cost 5% to 10% of an account.
- None of the backtests account for taxes. The accounts hold simulated money only.
Earlier experiments
Before these strategies, the project tested simpler rules and machine-learning models: sector momentum and trend following, ridge regression and gradient-boosted models that ranked sectors each month, an intraday model that predicted the next 30 minutes, and a version of that model that learned from scratch. None of them beat holding the S&P 500 by a meaningful margin after costs, which is what led to the research behind the current strategies. The original reports are kept for reference: baseline strategies, monthly machine learning, intraday machine learning and learning from scratch.
Sources
- Zarattini, Aziz & Barbon (2024), Beat the Market: An Effective Intraday Momentum Strategy for SPY
- Zarattini & Aziz (2023), opening-range breakout, summary and replication notes
- Independent ORB replication: gross reproduced, net zero
- Lou, Polk & Skouras (2019), A Tug of War: Overnight Versus Intraday Expected Returns
- Night Moves: is the overnight drift the grandmother of all anomalies?
- Moreira & Muir (2017), Volatility-Managed Portfolios
- Three strategies for trading volatility ETPs (VIX term structure)
- Trend-following and mean-reversion in Bitcoin (Quantpedia)
- The pre-FOMC announcement drift: more recent evidence (New York Fed)
- The turn-of-the-month effect (CXO Advisory)
- Connors RSI(2) on the S&P 500, backtest notes