← Paper Trading Lab

Research and backtests

How the three live strategies were chosen: the ideas that were tested, how each one was evaluated, what the results were, and the risks that come with the strategies that made the cut.

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.

StrategyDesign: returnDesign: SharpeDesign: worst dropUnseen: returnUnseen: SharpeUnseen: worst drop
QQQ breakout trader37.0%1.23-27%38.4%1.30-23%
Staggered breakout portfolio20.6%0.93-25%21.3%0.78-16%
Learning allocator58.2%1.90-16%22.7%0.88-32%
S&P 500 (SPY), for comparison15.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.

Growth of $100 for the three live strategies and SPY since 2017

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.

StrategyTrades a dayDesign: returnDesign: SharpeDesign: worst dropUnseen: returnUnseen: SharpeUnseen: worst drop
Noise-area breakout, 3x1.826.0%0.93-28%39.5%1.34-21%
Noise-area breakout, paper sizing1.86.9%0.46-17%23.3%1.28-13%
Opening-range breakout, 3x2.06.2%0.30-45%-1.0%-0.11-31%
Opening-range breakout, paper sizing2.06.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.

StrategyTrades a dayDesign: returnDesign: SharpeUnseen: returnUnseen: Sharpe
QQQ breakout, 30-min checks (live)1.837.0%1.2338.4%1.30
Staggered breakout portfolio (live)16.020.6%0.9321.3%0.78
QQQ breakout, 5-min checks4.2-16.8%-0.59——
QQQ breakout, 5-min checks, scaled7.2-14.2%-0.56——
VWAP follow, 3x, 5-min48.5-51.7%-2.10——
VWAP fade, 3x, 5-min48.5-60.9%-2.90——
VWAP follow, QQQ 1x, 5-min26.6-4.8%-0.88——
VWAP fade, QQQ 1x, 5-min21.9-8.5%-1.27——
Breakout on 6 other markets, 30-min11.40.6%0.03-2.8%-0.55
Breakout on 6 other markets, 15-min15.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.

StrategyDesign yearsDesign: returnDesign: SharpeDesign: worst dropUnseen: returnUnseen: SharpeUnseen: worst drop
Leveraged trend + vol target2003–201716.5%0.59-48%30.3%0.83-43%
Short volatility (VIX curve)2012–201749.5%1.02-51%4.5%0.21-54%
Overnight TQQQ2003–201716.9%0.61-69%10.8%0.40-74%
Overnight TQQQ, uptrend only2003–201719.3%0.83-39%24.0%0.75-50%
Turn of month, 3x2003–20177.0%0.36-49%9.3%0.39-28%
RSI(2) dip buying, 3x2003–201717.2%0.71-36%14.9%0.54-31%
Crypto trend (BTC)2015–2020105.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.

WeightingDesign: returnDesign: SharpeDesign: worst dropUnseen: returnUnseen: SharpeUnseen: worst drop
Equal weight (the fund)47.9%1.78-16%24.6%1.00-30%
Learning allocator, Hedge58.2%1.90-16%22.7%0.88-32%
Risk parity39.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

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