Classic trading rules, stress-tested: 4 rules on 5 ETFs
| Rule | SPY | QQQ | TLT | GLD | EFA |
|---|---|---|---|---|---|
| 200-day moving average rule200-day | Shallower drawdown, lower returnSharpe +0.04; max drawdown +31 pts | Shallower drawdown, lower returnSharpe +0.11; max drawdown +40 pts | Trailed buy-and-holdmax drawdown +6 pts | Shallower drawdown, lower returnSharpe -0.09; max drawdown +11 pts | Shallower drawdown, lower returnSharpe +0.03; max drawdown +34 pts |
| Golden cross50/200 | Shallower drawdown, lower returnSharpe +0.10; max drawdown +21 pts | No reliable differenceSharpe +0.26; max drawdown +52 pts | Shallower drawdown, lower returnmax drawdown +21 pts | Shallower drawdown, lower returnSharpe -0.05; max drawdown +10 pts | Shallower drawdown, lower returnSharpe -0.05; max drawdown +26 pts |
| 12/26-day EMA crossover (the MACD line above zero)12/26 | Trailed buy-and-holdSharpe -0.15; max drawdown +23 pts | Shallower drawdown, lower returnSharpe +0.00; max drawdown +49 pts | No reliable differencemax drawdown +27 pts | No reliable differenceSharpe -0.04; max drawdown +7 pts | Shallower drawdown, lower returnSharpe -0.02; max drawdown +32 pts |
| RSI(14) 30/70 ruleRSI(14) 30/70 | Trailed buy-and-holdSharpe -0.19; max drawdown +0 pts | Trailed buy-and-holdmax drawdown +9 pts | Shallower drawdown, lower returnmax drawdown +17 pts | Trailed buy-and-holdSharpe -0.21; max drawdown +16 pts | Trailed buy-and-holdmax drawdown +3 pts |
Each cell links to the full check. The difference is the famous setting against buying and holding the same ETF over the same window, after 5 bps a side and with idle cash earning 3-month Treasury bills; the Sharpe difference is blank when the rule's Sharpe is under 0.20. The matrix is in fixed order: it is not a ranking and no rule is called best.
The checks
- 200-day moving average on SPY: does 150 or 250 work as well?
- 200-day moving average on QQQ: does 150 or 250 work as well?
- 200-day moving average on TLT: does 150 or 250 work as well?
- 200-day moving average on GLD: does 150 or 250 work as well?
- 200-day moving average on EFA: does 150 or 250 work as well?
- Golden cross (50/200) on SPY: robust or curve-fit?
- Golden cross (50/200) on QQQ: robust or curve-fit?
- Golden cross (50/200) on TLT: robust or curve-fit?
- Golden cross (50/200) on GLD: robust or curve-fit?
- Golden cross (50/200) on EFA: robust or curve-fit?
- 12/26 EMA crossover (MACD) on five ETFs: robust or curve-fit?
- RSI 30/70 on five ETFs: does the classic setting hold up?
What each check does
The famous setting is run next to every other setting on its grid (for the 200-day average, every length from 50 to 300 days). A plateau, where nearby settings do about as well, means the rule does not depend on one lucky number; a spike means it does. Then the check chooses the highest-Sharpe setting over each previous 10 years, holds it for the next 2, and compares the result with the fixed famous setting and with buy-and-hold. Finally it resamples the history 2,000 times in 21-day blocks to see how stable the gap to buy-and-hold is.
How many times we looked
The set ran about 600 backtests across 12 pages; some settings look good by chance. The famous settings were fixed in advance because they are famous, the grids are a sensitivity analysis around them, and the selection effect lives in the highest-Sharpe cell of each grid, which is why it is shown only in hindsight and tested by walk-forward. The thresholds behind every verdict were fixed before the results were seen.
Methodology
- Data
- Daily total-return-adjusted closes of the ETF itself (no proxy splicing) from Yahoo Finance via MarketHeist, through the last trading day of the last complete month; idle cash earns the FRED 3-month Treasury yield. Long-only, unlevered, 5 bps a side, signals filled at the signal day's close.
- Numbers
- Every figure is computed by the MarketHeist backtest engine and every sentence is rule-based over those figures; no language model is involved. Each check ends with a link that opens the famous setting in the backtester.
- Verdicts
- One per ETF, from fixed thresholds: Trailed buy-and-hold; Sits on a spike; Held up in this test; Too few trades to call; Held up only without frictions; Shallower drawdown, lower return; No reliable difference. The rule for each is on every check.
Related
The backtester · Trend filters on portfolios · What portfolios are really betting on · Docs
Historical simulation, not investment advice. Past results do not predict future results.