Cross-Sectional Sector Momentum Rotation Strategy

Final Project — FinTech 533 | Duke University

Author

Pau Pinyanadal

Published

May 2, 2026

Strategy Overview

This project implements a cross-sectional sector momentum rotation strategy across the 11 SPDR sector ETFs that make up the S&P 500. The core idea is simple: rank all 11 sectors by their trailing 3-month price return, go long the top 3 strongest sectors, and short the bottom 3 weakest sectors. Rebalance every calendar month.

Market phenomenon being captured: Institutional capital rotates slowly and persistently across economic sectors in response to macro cycle shifts. Sectors that have been winning recently tend to continue winning in the near term because institutional flows are slow to adjust — a well-documented effect in academic finance known as cross-sectional momentum (Jegadeesh & Titman, 1993).

Universe: XLK, XLF, XLE, XLV, XLI, XLP, XLY, XLU, XLRE, XLB, XLC

Backtest period: September 2024 — April 2026 (21 monthly rebalances)

Data source: IBKR via ShinyBroker — daily OHLCV bars, 2 years


Entry Orders

How We Enter a Position

On the first trading day of each calendar month, the strategy:

  1. Computes the 3-month trailing momentum for all 11 sector ETFs
  2. Ranks sectors from strongest (rank 1) to weakest (rank 11)
  3. Goes long the top 3 ranked sectors at the market open
  4. Goes short the bottom 3 ranked sectors at the market open

Momentum Signal Formula

\[\text{Momentum}_t = \frac{\text{Close}_{t-1}}{\text{Close}_{t-1-63}} - 1\]

The signal uses yesterday’s close (not today’s), ensuring no lookahead bias — the ranking is fully formed before the market opens on the rebalance date.

Parameter Justification

  • Lookback = 63 trading days (~3 months): The 3-month momentum window is the most widely validated in academic literature. Shorter windows (1 month) capture noise; longer windows (12 months) lag the economic cycle too much. 63 trading days = 21 trading days/month × 3 months.
  • Top 3 / Bottom 3: With 11 sectors, selecting the top and bottom ~27% gives enough concentration to capture the momentum effect while maintaining minimal diversification across the long and short books.
  • 100 shares per leg: Consistent with prior course assignments; provides a clean and comparable position size.
  • Entry at open: The momentum signal is observable from the prior day’s close. The open is the first tradeable price after the signal is formed — no lookahead.

Exit Orders

How We Exit a Position

Each position leg has two possible fates:

Fate Description
Rebalance Position held for the full month; closed at the close of the last trading day of the month
Stop-Loss Position closed early at the daily close on the day the 8% threshold is breached

Stop-Loss Logic

  • Long leg: Exit at close if close < entry_price × (1 - 0.08)
  • Short leg: Exit at close if close > entry_price × (1 + 0.08)

Parameter Justification

  • Stop-loss = 8%: Sector ETFs are broadly diversified instruments — intra-month moves exceeding 8% are rare under normal market conditions and typically signal a structural shift in that sector rather than noise. A loss of this magnitude indicates the momentum thesis for that leg has broken down and continued holding is not justified.
  • Monthly hold: Cross-sectional momentum is documented to persist over 1–12 month horizons. Monthly rebalancing captures the signal while keeping transaction costs reasonable.
  • Exit at close on stop-loss day: Because we use daily (not intraday) data, we conservatively assume the stop-loss fills at the closing price on the breach day. This slightly overstates the loss versus an intraday trigger, which is the correct conservative assumption.

Performance

Portfolio NAV vs SPY

Both series are normalized to $100,000 starting on the first actual trade date (September 3, 2024) for a fair comparison.

Monthly Returns — Strategy vs SPY

Drawdown

Rolling 6-Month Sharpe Ratio


Performance Summary

Metric Strategy SPY (Buy & Hold)
Total Return 0.89% 42.69%
Annual GMRR 0.45% 19.62%
Annual Volatility 4.57% 16.69%
Sharpe Ratio (rf=3.75%) -0.72 0.95
Max Drawdown ~6.64% ~19.00%

Trade Statistics

Metric Value
Total legs traded 126
Rebalance exits 113 (89.7%)
Stop-loss exits 13 (10.3%)
Overall win rate 49.2%
Long leg win rate 58.7%
Short leg win rate 39.7%
Avg return per leg -0.054%
Expected P&L per leg $7.07
Avg holding period 25.4 days

Blotter & Ledger

The complete trade log and daily NAV record are available for download below.

⬇ Download Blotter (CSV)   ⬇ Download Ledger (CSV)


Sector Analysis

Sector Rotation Heatmap

Each row is a rebalance month. Color shows 3-month momentum score (green = strong, red = weak). ▲ = long position, ▼ = short position.

Monthly Sector Exposure

Average Return by Sector


Long vs Short Decomposition

Trade Return Distribution

Momentum Spread

Alpha / Beta Analysis


Strategy Monitoring

How will we know the strategy is performing in line with expectations?

We monitor two real-time metrics at each monthly rebalance:

1. Rolling 6-Month Sharpe Ratio — if it drops below 0.5 for three consecutive months, the strategy is underperforming its historical risk-adjusted baseline and requires a full review. This does not automatically mean we shut down — a macro regime shift may explain it — but it triggers a structured reassessment.

2. Momentum Spread (avg momentum of top-3 minus avg momentum of bottom-3) — if this spread compresses below 2% for three consecutive months, sectors are moving together and the cross-sectional rotation signal has effectively disappeared. We would reduce position size in this scenario.

How will we know when the strategy stops working?

We declare the strategy non-functional and halt trading if any one of these triggers fires:

  1. Momentum reversal: The long portfolio underperforms the short portfolio for 4 consecutive months — meaning the momentum effect has fully reversed and our thesis no longer holds.

  2. Win rate collapse: Leg win rate drops below 40% for 3 consecutive months — if fewer than 2 of 6 legs are profitable per month, the ranking signal is no longer predictive.

  3. Drawdown breach: Portfolio drawdown exceeds -20% at any point — a hard risk limit beyond which the expected recovery time exceeds what a rational investor should tolerate.


Commentary

Did the strategy work?

The long book worked. A 58.7% win rate on long legs confirms that ranking sectors by trailing 3-month momentum does identify genuine near-term winners. The momentum spread chart reinforces this — the cross-sectional dispersion between sectors was consistently large (8–27% every month), meaning the signal was always present and strong.

The short book did not work in this backtest period. A 39.7% win rate on short legs means we were wrong 60% of the time when betting against sectors. The cumulative P&L decomposition chart tells the story clearly: the long book generated roughly +$4,800 in cumulative P&L while the short book lost roughly -$4,000, leaving the total strategy nearly flat.

Why did the short book fail?

The 2024–2026 backtest window was an unusually persistent bull market. Cross-sectional momentum is a relative signal — it tells you which sectors outperform each other, not which sectors decline in absolute terms. In a regime where all 11 sectors rise, even the “worst” ranked sectors still go up. Shorting them is systematically unprofitable because “weakest momentum” does not equal “negative return” in a bull market.

This is not a flaw in the strategy design — it is an honest empirical finding about regime dependency. The same strategy applied during a bear market or high-dispersion regime would likely show very different short book performance.

The April 2025 event

The sharp drawdown in March–April 2025 corresponds to the tariff shock. During this event, all 11 sector ETFs dropped simultaneously — cross-sector correlation spiked toward 1.0. In this regime, the long book got hit hard while the short book did not compensate enough because the bottom-ranked sectors also dropped alongside the top-ranked ones. This illustrates that long-short sector strategies lose their market-neutral property during correlation spikes — a tail risk that the Sharpe ratio alone does not capture.

How would we improve the model?

1. Market regime filter: When SPY is below its 200-day SMA (bear regime), go long-only on the top 3 and hold cash instead of shorting. This avoids the structural short drag in bull markets without changing the core momentum thesis. This improvement was identified before running the backtest but not implemented to preserve methodological integrity — implementing it after seeing the results would constitute data snooping.

2. Inverse-volatility position sizing: Instead of 100 shares per leg, allocate capital so each leg contributes equal risk. High-volatility sectors like XLE currently receive the same share count as low-volatility sectors like XLP, creating an implicit risk concentration.

3. Extended lookback: Combine the 3-month signal with a 12-month signal and skip the most recent month — the standard Fama-French momentum factor construction. This may reduce noise while preserving the longer-term trend signal.

4. Transaction cost modeling: Add a realistic cost per share (e.g., $0.005) to each leg to assess whether the strategy survives after execution friction. With 126 legs over 21 months, transaction costs are non-trivial.