Systematic Market Research

Factor & Sector Rotation:
A Systematic Parameter Optimisation

A monthly ETF rotation strategy across two parallel sleeves, tested across 60 parameter combinations spanning momentum lookback periods, SPY drawdown filter methods, and sleeve allocation rules. All 60 results reported.

Brian LiewLSE, BSc Accounting and Finance
July 2014 – March 2026Backtest Period
141 MonthsObservations
60 Combinations5 lookbacks × 6 filters × 2 splits
Compustat / WRDSData Source
April 2026Published
Code
Best Combo CAGR
9.5%
-2.93% vs SPY
Sharpe Ratio
0.813
-0.055 vs SPY
Max Drawdown
-17.0%
+6.95% vs SPY
% Months in Market
82%
Per-sleeve average

Two sleeves, one signal

This strategy allocates capital across two independent sleeves each month: a Factor sleeve and a Sector sleeve. At the end of each calendar month, the strategy scores every ETF in each sleeve by its N-month total return. The single top-ranked ETF in each sleeve receives the full sleeve allocation for the following month. This is pure momentum rotation, applied separately to two distinct groups of ETFs.

The Factor sleeve covers four style-factor ETFs: momentum, quality, value, and small-cap. These capture systematic risk premia that have been documented extensively in academic finance literature. The Sector sleeve covers nine SPDR sector ETFs spanning the full S&P 500 industry landscape, from technology to utilities. The two sleeves are designed to capture different dimensions of market leadership at any given point in the economic cycle.

Capital is split between the two sleeves either with a fixed 50/50 allocation (Split A) or dynamically based on the prior month's actual sleeve returns (Split B). Each sleeve's weight equals its prior-month return as a fraction of the total, floored at zero; if both sleeves had negative returns the prior month, the allocation reverts to 50/50. A third dimension tests six methods for filtering out adverse market regimes using SPY as a proxy for broad market health. Monthly filters (F1, F2) check the signal once at the start of the month and hold the position for the full month. Daily filters (F3, F4, F5) check the SPY signal at each day's close and exit or re-enter at the next day's open, allowing intra-month participation when the trend recovers.

The strategy makes no fundamental judgements and no macroeconomic forecasts. It follows momentum mechanically, checks one market regime signal, and rebalances once per month. Execution is assumed at month-end closing prices with no transaction costs or slippage.

Thirteen ETFs, two sleeves

All price and total return data is sourced from Compustat Security Daily (comp.secd) via WRDS. Returns are computed using the total return index, calculated as prccd × trfd (the Compustat total return factor), which adjusts closing prices for dividend reinvestment. This ensures returns reflect what an investor actually received, not just price appreciation.

TickerNameSleeveInceptionRationale
MTUMiShares MSCI USA Momentum FactorFactorNov 2013Pure large/mid-cap US momentum exposure
QUALiShares MSCI USA Quality FactorFactorJul 2013High ROE, low leverage, stable earnings growth
IWDiShares Russell 1000 ValueFactorMay 2000Broad value factor; longest live history in the sleeve
IWMiShares Russell 2000FactorMay 2000Small-cap risk premium; diversifies large-cap bias
XLKTechnology Select Sector SPDRSectorDec 1998Highest-returning sector in the post-GFC cycle
XLFFinancial Select Sector SPDRSectorDec 1998Rate-sensitive; rotates with the yield curve
XLEEnergy Select Sector SPDRSectorDec 1998Commodity cycle exposure; low correlation to tech
XLVHealth Care Select Sector SPDRSectorDec 1998Defensive growth; useful in drawdown regimes
XLIIndustrial Select Sector SPDRSectorDec 1998Cyclical; tracks manufacturing and capex cycles
XLYConsumer Discretionary SPDRSectorDec 1998Consumer cycle bellwether; high beta
XLPConsumer Staples SPDRSectorDec 1998Defensive; flight-to-safety rotation target
XLUUtilities Select Sector SPDRSectorDec 1998Rate-sensitive defensive; strong in risk-off
XLBMaterials Select Sector SPDRSectorDec 1998Commodities proxy; inflation-cycle exposure

The common backtest start date of July 2014 is determined by the latest inception among all 13 ETFs (QUAL, July 2013), plus a 12-month lookback buffer for momentum scoring. SPY is used solely as a drawdown filter signal and benchmark; it is not part of the rotatable universe.

Three variables, sixty combinations

The parameter space spans three independent dimensions. Every combination is evaluated over the identical date range using the same data, so Sharpe ratios and drawdown statistics are directly comparable across the full grid.

Lookback Period (5)
1m3m 6m9m12m
Drawdown Filter (6)
F0: NoneF1: 12m ret F2: 10m SMAF3: 200d SMA F4: 21d/210d SMAF5: Death cross
Sleeve Split (2)
A: 50/50 Fixed B: Momentum-weighted

Momentum Scoring

At each month-end, every ETF in a sleeve is ranked by its N-month total return. The ETF with the highest score receives the full sleeve allocation for the following month. There is no blending or smoothing across lookback periods. For the total return calculation, the Compustat trfd factor is used throughout.

Drawdown Filters & Sleeve Splits

IDFilter Rule (go to cash if…)Series used
F0No filter — always investedBaseline
F1SPY 12-month total return < 0Monthly
F2SPY month-end close < 10-month SMAMonthly
F3SPY daily close < 200-day SMA at month-endDaily
F4SPY 21-day SMA < 210-day SMADaily
F5SPY 50-day SMA < 200-day SMA (death cross)Daily

Monthly filters (F1, F2) are checked once at the start of each month using prior month-end data. If triggered, both sleeves earn 0% for the entire month. Daily filters (F3, F4, F5) are evaluated at each day's close; if triggered, both sleeves exit at that day's close and re-enter when the signal reverses, capturing partial-month returns. No cash interest is applied to idle days in either case. Split A allocates 50/50 between sleeves each month. Split B weights each sleeve proportionally to its prior month's actual return, floored at zero; falls back to 50/50 if both were zero or negative.

Look-ahead bias check: All signals are computed using data available through the last trading day of the prior month. The selected ETF's return is the return earned in the following month. No future data enters any signal or selection rule.

Top 10 combinations, ranked by Sharpe

Top 10 of 60 combinations sorted by Sharpe ratio. Top-3 rows highlighted. Click any column header to re-sort.

RankLookbackFilterSplit CAGRSharpeCalmarMax DD Win Rate% In Mkt
11mF3 Price < 200d SMAA9.45%0.8130.56-16.98%53.2%82.2%
21mF0 No filterB11.66%0.8090.55-21.40%62.4%100.0%
31mF3 Price < 200d SMAB9.37%0.8040.52-17.98%56.7%82.2%
41mF4 1m SMA < 10m SMAA9.27%0.7790.42-22.23%53.2%82.7%
51mF0 No filterA11.25%0.7710.42-26.69%61.7%100.0%
61mF4 1m SMA < 10m SMAB8.93%0.7640.39-23.11%53.9%82.7%
71mF1 12m return < 0B9.40%0.7380.44-21.40%55.3%87.9%
81mF1 12m return < 0A9.33%0.7330.45-20.50%53.9%87.9%
96mF0 No filterB10.93%0.6890.62-17.74%63.8%100.0%
103mF0 No filterA10.37%0.6840.55-18.98%62.4%100.0%

Sharpe Heatmaps

The three heatmaps show how Sharpe ratio varies across the (lookback, filter) grid for each split method, plus the cell-wise best across both. Warmer green indicates higher risk-adjusted returns. A robust strategy shows a broad green region, not a single outlier cell.

Split A (50/50 Fixed) — Sharpe Ratio by Lookback × Filter
1m3m6m9m12m
F0 No filter0.7710.6840.5850.5960.657
F1 12m return < 00.7330.6120.4910.4850.534
F2 Price < 10m SMA0.6440.5390.2580.2780.331
F3 Price < 200d SMA0.8130.6660.4010.3900.501
F4 1m SMA < 10m SMA0.7790.6350.3760.3590.443
F5 Death cross (50d<200d)0.6040.5210.2660.2720.362
Split B (Momentum-Weighted) — Sharpe Ratio by Lookback × Filter
1m3m6m9m12m
F0 No filter0.8090.5850.6890.6430.615
F1 12m return < 00.7380.5430.6680.5320.523
F2 Price < 10m SMA0.6030.4110.3530.3080.278
F3 Price < 200d SMA0.8040.5730.5240.4540.466
F4 1m SMA < 10m SMA0.7640.4930.5000.4020.423
F5 Death cross (50d<200d)0.5640.3830.3620.3350.347
Combined Best — Highest Sharpe Across Both Splits per Cell
1m3m6m9m12m
F0 No filter0.8090.6840.6890.6430.657
F1 12m return < 00.7380.6120.6680.5320.534
F2 Price < 10m SMA0.6440.5390.3530.3080.331
F3 Price < 200d SMA0.8130.6660.5240.4540.501
F4 1m SMA < 10m SMA0.7790.6350.5000.4020.443
F5 Death cross (50d<200d)0.6040.5210.3620.3350.362
Top combination: A 1-month lookback with price < 200d sma (Filter 3) and Split A produces the highest Sharpe of 0.813, versus 0.868 for SPY over the same period.
Data mining caveat: With 60 combinations tested on a single historical period, some results are good by chance. Focus on the heatmap pattern rather than the single top row. A robust edge should appear as a broad green region across multiple neighbouring cells, not an isolated peak.

L1, Filter 3, Split A

The highest-Sharpe combination uses a 1-month lookback, price < 200d sma as the drawdown filter, and 50/50 fixed sleeve allocation.

CAGR
9.45%
SPY: 12.38%
Sharpe Ratio
0.813
SPY: 0.868
Max Drawdown
-16.98%
SPY: -23.93%
Calmar Ratio
0.56
CAGR / Max Drawdown
Win Rate
53.2%
Months with positive return
Total Return
189.0%
SPY: 294.2%

Equity Curve vs Benchmarks (Log Scale, Rebased to 100)

Cumulative Growth of $100 — Top 3 Combos vs SPY vs Equal-Weight B&H

Annual Returns vs SPY

Calendar Year Returns — Best Combo vs SPY

Monthly Return Heatmap

Monthly Returns (%) — Best Combination
JanFebMarAprMayJunJulAugSepOctNovDec
20140.0%+3.8%-3.9%+1.5%+0.6%-0.9%
2015-0.5%-0.5%-1.0%-1.8%-2.0%-0.4%+1.9%+0.1%0.0%-1.2%-0.7%-7.5%
20160.0%0.0%+1.8%+5.4%+0.3%-0.8%+1.0%+1.5%-0.9%-3.7%+9.8%+3.3%
2017+0.8%+2.2%-0.3%+2.3%+2.9%-1.2%+1.3%+2.2%+0.0%-0.1%+2.1%+1.7%
2018+3.7%-2.5%-3.6%+1.5%+4.6%+0.2%+2.8%+0.8%+0.5%-7.4%-0.0%-2.3%
20190.0%+2.1%+1.3%+5.1%-6.9%+3.4%+0.6%-0.6%+1.6%+2.0%+4.5%+3.6%
2020-5.8%-6.6%-4.7%0.0%-1.0%+5.2%+6.4%+3.4%-4.6%-1.0%+9.5%+6.6%
2021+1.5%+14.3%+2.2%+4.1%+1.9%+1.5%+3.6%+2.6%-2.6%+7.3%-1.2%+3.4%
2022-2.6%+3.0%+1.8%-1.2%0.0%0.0%0.0%-1.4%0.0%0.0%0.0%-2.0%
2023-2.1%-1.9%-0.7%+0.8%-5.5%+6.2%+4.2%-1.7%-1.2%-3.6%+5.7%+4.5%
2024-2.4%+7.0%+1.4%-2.6%+6.1%-1.2%-2.6%+1.6%+1.1%-1.0%+8.7%-3.6%
2025+3.2%+0.5%-2.0%0.0%+2.6%+6.9%+2.7%+2.8%+2.5%+2.9%-1.9%-0.4%
2026+1.0%+5.1%-6.2%

Regime Analysis

Performance across distinct SPY trend regimes over the backtest period.

RegimePeriodStrategySPYRelative
Volatile bull / oil shock2014-01 to 2016-02-12.2%+2.0%Underperform
Bull market2016-03 to 2018-09+47.0%+58.4%Underperform
Q4 2018 selloff2018-10 to 2019-01-9.6%-6.6%Underperform
Late-cycle rally2019-02 to 2020-01+10.4%+21.4%Underperform
COVID crash2020-02 to 2020-03-11.0%-19.4%Outperform
Post-COVID recovery2020-04 to 2021-12+83.0%+89.1%Underperform
2022 rate shock bear2022-01 to 2022-10-0.5%-17.7%Outperform
Rate normalisation rally2022-11 to 2024-12+14.4%+56.8%Underperform

Strategy vs benchmarks

All three series evaluated over the identical period: July 2014 to March 2026. Equal-weight buy-and-hold is rebalanced monthly across all 13 ETFs in the universe.

StrategyTotal RetCAGRSharpe CalmarMax DDWin RateBest YrWorst Yr
Best Combo (L1, F3, A)189.0%9.45%0.8130.56-16.98%53.2%44.8%-13.0%
SPY Buy-and-Hold294.2%12.38%0.8680.52-23.93%68.1%31.2%-18.2%
Equal-Weight B&H176.0%9.03%0.6300.39-23.39%66.7%27.9%-8.9%

What this study does not show

1. Data mining and overfitting. Sixty combinations were evaluated on a single historical period and the best selected. With a large enough parameter space, some combinations will appear strong by chance. The top combination should be treated as a hypothesis requiring out-of-sample validation, not a proven edge.
2. Short history for factor ETFs. MTUM and QUAL launched in 2013, giving this backtest roughly 11 years of live data. This covers one full market cycle but is too short to draw strong statistical conclusions about the reliability of any specific parameter combination.
3. Execution timing. ETF selection signals and monthly filters (F1, F2) are known only after the last trading day of the month; in practice, execution occurs the following morning, introducing a small timing gap. Daily filters (F3, F4, F5) assume exit and re-entry at the close of the signal day, which is achievable with a market-on-close order but adds intra-day execution risk. Both effects would modestly reduce realised returns relative to those reported.
4. No transaction costs or slippage. Each sleeve rotates at most once per month. At typical ETF bid-ask spreads (<0.05%), round-trip costs are small but non-zero. Cumulative costs over 141 months could reduce CAGR by roughly 10–30 basis points annually.
5. Single-ETF concentration per sleeve. Each sleeve holds exactly one ETF at a time. A sector-specific shock in the selected ETF hits the full sleeve allocation. There is no intra-sleeve diversification by design.
6. No cash interest. Days or months spent in cash earn exactly 0%. Monthly filters (F1, F2) can leave capital idle for a full month; daily filters (F3, F4, F5) may hold cash for stretches within a month. In practice, uninvested cash earns the short-term rate, which was material from 2022 onwards. The conservative 0% treatment is consistent with other studies published on this site.

What the data suggests

Across 60 parameter combinations, momentum-based ETF rotation produces Sharpe ratios ranging from 0.26 to 0.81 over the 2014–2026 period. The top combinations approach but do not exceed SPY's Sharpe ratio of 0.868. Short lookback periods (1 month) dominate the top of the ranking; longer windows of 6 months or more produce markedly weaker results over this period. The inclusion of daily drawdown filters (F3, F4) meaningfully reduces maximum drawdown, particularly during the 2022 bear market, while preserving most of the upside through intra-month re-entry. The difference between Split A and Split B is modest, suggesting that the rotation signal itself matters more than the weighting rule between sleeves.

This strategy is suited to an investor who wants systematic, rules-based exposure to relative equity strength without individual stock selection. It requires monthly attention and tolerance for periods of full cash when filters trigger. The results presented here should not be extrapolated without accounting for the data mining, short live-history, and execution-timing caveats described above. Walk-forward or out-of-sample testing on data after 2024 would be the appropriate next step before any live implementation.