Decide on the close, fill at the next day's close, 0.1% cost per side, compared with holding SPY over the same dates.
Buy at RSI 30
Buy when RSI falls below 30, sell when it rises above 70.
Compute SPY's 14-day RSI from daily closes.
Buy SPY when RSI drops below 30.
Sell and wait in cash when RSI rises above 70.
Cash earns the short-term Treasury bill yield.
1993-12-31 to 2026-10-09: CAGR 6.13%, max drawdown -47.17%, Sharpe 0.48 (SPY 10.91%, -55.19%, 0.65). Out of sample from 2016-11: CAGR 6.12% vs SPY 15.49%. At double cost: CAGR 5.12%.
Buy the 52-week high
Buy when the price makes a new one-year high.
Buy when SPY closes at its highest level of the last 252 trading days.
Hold for about three months (63 trading days).
Each new high resets the holding period to three months.
Sell and wait in cash three months after the last new high.
1993-12-31 to 2026-10-09: CAGR 8.84%, max drawdown -38.44%, Sharpe 0.70 (SPY 10.91%, -55.19%, 0.65). Out of sample from 2016-11: CAGR 9.94% vs SPY 15.49%. At double cost: CAGR 8.51%.
Golden cross
Hold stocks only while the 50-day moving average is above the 200-day.
Compute SPY's 50-day and 200-day moving averages from daily closes.
Hold SPY while the 50-day average is above the 200-day average.
Sell and wait in cash when the 50-day average falls below the 200-day average.
1993-12-31 to 2026-10-09: CAGR 10.12%, max drawdown -33.72%, Sharpe 0.77 (SPY 10.91%, -55.19%, 0.65). Out of sample from 2016-11: CAGR 11.05% vs SPY 15.49%. At double cost: CAGR 9.91%.
Permanent portfolio
Equal parts stocks, long-term Treasuries, gold and cash, rebalanced once a year.
Put 25% each in US stocks (SPY), long-term Treasuries (TLT), gold (GLD) and cash.
Reset the weights to 25% each at the end of every year.
Do nothing else.
2000-12-29 to 2026-10-09: CAGR 6.96%, max drawdown -16.89%, Sharpe 0.99 (SPY 9.08%, -55.19%, 0.55). Out of sample from 2019-01: CAGR 8.79% vs SPY 16.93%. At double cost: CAGR 6.95%.
Dual momentum
Pick whichever of US and international stocks rose more over a year; move to bonds if US stocks lag cash.
At each month-end, measure the 12-month return of SPY, developed-market stocks (VEA) and cash.
If SPY beat cash, buy whichever of SPY and VEA rose more.
If SPY lagged cash, move to the US aggregate bond fund (AGG).
1998-12-31 to 2026-10-09: CAGR 8.70%, max drawdown -33.72%, Sharpe 0.63 (SPY 8.73%, -55.19%, 0.53). Out of sample from 2018-05: CAGR 8.21% vs SPY 14.90%. At double cost: CAGR 8.38%.
60/40 stocks and bonds
60% stocks and 40% bonds, rebalanced every month.
Hold 60% in US stocks (SPY) and 40% in intermediate Treasuries (IEF).
Reset the weights to 60/40 at every month-end.
1993-12-31 to 2026-10-09: CAGR 8.63%, max drawdown -32.20%, Sharpe 0.82 (SPY 10.91%, -55.19%, 0.65). Out of sample from 2016-11: CAGR 9.74% vs SPY 15.49%. At double cost: CAGR 8.60%.
Sell in May
Sell in May and come back in November.
Hold SPY from November through April.
Sell at the end of April and hold cash from May through October.
Buy SPY again at the end of October.
1993-12-31 to 2026-10-09: CAGR 7.82%, max drawdown -33.72%, Sharpe 0.63 (SPY 10.91%, -55.19%, 0.65). Out of sample from 2016-11: CAGR 6.97% vs SPY 15.49%. At double cost: CAGR 7.39%.
Survivorship bias, measured
The same crypto strategy run twice: once on every coin that was trading at the time, once on today's listed coins only, to measure what dropping the vanished coins does.
Strategy: Crypto TSMOM from the public virtual trading league (holds only the trending coins among the top 20 by volume, weekly)
Period 2019-10-12 to 2026-10-09, cost 0.1% per side
List A: every candidate at the time, 900 coins (delisted included)
List B: today's listed coins only, 524 coins (376 removed)
Prices: public USDT perpetual futures data from an overseas exchange; delisted coins from its public data archive
A: every candidate at the time: CAGR 28.55%, max drawdown -29.81%, Sharpe 0.92
Over the period the strategy actually held 184 coins with list A and 156 with list B.
42 of the coins list A held no longer trade (LUNA, MATIC, FTM among them).
The vanished list mixes coins that collapsed with coins that were renamed and moved to a new ticker.
For this strategy the CAGR gap was small and the max drawdown changed. The size of survivorship bias differs by strategy; you only know by measuring it.
US stocks are not covered: we have no data set that includes delisted stocks.
Look-ahead bias, measured
The same rules run with only the decision and fill timing changed, to measure how much better a backtest looks once information you could not have had leaks in.
SPY, 1993-12-31 to 2026-10-09, cost 0.1% per side
Honest run: decide on the close, fill at the next trading day's close (this site's engine default)
Look-ahead reproduced: the engine does not allow same-bar fills, so only the decision input was moved one or two days earlier
Fill at the same close used to decide: CAGR 6.49%, max drawdown -47.71%, Sharpe 0.50
Fill at the next open: CAGR 6.26%, max drawdown -47.48%, Sharpe 0.48
Fill at the next close: CAGR 6.13%, max drawdown -47.17%, Sharpe 0.48
Honest run: CAGR -19.29%, max drawdown -99.91%, Sharpe -1.67
Knowing tomorrow: CAGR 122.24%, max drawdown -1.18%, Sharpe 6.92
This site's engine only passes bars that have closed by decision time and fills on the next bar; there is no same-bar fill.
Harder-to-spot forms: using restated financials before their release date, dropping soon-to-vanish stocks early, using full-period averages in past decisions.