Momentum vs Bollinger bands, on 39 stocks.

The same 39 US and Indian stocks and indices, 2019–2024. At default settings Momentum had the higher Sharpe ratio on 24, Bollinger bands on 15. Tuned on the first 70% of the period and scored on the rest, Momentum held up on 12 and Bollinger bands on 6.

The scoreboard

MomentumBollinger bands
Higher Sharpe than the other, default settings24 of 3915 of 39
Higher Sharpe than holding the stock1 of 392 of 39
Median Sharpe, default settings−0.11−0.24
Held up on years it never saw12 of 396 of 39
Median Sharpe on those years0.12−0.41
Beat random timing (p < 0.05)13 of 3910 of 39

Beating random timing and holding up are different questions. The permutation test asks whether a rule's timing beat chance over the whole period; the walk-forward split asks whether the setting picked on the early years kept working after. A rule can pass the first and fail the second.

The two rules

Trend following

Buys a stock that has been rising and sits above its moving average; sells it short on the mirror condition.

The exact Momentum rule

Mean reversion

Buys when the price falls below its lower band and shorts when it rises above the upper one: it fades extremes.

The exact Bollinger bands rule

Stock by stock

Sharpe ratio at default settings over the whole period, then the Sharpe on the years after the split of the setting tuned on the years before. The higher of each pair is in bold.

StockMomentumBollinger bandsMomentum, unseen yearsBollinger bands, unseen years
Apple0.36−0.030.20−1.13
Microsoft−0.470.59−0.150.77
Nvidia0.160.302.56−0.72
Amazon−0.34−0.39−0.41−0.05
Alphabet−0.420.56−0.21−1.00
Meta Platforms−0.120.710.910.78
Tesla0.71−1.240.23−0.87
JPMorgan Chase−0.260.050.930.42
S&P 500 ETF (SPY)−0.260.380.03−1.00
Nasdaq-100 ETF (QQQ)−0.100.400.72−0.79
AMD−0.20−0.430.130.73
Netflix−0.230.131.36−0.96
Berkshire Hathaway−0.01−0.46−0.20−1.07
Visa−0.710.24−0.10−0.03
Bank of America0.01−0.710.92−1.76
Walmart−0.45−0.181.07−0.63
Coca-Cola−0.390.070.12−0.10
Johnson & Johnson−0.57−0.30−0.110.35
ExxonMobil−0.08−0.14−1.250.30
Disney−0.19−0.24−0.45−0.86
Dow Jones ETF (DIA)−0.400.07−0.01−0.63
Russell 2000 ETF (IWM)−0.26−0.380.02−0.76
Reliance Industries0.05−0.13−0.37−0.43
Tata Consultancy Services−0.08−0.42−0.110.04
HDFC Bank−0.48−0.23−0.72−0.79
Infosys0.50−0.980.59−0.41
ICICI Bank−0.370.810.201.16
State Bank of India0.20−0.28−0.740.17
ITC−0.11−0.560.43−0.80
Bharti Airtel0.26−0.181.23−1.36
Larsen & Toubro0.18−0.30−0.340.43
Hindustan Unilever−0.11−0.590.13−0.39
Bajaj Finance0.31−0.18−0.07−0.33
Asian Paints0.18−0.590.88−0.40
Maruti Suzuki−0.37−0.38−0.08−0.01
Wipro0.68−1.270.14−0.90
Nifty 500.07−0.711.080.00
Nifty Bank0.14−0.92−0.740.01
BSE Sensex0.04−0.530.64−1.01

Hypothetical results on past data, from a script in the repository that re-runs every figure. Not a recommendation to buy, sell or trade anything.