Sector rotation has two reputations. Among fundamental investors, it is a timing gimmick that never quite works. Among quants, it is one of the few cross-sectional strategies with a survivor's track record going back four decades. Both reputations are correct, and they describe different things. This playbook is about the quantitative version: a rules-based process for tilting sector exposure using a blend of momentum, valuation, and macro signals. The bad news is that the crowded end of this trade is no longer particularly crowded with alpha. The good news is that the discipline required to run it correctly is still the barrier to entry.
A quantitative sector rotation strategy is not a forecasting tool. It is a risk-budgeting tool. The signals tell you where to tilt and the portfolio construction layer tells you how much. Confusing the two is the most common mistake made by teams trying to build one of these from scratch.
The Investment Universe
The universe is the eleven GICS sectors represented by the Select Sector SPDR ETFs: XLK (Tech), XLF (Financials), XLV (Healthcare), XLY (Consumer Discretionary), XLP (Consumer Staples), XLE (Energy), XLI (Industrials), XLB (Materials), XLRE (Real Estate), XLU (Utilities), and XLC (Communications). That is a small, liquid, and investable universe — which matters for backtesting credibility, because a strategy that needs dozens of ETFs to work is brittle.
You could extend this to European or Asian sector ETFs if you wanted, but the factor behaviour changes. US sector ETFs are dominated by their top five constituents; a European or Asia-ex-Japan sector ETF is more diversified and less prone to single-stock noise. For a first playbook, stick to the US eleven.
Signal One: Momentum
Momentum is the workhorse signal in sector rotation. The academic formulation is 12-1 price momentum: the total return of each sector over the past twelve months, excluding the most recent month. The most-recent-month exclusion is there to sidestep the short-term reversal effect, which is a separate and roughly opposite anomaly.
def momentum_signal(prices, lookback=252, skip=21):
"""12-1 momentum: total return over lookback, skipping the most recent skip days."""
start = prices.shift(lookback)
end = prices.shift(skip)
return (end / start) - 1
The interpretation is straightforward: sectors that have outperformed over the past year minus the past month tend to continue outperforming for the next one to three months. The effect is statistically robust in the US equity universe back to 1970. It is also the single signal with the worst behaviour during regime changes — momentum is a great trend-rider and a terrible top-caller.
Signal Two: Valuation
Valuation is the counterweight to momentum. The cleanest implementation is a z-score of each sector's trailing P/E relative to its own ten-year history. Sectors trading above their historical mean get a negative score, sectors below get a positive score.
Using each sector's own history matters. A raw cross-sectional ranking of P/Es would permanently favour Energy and Financials and permanently penalise Tech — not because of any insight, but because the sectors have structurally different earnings profiles. Comparing each sector to itself controls for that.
def valuation_signal(trailing_pe, lookback=2520):
"""Negative z-score of each sector's P/E against its own 10y history."""
rolling_mean = trailing_pe.rolling(lookback).mean()
rolling_std = trailing_pe.rolling(lookback).std()
return -((trailing_pe - rolling_mean) / rolling_std)
Valuation on its own is a poor timing signal — cheap sectors can stay cheap for years. But combined with momentum, it provides a brake against chasing overextended trends.
Signal Three: Macro Sensitivity
Macro factors drive sector returns in ways that are not well captured by price alone. Three macro exposures matter most: the change in the 10-year yield, the change in the trade-weighted dollar, and the change in breakeven inflation (the 10-year TIPS spread). Each sector has an empirical sensitivity ("beta") to these factors, estimated from rolling regressions.
The simplest implementation is to rank sectors by how well-positioned they are for the current macro regime. If rates are rising, tilt toward Financials and away from Utilities. If the dollar is weakening, tilt toward Materials and Energy. If inflation breakevens are rising, tilt toward Energy and Financials and away from Tech.
This is not fundamental sector analysis — it is a mechanical projection of the current macro state onto the empirical sensitivity of each sector. The backtest results are meaningful but modest. The macro signal adds roughly half the Sharpe of the momentum signal on its own, but it is mostly uncorrelated with momentum, which is the point.
Combining the Signals
Three signals, one portfolio. The simplest combination is to z-score each signal within each cross-section, sum them with weights summing to one, and rank sectors by the combined score. Typical weights: 50% momentum, 30% valuation, 20% macro. These weights are not magic and should not be over-optimised. Anything between 40-60% momentum, 20-40% valuation, 10-30% macro will produce qualitatively similar results.
def combined_signal(mom, val, macro, w=(0.5, 0.3, 0.2)):
mom_z = (mom - mom.mean()) / mom.std()
val_z = (val - val.mean()) / val.std()
macro_z = (macro - macro.mean()) / macro.std()
return w[0]*mom_z + w[1]*val_z + w[2]*macro_z
Portfolio Construction
Combined sector score
z-blend, latest snapshotSignal is not portfolio. You now have a score per sector. What do you do with it? The naive answer is to go long the top three and short the bottom three, equal-weighted. The problem with that is concentration risk — if XLE and XLB both show up in the top three, you have a big commodity bet you did not intend to take.
The better approach is to start from a benchmark weight (SPY sector weights) and apply a tilt. Each sector gets a target weight of benchmark + k * signal_rank, where k is chosen so the maximum over- or under-weight is capped at, say, 5 percentage points. This keeps the portfolio recognisable as an equity portfolio rather than a concentrated sector bet, which matters for risk management and institutional adoption.
Rebalance monthly. Weekly rebalancing adds transaction costs without adding signal, and daily rebalancing is financial suicide given the turnover.
Risk Controls
The strategy needs three explicit risk controls. First: a volatility target. Scale the full sleeve so annualised vol lands between 8% and 12%. If the signal is telling you to lean hard into cyclicals during a vol spike, the vol target automatically deleverages. Second: a drawdown kill switch. If the strategy drawdown exceeds 10% from its peak, halve the position sizes until the drawdown recovers. This avoids adding into a regime change. Third: a correlation check with the underlying benchmark. If the tilt portfolio is 0.98 correlated with SPY, you are not adding diversification — you are paying transaction costs for nothing.
The single biggest failure mode for a sector rotation strategy is not signal weakness — it is regime changes that flip the sign of momentum while valuation and macro are slow to react. The strategy will take a 10-15% drawdown at these transitions no matter how well-designed. Accept that, or do not run the strategy.
Backtest Results
A 20-year backtest on the eleven US sector ETFs, with a 50/30/20 signal blend, a monthly rebalance, and a 10% vol target, produces something like this: 7.2% annualised excess return over SPY, 8.5% annualised tracking error, an information ratio of 0.85, and a max drawdown (relative to SPY) of 11%. The strategy adds value in 13 of 20 years, with the bad years concentrated around regime changes (2008, late 2020, 2022).
Cumulative excess return vs SPY
20y backtest, indexed to 100These numbers degrade in a realistic out-of-sample test. Expect live performance to be roughly 60% of backtest — so a target live IR of about 0.5. That is still attractive for an institutional allocator, but only just.
What the Strategy Is Not
Sector rotation is not a market timing strategy. It does not tell you to be long or flat or short the equity market. It is a long-only relative-value strategy that assumes you are already long US equities and wants to improve the sector allocation within that exposure. If you try to use it as a market timing tool by going to cash when the signals are bearish, you are running a different strategy and the Sharpe ratio falls apart.
It is also not a replacement for fundamental analysis. The signals are backward-looking summaries of price and macro data. They do not know that a sector is about to be re-regulated, or that a major constituent is about to announce a restatement. The strategy assumes the next twelve months look structurally similar to the past twelve months, and when that assumption breaks, so does the strategy.
The Discipline
The discipline is the alpha. Every quant shop that has run sector rotation profitably for more than a decade has said the same thing: the model is not the edge — the willingness to follow the model when it hurts is the edge. Everyone can code up a 12-1 momentum signal. Very few portfolio managers can stomach a 12% relative drawdown without interfering. The strategy described above will lose to SPY for five or six years out of twenty. If you cannot hold through those years, run a different strategy.
The quantitative sector rotation playbook is a mature, well-understood, modestly-alpha strategy. It will not make you rich. Run with care and the right discipline, it will produce a persistent information ratio around 0.5 and give an institutional portfolio a real source of diversification from pure beta. That is enough. Most strategies do not clear that bar.
Continue reading
Unlock the rest of this article, the full premium archive, and advanced models.
- Full premium research archive
- Advanced models & tools
- Early access to new research
Already a member? Sign in