162 technical indicators against 20 random rules
We backtested 162 textbook indicators and candlestick patterns on 20 markets and three timeframes. None beat random rules after correcting for multiple testing, and simply staying long beat all of them.
Key findings
- 162 rules on 20 instruments (9 currency pairs and gold, 11 cryptocurrencies) and three timeframes, all with textbook parameters and trading costs. After correcting for multiple testing, 0 of 162 had an edge. The lowest false-discovery q-value was 0.95.
- Judged market by market, 11 of 782 rule and market combinations beat 95% of 20 random rules in both the training and the test period, against about 2 expected by chance. Most were daily mean-reversion rules on currencies, and that family failed on fresh 2000–2015 data (net Sharpe −0.33).
- “Always long” beat every indicator. Its median test Sharpe was 0.27, the best indicator’s −0.015. On crypto, staying long made +24.7% a year in 2024–26 and the best indicator +10.6%.
- Oscillator reversion rules won 54–70% of their trades and all 12 lost money per trade.
- The 101 rules that are not candlestick patterns carry only about 4.6 independent signals. 53 of them fall into one cluster.
The setup
- Universe: EUR/USD, GBP/USD, USD/JPY, AUD/USD, USD/CAD, USD/CHF, EUR/GBP, EUR/JPY and gold (XAU/USD), plus BTC, ETH, XRP, ADA, DOGE, LINK, LTC, ATOM, SOL, AVAX and DOT. Hourly, 4-hour and daily bars, 60 instrument and timeframe combinations in total.
- Data: cTrader 1-minute bid bars from January 2016 for currencies and gold, with the trading day ending at 17:00 New York time. Binance bars from January 2020 for crypto.
- Split: training up to the end of 2023, test from January 2024 to September 2026.
- Rules: 162 indicator rules with their textbook default parameters and no tuning. That covers 25 moving-average rules, 13 trend indicators (Parabolic SAR, SuperTrend, Ichimoku, Aroon, Vortex and others), 28 momentum rules (MACD, RSI above 50, ROC, TRIX, Fisher transform and others), 12 oscillator reversion rules (RSI 30/70, Stochastic, Williams %R, CCI, MFI and others), 9 band rules (Bollinger, Keltner, Donchian and acceleration bands as breakout and reversion, plus the squeeze), 9 volume rules, 4 cycle and statistics rules, TD Sequential and all 61 TA-Lib candlestick patterns.
- Positions: a rule decides a position of −1, 0 or +1 on the close of a bar and holds it over the next bar. Trend rules are always in the market. Reversion rules enter when an oscillator turns back from an extreme and exit at the midline. Candlestick signals are held for 5 bars.
- Costs: 0.5 bp per side for currencies and gold, 0.1% per side for crypto, charged on every change of position. A flip from long to short pays twice.
- Benchmarks: 20 random rules with fixed seeds (on each bar, with a 1-in-20 chance, draw a new position from −1, 0 and +1) and always long.
- Guard rails: every one of the 183 rules is covered by a look-ahead test. Positions on the first 2,000 bars of a synthetic series must be identical whether or not the next 1,000 bars exist.
In total that made 21,960 result rows and 17.4 million simulated trades.
Nothing beats random
We asked two questions of every rule. Does it survive a multiple-testing correction? And does it beat the 95th percentile of the random rules in both periods?
For the first question, each rule’s best training t-statistic across six equal-weight portfolios (currencies or crypto, on three timeframes) was converted to a p-value with a Bonferroni step inside the rule, then corrected across all 162 rules with Benjamini–Hochberg. Before correction, 39 rules had a portfolio t-statistic above 2. So did 3 of the 20 random rules. After correction none of the 162 passed.
162 technical indicators vs. 20 random rules
Each dot is one rule: median Sharpe after costs across 60 instrument x timeframe combos, training (to 2023) vs. test (2024-26).
Show data
| Point | Median Sharpe, training (to 2023) | Median Sharpe, test (2024–2026) |
|---|---|---|
| indicator rules (133) | -0.12 | -0.49 |
| indicator rules (133) | -0.17 | -0.33 |
| indicator rules (133) | -0.05 | -0.15 |
| indicator rules (133) | -0.28 | -0.56 |
| indicator rules (133) | -0.24 | -0.49 |
| indicator rules (133) | -0.0010 | -0.24 |
| indicator rules (133) | -0.40 | -0.64 |
| indicator rules (133) | -0.34 | -0.39 |
| indicator rules (133) | -0.26 | -0.61 |
| indicator rules (133) | -0.15 | -0.37 |
| indicator rules (133) | -0.27 | -0.55 |
| indicator rules (133) | -0.70 | -0.94 |
| indicator rules (133) | -0.44 | -0.88 |
| indicator rules (133) | -0.39 | -0.49 |
| indicator rules (133) | -0.13 | -0.43 |
| indicator rules (133) | -0.22 | -0.49 |
| indicator rules (133) | -0.27 | -0.56 |
| indicator rules (133) | -0.31 | -0.65 |
| indicator rules (133) | -0.16 | -0.46 |
| indicator rules (133) | -0.49 | -1.19 |
| indicator rules (133) | -0.50 | -1.31 |
| indicator rules (133) | 0.11 | -0.04 |
| indicator rules (133) | 0.16 | -0.06 |
| indicator rules (133) | 0.15 | -0.13 |
| indicator rules (133) | -0.02 | -0.21 |
| indicator rules (133) | -0.18 | -0.42 |
| indicator rules (133) | -0.18 | -0.42 |
| indicator rules (133) | 0.02 | -0.18 |
| indicator rules (133) | -0.06 | -0.21 |
| indicator rules (133) | 0.01 | -0.17 |
| indicator rules (133) | -0.12 | -0.27 |
| indicator rules (133) | -0.70 | -0.77 |
| indicator rules (133) | -0.16 | -0.43 |
| indicator rules (133) | -0.12 | -0.54 |
| indicator rules (133) | -0.17 | -0.29 |
| indicator rules (133) | -0.13 | -0.54 |
| indicator rules (133) | -0.13 | -0.41 |
| indicator rules (133) | -0.04 | -0.45 |
| indicator rules (133) | -0.0030 | -0.12 |
| indicator rules (133) | -0.18 | -0.41 |
| indicator rules (133) | -0.19 | -0.34 |
| indicator rules (133) | -0.15 | -0.42 |
| indicator rules (133) | 0.14 | -0.13 |
| indicator rules (133) | -0.13 | -0.20 |
| indicator rules (133) | -0.13 | -0.40 |
| indicator rules (133) | 0.15 | -0.13 |
| indicator rules (133) | 0.15 | -0.13 |
| indicator rules (133) | -0.37 | -0.68 |
| indicator rules (133) | -0.37 | -0.68 |
| indicator rules (133) | 0.19 | -0.09 |
| indicator rules (133) | -0.20 | -0.49 |
| indicator rules (133) | -0.25 | -0.40 |
| indicator rules (133) | -0.45 | -0.33 |
| indicator rules (133) | 0.04 | -0.23 |
| indicator rules (133) | -0.49 | -0.42 |
| indicator rules (133) | 0.08 | -0.09 |
| indicator rules (133) | -0.85 | -0.93 |
| indicator rules (133) | -1.53 | -1.29 |
| indicator rules (133) | -0.41 | -0.67 |
| indicator rules (133) | 0.13 | -0.17 |
| indicator rules (133) | -0.22 | -0.43 |
| indicator rules (133) | -0.17 | -0.57 |
| indicator rules (133) | -0.01 | -0.44 |
| indicator rules (133) | -0.20 | -0.49 |
| indicator rules (133) | -0.47 | -0.91 |
| indicator rules (133) | -1.62 | -1.79 |
| indicator rules (133) | -0.25 | -0.80 |
| indicator rules (133) | -0.27 | -0.05 |
| indicator rules (133) | -0.49 | -0.62 |
| indicator rules (133) | -0.32 | -0.58 |
| indicator rules (133) | -0.04 | -0.31 |
| indicator rules (133) | -0.08 | -0.27 |
| indicator rules (133) | -0.13 | -0.30 |
| indicator rules (133) | -0.03 | -0.32 |
| indicator rules (133) | -0.09 | -0.28 |
| indicator rules (133) | -0.41 | -0.66 |
| indicator rules (133) | -0.49 | -0.61 |
| indicator rules (133) | -0.49 | -0.62 |
| indicator rules (133) | -0.36 | -0.60 |
| indicator rules (133) | -0.32 | -0.45 |
| indicator rules (133) | -0.13 | -0.32 |
| indicator rules (133) | -0.11 | -0.18 |
| indicator rules (133) | 0.06 | -0.01 |
| indicator rules (133) | -0.34 | -0.69 |
| indicator rules (133) | -0.35 | -0.05 |
| indicator rules (133) | -0.90 | -0.91 |
| indicator rules (133) | -0.48 | -0.61 |
| indicator rules (133) | -1.29 | -1.23 |
| indicator rules (133) | -0.58 | -0.47 |
| indicator rules (133) | -0.57 | -0.50 |
| indicator rules (133) | -0.32 | -0.19 |
| indicator rules (133) | -0.24 | -0.33 |
| indicator rules (133) | -0.33 | -0.55 |
| indicator rules (133) | -0.38 | -0.06 |
| indicator rules (133) | -0.29 | -0.41 |
| indicator rules (133) | -0.40 | -0.10 |
| indicator rules (133) | -0.42 | -0.19 |
| indicator rules (133) | -0.42 | -0.17 |
| indicator rules (133) | -0.34 | -0.14 |
| indicator rules (133) | -0.38 | -0.19 |
| indicator rules (133) | -0.15 | -0.27 |
| indicator rules (133) | -0.23 | -0.37 |
| indicator rules (133) | -0.11 | -0.11 |
| indicator rules (133) | -0.56 | -0.48 |
| indicator rules (133) | -0.42 | -0.30 |
| indicator rules (133) | -0.36 | -0.48 |
| indicator rules (133) | -0.66 | -0.47 |
| indicator rules (133) | 0.03 | -0.24 |
| indicator rules (133) | -0.26 | -0.29 |
| indicator rules (133) | -0.12 | -0.33 |
| indicator rules (133) | -0.60 | -0.78 |
| indicator rules (133) | -0.20 | -0.45 |
| indicator rules (133) | -0.09 | -0.23 |
| indicator rules (133) | -0.11 | -0.51 |
| indicator rules (133) | -0.16 | -0.27 |
| indicator rules (133) | -0.40 | -0.66 |
| indicator rules (133) | -0.16 | -0.43 |
| indicator rules (133) | -0.41 | -0.64 |
| indicator rules (133) | -0.35 | -0.38 |
| indicator rules (133) | 0.02 | -0.02 |
| indicator rules (133) | 0.03 | -0.25 |
| indicator rules (133) | -0.72 | -0.65 |
| indicator rules (133) | -0.73 | -0.50 |
| indicator rules (133) | -0.12 | -0.26 |
| indicator rules (133) | -0.02 | -0.12 |
| indicator rules (133) | -0.0070 | -0.19 |
| indicator rules (133) | -0.21 | -0.33 |
| indicator rules (133) | -0.32 | -0.31 |
| indicator rules (133) | -0.78 | -0.44 |
| indicator rules (133) | -0.79 | -0.94 |
| indicator rules (133) | -0.19 | -0.28 |
| indicator rules (133) | -0.19 | -0.44 |
| indicator rules (133) | -0.14 | -0.08 |
| random rules (20) | -0.26 | -0.15 |
| random rules (20) | -0.38 | 0.18 |
| random rules (20) | -0.16 | -0.10 |
| random rules (20) | 0.06 | -0.29 |
| random rules (20) | -0.26 | -0.03 |
| random rules (20) | -0.21 | -0.05 |
| random rules (20) | -0.21 | -0.27 |
| random rules (20) | -0.19 | -0.22 |
| random rules (20) | 0.06 | -0.22 |
| random rules (20) | -0.14 | -0.24 |
| random rules (20) | -0.09 | -0.14 |
| random rules (20) | -0.10 | -0.12 |
| random rules (20) | -0.09 | 0.08 |
| random rules (20) | -0.09 | -0.22 |
| random rules (20) | -0.15 | -0.18 |
| random rules (20) | -0.25 | -0.33 |
| random rules (20) | -0.27 | -0.20 |
| random rules (20) | -0.05 | -0.25 |
| random rules (20) | -0.10 | -0.31 |
| random rules (20) | 0.06 | -0.01 |
| always long | 0.73 | 0.27 |
Pooled over all 60 combinations, no rule beat the random band in both periods. Most rules were indistinguishable from random (49) or worse than random (84); 29 traded too rarely to judge. Looking at each market and timeframe separately, 11 rule and market combinations passed, against about 2 expected by chance:
| Market | Rule | Sharpe, training | Sharpe, test |
|---|---|---|---|
| FX daily | RSI 14 (30/70) reversion | 0.11 | 0.39 |
| FX daily | Stochastic %K (20/80) reversion | 0.23 | 0.37 |
| FX daily | KDJ J reversion | 0.34 | 0.30 |
| FX daily | Keltner channel reversion | 0.12 | 0.50 |
| FX daily | Acceleration bands reversion | 0.28 | 0.37 |
| FX daily | Hammer | 0.19 | 0.34 |
| FX hourly | Inverted hammer | 0.16 | 0.69 |
| Crypto hourly | SMA 50/200 crossover | 0.36 | 0.21 |
| Crypto hourly | TRIX 30 | 0.44 | 0.17 |
| Crypto hourly | PVI vs SMA 255 | 0.18 | 0.19 |
| Crypto hourly | EMA 20/50 crossover | 0.43 | −0.005 |
The crypto hourly passes are weak evidence. Random rules on hourly crypto bars lose money through fees (their test 95th percentile is −0.12), so beating them is a low bar, and one of the four has a negative test Sharpe itself. The currency daily reversion rules were the one interesting cluster. We tested that family again on currency data the atlas never used, from 2000 to 2015, as one composite of all 16 reversion rules on nine USD pairs with spreads, commission and overnight swap mark-ups. Its net Sharpe was −0.33, and eight of the nine pairs were negative. The result belonged to one period.
Staying long beat everything
Pooled over all combinations, always long had a median test Sharpe of 0.27 and a median return of +3.6% a year. The best indicator rule had a median Sharpe of −0.015 and a return of −0.03% a year. On crypto the gap was larger: always long made +24.7% a year (Sharpe 0.31), the best indicator, price above its 200-period EMA, made +10.6% (Sharpe 0.13).
Inside single cells some rules did beat always long on Sharpe (15 on daily currency bars, 3 on 4-hour crypto bars), so the statement holds for the pooled and per-market views, not for every cell. Note also that gold rallied and the dollar weakened in the test period, which flatters always long on the currency side.
Winning often is not the same as making money
Winning often is not the same as making money
Test period 2024-26: share of winning trades vs. median net result per trade, one dot per indicator rule.
Show data · values in bp
| Point | Winning trades in the test period (%) | Median net result per trade (bp) |
|---|---|---|
| reversion rules: oscillators, bands, TD Sequential (17) | 68.10 | -0.84 |
| reversion rules: oscillators, bands, TD Sequential (17) | 58.50 | -4.87 |
| reversion rules: oscillators, bands, TD Sequential (17) | 56.70 | -2.98 |
| reversion rules: oscillators, bands, TD Sequential (17) | 53.90 | -3.47 |
| reversion rules: oscillators, bands, TD Sequential (17) | 63.50 | -11.03 |
| reversion rules: oscillators, bands, TD Sequential (17) | 65.10 | -10.97 |
| reversion rules: oscillators, bands, TD Sequential (17) | 59.60 | -4.73 |
| reversion rules: oscillators, bands, TD Sequential (17) | 57.20 | -11.49 |
| reversion rules: oscillators, bands, TD Sequential (17) | 59.50 | -14.59 |
| reversion rules: oscillators, bands, TD Sequential (17) | 63.10 | -1.64 |
| reversion rules: oscillators, bands, TD Sequential (17) | 59.60 | -2.50 |
| reversion rules: oscillators, bands, TD Sequential (17) | 69.60 | -4.38 |
| reversion rules: oscillators, bands, TD Sequential (17) | 64.50 | -3.63 |
| reversion rules: oscillators, bands, TD Sequential (17) | 63.30 | -8.23 |
| reversion rules: oscillators, bands, TD Sequential (17) | 64 | -4.24 |
| reversion rules: oscillators, bands, TD Sequential (17) | 62.20 | -4.01 |
| reversion rules: oscillators, bands, TD Sequential (17) | 49.50 | -2.93 |
| trend, momentum, breakout and volume rules (84) | 23.20 | -3.98 |
| trend, momentum, breakout and volume rules (84) | 19 | -2.98 |
| trend, momentum, breakout and volume rules (84) | 14.70 | -2.41 |
| trend, momentum, breakout and volume rules (84) | 22.40 | -2.99 |
| trend, momentum, breakout and volume rules (84) | 19 | -2.39 |
| trend, momentum, breakout and volume rules (84) | 14.60 | -3.19 |
| trend, momentum, breakout and volume rules (84) | 25.60 | -5.40 |
| trend, momentum, breakout and volume rules (84) | 28.80 | -3.77 |
| trend, momentum, breakout and volume rules (84) | 21.80 | -4.70 |
| trend, momentum, breakout and volume rules (84) | 22.20 | -1.88 |
| trend, momentum, breakout and volume rules (84) | 18.60 | -3.70 |
| trend, momentum, breakout and volume rules (84) | 29.80 | -4.12 |
| trend, momentum, breakout and volume rules (84) | 32.20 | -2.89 |
| trend, momentum, breakout and volume rules (84) | 28.40 | -2.81 |
| trend, momentum, breakout and volume rules (84) | 18.90 | -2.48 |
| trend, momentum, breakout and volume rules (84) | 21.30 | -2.67 |
| trend, momentum, breakout and volume rules (84) | 26 | -4.17 |
| trend, momentum, breakout and volume rules (84) | 26.60 | -3.43 |
| trend, momentum, breakout and volume rules (84) | 22.80 | -2.22 |
| trend, momentum, breakout and volume rules (84) | 34 | -4.89 |
| trend, momentum, breakout and volume rules (84) | 36.40 | -4.88 |
| trend, momentum, breakout and volume rules (84) | 32.50 | -2.59 |
| trend, momentum, breakout and volume rules (84) | 31 | 0.51 |
| trend, momentum, breakout and volume rules (84) | 29.10 | -1.76 |
| trend, momentum, breakout and volume rules (84) | 31.20 | -1.65 |
| trend, momentum, breakout and volume rules (84) | 37.70 | -3.66 |
| trend, momentum, breakout and volume rules (84) | 37.70 | -3.66 |
| trend, momentum, breakout and volume rules (84) | 36.90 | -3.09 |
| trend, momentum, breakout and volume rules (84) | 40.10 | -1.65 |
| trend, momentum, breakout and volume rules (84) | 37.70 | -2.06 |
| trend, momentum, breakout and volume rules (84) | 21 | -2.69 |
| trend, momentum, breakout and volume rules (84) | 32 | -3.26 |
| trend, momentum, breakout and volume rules (84) | 36.70 | -2.91 |
| trend, momentum, breakout and volume rules (84) | 26.50 | -2.89 |
| trend, momentum, breakout and volume rules (84) | 33.10 | -3.19 |
| trend, momentum, breakout and volume rules (84) | 26.50 | -2.89 |
| trend, momentum, breakout and volume rules (84) | 33.10 | -2.01 |
| trend, momentum, breakout and volume rules (84) | 33.60 | -3.53 |
| trend, momentum, breakout and volume rules (84) | 38 | -1.34 |
| trend, momentum, breakout and volume rules (84) | 33.90 | -1.87 |
| trend, momentum, breakout and volume rules (84) | 33.60 | -3.33 |
| trend, momentum, breakout and volume rules (84) | 29.10 | -1.76 |
| trend, momentum, breakout and volume rules (84) | 41.10 | -1.11 |
| trend, momentum, breakout and volume rules (84) | 33.60 | -2.79 |
| trend, momentum, breakout and volume rules (84) | 29.10 | -1.76 |
| trend, momentum, breakout and volume rules (84) | 29.10 | -1.76 |
| trend, momentum, breakout and volume rules (84) | 29.80 | -9.08 |
| trend, momentum, breakout and volume rules (84) | 29.80 | -9.08 |
| trend, momentum, breakout and volume rules (84) | 35 | -3.12 |
| trend, momentum, breakout and volume rules (84) | 21.30 | -2.34 |
| trend, momentum, breakout and volume rules (84) | 31.10 | -1.74 |
| trend, momentum, breakout and volume rules (84) | 31.30 | -2.13 |
| trend, momentum, breakout and volume rules (84) | 32.10 | -2.31 |
| trend, momentum, breakout and volume rules (84) | 38 | -4.68 |
| trend, momentum, breakout and volume rules (84) | 35.50 | -0.93 |
| trend, momentum, breakout and volume rules (84) | 48.30 | -1.66 |
| trend, momentum, breakout and volume rules (84) | 37.30 | -2.41 |
| trend, momentum, breakout and volume rules (84) | 30.50 | -5.07 |
| trend, momentum, breakout and volume rules (84) | 29.40 | -2.50 |
| trend, momentum, breakout and volume rules (84) | 29.80 | -3.52 |
| trend, momentum, breakout and volume rules (84) | 34.40 | -5.57 |
| trend, momentum, breakout and volume rules (84) | 26.20 | -2.63 |
| trend, momentum, breakout and volume rules (84) | 21.30 | -2.34 |
| trend, momentum, breakout and volume rules (84) | 38.80 | -4.72 |
| trend, momentum, breakout and volume rules (84) | 36 | -2.02 |
| trend, momentum, breakout and volume rules (84) | 34.50 | -4.31 |
| trend, momentum, breakout and volume rules (84) | 38 | -0.52 |
| trend, momentum, breakout and volume rules (84) | 23.70 | -7.06 |
| trend, momentum, breakout and volume rules (84) | 31.50 | -3.33 |
| trend, momentum, breakout and volume rules (84) | 35.20 | -3.55 |
| trend, momentum, breakout and volume rules (84) | 33.20 | -2.57 |
| trend, momentum, breakout and volume rules (84) | 34 | -2.70 |
| trend, momentum, breakout and volume rules (84) | 33.60 | -4.58 |
| trend, momentum, breakout and volume rules (84) | 35.50 | -4.03 |
| trend, momentum, breakout and volume rules (84) | 37.70 | -4.35 |
| trend, momentum, breakout and volume rules (84) | 24.90 | -3.58 |
| trend, momentum, breakout and volume rules (84) | 29.70 | -6.70 |
| trend, momentum, breakout and volume rules (84) | 31.90 | -6.09 |
| trend, momentum, breakout and volume rules (84) | 33.70 | -9.33 |
| trend, momentum, breakout and volume rules (84) | 25.90 | -2.37 |
| trend, momentum, breakout and volume rules (84) | 26.30 | -3.75 |
| trend, momentum, breakout and volume rules (84) | 35.70 | -3.93 |
| trend, momentum, breakout and volume rules (84) | 24.10 | 3.22 |
| trend, momentum, breakout and volume rules (84) | 23.40 | -9.45 |
| candlestick patterns (32) | 45.80 | -4.89 |
| candlestick patterns (32) | 50.40 | -1.15 |
| candlestick patterns (32) | 45.80 | -1.68 |
| candlestick patterns (32) | 49.60 | -3.53 |
| candlestick patterns (32) | 42.70 | -1.92 |
| candlestick patterns (32) | 42.70 | -1.98 |
| candlestick patterns (32) | 48.70 | -1.06 |
| candlestick patterns (32) | 50.40 | -1.92 |
| candlestick patterns (32) | 48.20 | -5.71 |
| candlestick patterns (32) | 40.30 | -1.68 |
| candlestick patterns (32) | 42.10 | -18.64 |
| candlestick patterns (32) | 48.10 | -1.59 |
| candlestick patterns (32) | 46.20 | -10.35 |
| candlestick patterns (32) | 48.90 | -5.91 |
| candlestick patterns (32) | 49.20 | -10.08 |
| candlestick patterns (32) | 46.30 | -12.25 |
| candlestick patterns (32) | 43.30 | -9.06 |
| candlestick patterns (32) | 49.40 | -5.30 |
| candlestick patterns (32) | 46.80 | -0.08 |
| candlestick patterns (32) | 48.60 | -1.12 |
| candlestick patterns (32) | 40 | -9.74 |
| candlestick patterns (32) | 44.70 | -2.58 |
| candlestick patterns (32) | 49.80 | -8.97 |
| candlestick patterns (32) | 49.50 | -3.68 |
| candlestick patterns (32) | 47.90 | -1.23 |
| candlestick patterns (32) | 50 | -3.16 |
| candlestick patterns (32) | 46.60 | -3.04 |
| candlestick patterns (32) | 40 | -6.26 |
| candlestick patterns (32) | 40.90 | -14.33 |
| candlestick patterns (32) | 52.20 | -8.31 |
| candlestick patterns (32) | 48.20 | -4.45 |
| candlestick patterns (32) | 49 | -1.21 |
The 12 oscillator reversion rules won between 54% and 70% of their test trades, 61% on average, and every one of them had a negative median trade after costs, between −0.8 and −14.6 bp. RSI 14 won 68% of its trades and lost 0.8 bp per trade; Williams %R won 64% and lost 11 bp. Trend rules show the opposite profile: a median win rate of 29%, with occasional large winners. Neither profile made money after costs. Reversion rules win often and small and lose rarely and big.
Why they fail
Redundancy. The positions of the 101 non-candlestick rules are highly correlated. Their participation ratio, a measure of how many independent signals a correlation matrix contains, is 4.64, and the first principal component explains 44% of the variance. One cluster of 53 rules is essentially a single medium-speed trend signal: price against 12 different moving averages, MACD, PPO, momentum, RSI above 50, CCI, Aroon, directional movement, Ichimoku, SuperTrend, band breakouts and several volume rules. Testing 162 indicators is closer to testing five ideas many times.
Small gross edges. Before costs the median trade does have a sign that makes sense, and it is small compared with the cost:
| Market | Rule type | Gross per trade | Round-trip cost | Share of rule and instrument pairs above cost |
|---|---|---|---|---|
| FX | Band reversion | +2.4 bp | 1 bp | 61% |
| FX | Oscillator reversion | +0.96 bp | 1 bp | 50% |
| FX | Trend | −0.47 bp | 1 bp | 26% |
| Crypto | Band breakout | +48.3 bp | 20 bp | 76% |
| Crypto | Trend | +23.1 bp | 20 bp | 57% |
| Crypto | Oscillator reversion | −22.0 bp | 20 bp | – |
Currencies show weak mean reversion and crypto shows trend. On 4-hour crypto bars, trend and momentum rules made a median of +26% a year before costs in the test period, and a 0.2% round trip took it. The typical correlation between a rule’s signal and the next bar’s return was +0.0026.
No saving regime. We split every bar into ranging, middle and trending markets with Kaufman’s efficiency ratio, measured causally against the previous 500 bars. Currency reversion was not better in ranging markets, and crypto reversion lost in every regime. There is no regime in which the losing style wins, so switching between styles does not help.
Combining indicators
Two combinations were written down before testing.
- Crypto trend vote, 4-hour bars, 11 coins, long only: hold a coin when at least two of three signals agree (Donchian 20 breakout, price above SMA 200, SuperTrend 10/3). In the test period it made 16.0% a year with a Sharpe of 0.51 and a −39% maximum drawdown, against 10.5%, 0.16 and −75% for holding the coins. It was in the market 30% of the time with a beta of about 0.3. Its alpha was significant in training (t 2.5) and not in the test (t 0.8). At a 0.25% fee per side, the rate of a European retail spot exchange, the test Sharpe drops to 0.28. It is a risk filter that halves the drawdown, not a source of extra return.
- Bollinger reversion on currencies and gold, daily bars: Sharpe 0.3–0.4 in both periods, about 1% a year, t below 1. Too weak to trade.
A bar-construction detail moved the result
The first version of the atlas built daily currency bars on calendar days, because a daily resample silently ignored the intended session offset. After we rebuilt the bars on the 17:00 New York trading day, the number of rule and market combinations above random rose from 5 to 11, mostly currency daily reversion rules. That is the same cluster that then failed on 2000–2015 data. A detail of bar construction can create or remove an apparent edge.
Caveats
- The random benchmark uses only 20 rules, so its 95th percentile is noisy. The “about 2 by chance” figure assumes independent rules and periods, and the rules are highly redundant.
- Currency “volume” is tick volume, so the volume rules mean less on currencies than on crypto.
- Gold sits in the currency basket and dominates its 2024–26 buy-and-hold result.
- Spreads were measured recently and applied to all years. Historical spreads were probably wider, which would make the backtests look better than reality.
- Only textbook parameters were tested. Tuning would add more hypotheses to correct for.