Every one of our momentum strategies stands aside when its index falls below a moving average — MA250 in the US, MA200 in Germany, MA75 in Canada. Those windows were chosen years ago and never revisited. This is what happened when we tried to beat them: roughly 130 rules across the three markets, including everything in the literature we could implement. Two markets had nothing better. One had a single candidate that survived. And the most useful result has nothing to do with which rule wins.
| Family | Detail |
|---|---|
| Moving-average windows | 50 to 350 days, each market |
| Hysteresis bands | ±2%, ±3%, ±5% around the average |
| Crossovers | MA20/MA100, MA50/MA200, MA100/MA250 |
| Index momentum | 6- and 12-month index return above zero |
| Cross-market gates | the S&P 500 as the gate for the DAX |
| The strategy’s own curve | its equity above its own 4- to 18-month average |
| Asymmetric rules | one signal to enter, a different one to exit |
| Convergence / divergence | the four states of index-signal × self-signal |
| Volatility gates | index vol, strategy vol, downside vol, 3m/12m ratio, vol-of-vol, rising vol — at three thresholds each |
| Barroso & Santa-Clara (2015) | scale exposure to a constant strategy volatility |
| Daniel & Moskowitz (2016) | weight by μ/σ², and their bear-market-plus-high-vol crash state |
Each was scored on the full history and on an out-of-sample window that drops the first five years, then put through a walk-forward.
Sharpe against the moving-average window, one panel per market. In all three the live setting sits on a broad shelf rather than a spike, and the curve falls away on both sides — MA50 and MA350 are materially worse everywhere. Germany’s best single window is MA150 at a Sharpe of 0.80 against MA200’s 0.72, but the standard error of a Sharpe estimated from 26 years is 0.08, so that is one standard error, found after trying eleven windows.
| Market | Rule | CAGR | Sharpe | MaxDD | CAGR | Sharpe | MaxDD |
|---|---|---|---|---|---|---|---|
| USA | S&P 500 MA250 | +27.1% | 0.88 | -37.6% | +29.0% | 1.00 | -31.3% |
| strategy’s own 9m MA | +19.4% | 0.58 | -66.6% | +25.9% | 0.85 | -39.4% | |
| both signals agree | +22.1% | 0.73 | -42.8% | +26.3% | 0.92 | -29.0% | |
| constant vol, cap 1.0× | +21.8% | 0.86 | -37.6% | +22.4% | 1.03 | -22.2% | |
| constant vol, cap 1.5× | +26.0% | 0.95 | -37.6% | +26.8% | 1.09 | -25.8% | |
| no filter at all | +22.5% | 0.61 | -68.3% | +27.8% | 0.82 | -68.3% | |
| Germany | DAX MA200 | +19.7% | 0.74 | -38.2% | +19.4% | 0.76 | -38.2% |
| strategy’s own 9m MA | +23.9% | 0.90 | -42.0% | +20.8% | 0.83 | -42.0% | |
| both signals agree | +18.8% | 0.75 | -29.0% | +18.2% | 0.78 | -29.0% | |
| constant vol, cap 1.0× | +18.8% | 0.74 | -31.0% | +18.4% | 0.76 | -31.0% | |
| constant vol, cap 1.5× | +22.9% | 0.77 | -42.7% | +23.2% | 0.78 | -42.7% | |
| no filter at all | +19.6% | 0.60 | -63.4% | +19.1% | 0.63 | -56.1% | |
| Canada | TSX MA75 | +34.7% | 1.23 | -25.7% | +31.9% | 1.12 | -25.7% |
| strategy’s own 9m MA | +37.5% | 0.67 | -51.4% | +36.5% | 0.60 | -51.4% | |
| both signals agree | +30.7% | 1.11 | -30.5% | +27.9% | 1.01 | -30.5% | |
| constant vol, cap 1.0× | +30.3% | 1.21 | -22.9% | +27.1% | 1.09 | -22.9% | |
| constant vol, cap 1.5× | +35.7% | 1.26 | -30.7% | +32.4% | 1.15 | -30.7% | |
| no filter at all | +44.0% | 0.77 | -57.3% | +43.0% | 0.70 | -57.3% |
The first three numeric columns are the full history; the last three drop the first five years. Highlighted rows are the filters currently running.
Re-optimising the rule every January on the previous sixty months, then holding it for twelve, repeated across the sample. In all three markets the optimiser loses to simply leaving the filter alone: 0.91 against 0.94 in the US, 0.46 against 0.86 in Germany, 1.22 against 1.18 in Canada.
This is the same finding that has now appeared four separate times in our work: on portfolio weights across the three sleeves, on an S&P put-writing study, on the Germany portfolio size, and here. The rule that adapts arrives after the thing it was chasing has stopped working. It is a more reliable result than anything about which moving average is best, because it reproduces.
Gating on the strategy’s own equity curve looked promising: it is the only family that catches Germany’s 2023 and 2026, where the momentum cohort unwound while the index rose — a case a 200-day average cannot see by construction. The first implementation returned −1.5% a year with a Sharpe of −25.8, identical for every window, which is not a result but a symptom. When the filter switches off the book earns nothing and pays costs, so the curve declines; a declining curve is always below its own average; it never switches back on. The fix is to gate on the unfiltered curve — what the book would have done fully invested — which asks “is the strategy working” rather than “has my account been going up”.
Constant-volatility scaling needs a target. Ours was the median of the strategy’s own volatility — over the whole sample. That is look-ahead, and it was worth a great deal:
| Sharpe | MaxDD | Sharpe | MaxDD | |
|---|---|---|---|---|
| US, cap 1.0× | 0.95 | −24.1% | 0.86 | −37.6% |
| US, cap 1.5× | 1.03 | −27.7% | 0.95 | −37.6% |
The first pair uses the full-sample median, the second an expanding median of past data only. The look-ahead inflated Sharpe by 0.08 and invented the entire 13-point drawdown improvement. We had already reported the first version before catching it.
Scaling exposure by the inverse of the strategy’s own six-month volatility, with an honest target, is the only rule out of roughly 130 that improves the US sleeve on both return and risk out of sample: Sharpe 1.09 against 1.00, drawdown -25.8% against -31.3%, winning 29.0 of 44 rolling five-year windows.
It does not work in the other two. Canada’s apparent gain disappears at cap 1.0× (Sharpe 1.21 against 1.23) — what looked like risk management was leverage. Germany wins 23.0 of 44 windows, a coin toss.
The lower panel shows what the rule would have done. It is at full exposure or above in 57% of months and below half in 10%. It cut to 56% through Lehman. It also held 36% to 55% exposure through most of the run that produced this year’s +221%, including 45% in a month the strategy returned +58.9%. The Sharpe improves because volatility falls further than return does. This is not a rule that earns more; it is a rule that swings less, and it is honest about the trade.
Nothing.
Two of three markets had no rule that beat the filter already running, on either window. The third had one, by 0.09 of Sharpe, found after roughly 130 attempts on a single 26-year history — which is about what one would expect to find by chance at that number of trials. Adopting it would mean rebalancing exposure every month, at a transaction cost the backtest charges and a margin cost it does not.
There were two alternatives worth naming, both of which buy lower drawdown by giving up return, and neither of which we took. Requiring both signals to agree cuts the drawdown in the US and Germany and makes it worse in Canada. Constant-vol scaling at cap 1.0× — reduce only, never lever — cuts it in all three, at a cost of 4 to 6 points of CAGR.
The case for changing nothing is not that the current filters are optimal. It is that we cannot demonstrate anything is better, and the one piece of evidence that reproduced across every market and every test we ran is that the rule which adapts does worse than the rule which does not.