Do popular indicators carry information? 10 indicators on four markets
An indicator can look convincing on a chart and still say nothing about what price does next. We measured how well ten popular indicators rank the candles that went on to rise.
Of 40 indicator–market tests, 32 carried statistically clear and stable information about future returns, 8 were weak and 0 showed none. For scale: with 40 tests at the usual 5% threshold, about 2 "findings" are expected from chance alone — so treat each hit as something to test further, not as a proven edge.
- RSI (14) · BTCUSDT · IC (1) 0.002, t 0.09
- Distance from the 50-day EMA · BTCUSDT · IC (1) -0.000, t -0.01
- EMA 20/50 bullish cross · BTCUSDT · IC (1) 0.031, t 1.12
- MACD histogram (÷ price) · BTCUSDT · IC (1) -0.009, t -0.33
- Bollinger %B (20, 2) · BTCUSDT · IC (1) -0.011, t -0.42
- 20-day momentum (ROC) · BTCUSDT · IC (1) -0.010, t -0.36
- 20-day high breakout · BTCUSDT · IC (1) 0.058, t 2.16
- Price z-score vs 50-day average · BTCUSDT · IC (1) 0.006, t 0.21
- MACD histogram (÷ price) · ETHUSDT · IC (1) -0.024, t -0.88
- Bollinger %B (20, 2) · ETHUSDT · IC (1) -0.017, t -0.62
- Volatility: ATR(14) as % of price · ETHUSDT · IC (1) -0.020, t -0.73
- Volume z-score (20) · ETHUSDT · IC (1) -0.020, t -0.76
- 20-day high breakout · ETHUSDT · IC (1) 0.020, t 0.72
- Price z-score vs 50-day average · ETHUSDT · IC (1) 0.007, t 0.24
- RSI (14) · SOLUSDT · IC (1) 0.008, t 0.30
- Distance from the 50-day EMA · SOLUSDT · IC (1) 0.001, t 0.04
- EMA 20/50 bullish cross · SOLUSDT · IC (1) -0.007, t -0.26
- MACD histogram (÷ price) · SOLUSDT · IC (1) 0.012, t 0.46
- Bollinger %B (20, 2) · SOLUSDT · IC (1) 0.021, t 0.79
- 20-day momentum (ROC) · SOLUSDT · IC (1) 0.010, t 0.38
- 20-day high breakout · SOLUSDT · IC (1) 0.064, t 2.39
- Price z-score vs 50-day average · SOLUSDT · IC (1) 0.003, t 0.10
- RSI (14) · SPY · IC (1) -0.071, t -2.20
- Distance from the 50-day EMA · SPY · IC (1) -0.062, t -1.87
- EMA 20/50 bullish cross · SPY · IC (1) 0.036, t 1.08
- MACD histogram (÷ price) · SPY · IC (1) -0.047, t -1.44
- Bollinger %B (20, 2) · SPY · IC (1) -0.058, t -1.77
- Volatility: ATR(14) as % of price · SPY · IC (1) 0.082, t 2.55
- 20-day momentum (ROC) · SPY · IC (1) -0.021, t -0.63
- Volume z-score (20) · SPY · IC (1) 0.081, t 2.51
- 20-day high breakout · SPY · IC (1) -0.011, t -0.34
- Price z-score vs 50-day average · SPY · IC (1) -0.082, t -2.49
BTCUSDT: 1410 daily candles, 2022-12-11 to 2026-10-20.
| Indicator | IC · 1 | t | IC · 5 | t | IC · 20 | t | Verdict |
|---|---|---|---|---|---|---|---|
RSI (14) Formulaplot v = rsi(close, 14) | 0.002 | 0.09 | 0.011 | 0.26 | 0.048 | 0.84 | Carries information |
Distance from the 50-day EMA Formulaplot v = (close - ema(close, 50)) / ema(close, 50) | -0.000 | -0.01 | -0.007 | -0.17 | 0.030 | 0.52 | Carries information |
EMA 20/50 bullish cross Formulaplot v = crossover(ema(close, 20), ema(close, 50)) | 0.031 | 1.12 | 0.015 | 0.36 | -0.010 | -0.16 | Carries information |
MACD histogram (÷ price) Formulam = ema(close, 12) - ema(close, 26) plot v = (m - ema(m, 9)) / close | -0.009 | -0.33 | 0.003 | 0.07 | 0.060 | 1.04 | Carries information |
Bollinger %B (20, 2) Formulabasis = sma(close, 20) dev = 2 * stdev(close, 20) plot v = (close - (basis - dev)) / (2 * dev) | -0.011 | -0.42 | -0.007 | -0.17 | 0.023 | 0.39 | Carries information |
Volatility: ATR(14) as % of price Formulaplot v = atr(14) / close | -0.005 | -0.20 | 0.014 | 0.36 | -0.030 | -0.52 | Weak |
20-day momentum (ROC) Formulaplot v = roc(close, 20) | -0.010 | -0.36 | -0.011 | -0.26 | 0.070 | 1.23 | Carries information |
Volume z-score (20) Formulaplot v = zscore(volume, 20) | -0.003 | -0.12 | 0.033 | 0.81 | 0.006 | 0.11 | Weak |
20-day high breakout Formulaplot v = close > highest(high, 20)[1] | 0.058 | 2.16 | 0.078 | 1.95 | 0.042 | 0.74 | Carries information |
Price z-score vs 50-day average Formulaplot v = zscore(close, 50) | 0.006 | 0.21 | 0.006 | 0.13 | 0.051 | 0.87 | Carries information |
Method
For every candle we take the indicator value and the return over the next 1, 5 and 20 candles, and compute the Spearman rank correlation between them (the information coefficient). Price-scale indicators are measured as their distance from price.
Because forward returns overlap, the t statistic uses an effective sample of candles ÷ horizon. "Carries information" requires |t| ≥ 2 on at least one horizon and the same sign in both halves of the data.
Limits — read before quoting
Ten indicators, four markets, daily candles, no fees. Information is not profit: a small but real IC can disappear after costs, and a finding on one market needs to be confirmed on others. Several findings here are on the 1-day horizon only.
Last recalculated: October 20, 2026 · Results may be quoted with a link (CC BY 4.0).