← Sector Rotation Screen home
⚠ Strategy did NOT beat SPY net of 1 bps trading cost in the backtest since May 2011. Cumulative: strategy +471.04% vs SPY +626.21%.
Mid-cycle
INDPRO YoY +1.7% between 0.0% and 4.0% with curve +0.35: steady expansion.
Sector Scores & Signals
| ETF |
Name |
Last |
% From 52W High |
Seasonality |
n yrs |
Cycle Fit |
Rel Strength |
RS 3m |
Composite |
Signal |
| XLC |
Communications |
$111.68 |
-6.46% |
82.0 ⚠ |
9 |
100.0 |
47.3 |
-13.76% |
77.1 |
Buy |
| XLK |
Technology |
$179.99 |
-9.08% |
82.4 |
21 |
100.0 |
46.9 |
17.80% |
77.0 |
Buy |
| XLRE |
Real Estate |
$45.02 |
-0.49% |
90.1 |
11 |
50.0 |
67.5 |
-5.20% |
66.1 |
Buy |
| XLI |
Industrials |
$181.89 |
-1.98% |
81.2 |
21 |
50.0 |
72.1 |
-3.18% |
65.6 |
Buy |
| XLF |
Financials |
$56.18 |
0.00% |
82.4 |
21 |
50.0 |
67.6 |
-0.92% |
64.2 |
Hold |
| XLY |
Consumer Discretionary |
$117.66 |
-5.13% |
82.5 |
21 |
50.0 |
54.0 |
-5.83% |
59.5 |
Hold |
| XLV |
Healthcare |
$164.21 |
0.00% |
81.6 |
21 |
35.0 |
69.3 |
-1.20% |
58.7 |
Hold |
| XLB |
Materials |
$51.47 |
-3.21% |
70.8 |
21 |
50.0 |
59.2 |
-11.06% |
58.4 |
Hold |
| XLP |
Consumer Staples |
$84.63 |
-4.79% |
78.6 |
21 |
35.0 |
63.5 |
-10.85% |
55.9 |
Hold |
| XLU |
Utilities |
$45.83 |
-2.68% |
77.5 |
21 |
35.0 |
60.5 |
-14.04% |
54.6 |
Hold |
| XLE |
Energy |
$54.09 |
-12.92% |
63.3 |
21 |
50.0 |
39.3 |
-22.66% |
49.6 |
Hold |
Click any column header to sort. ⚠ flags sectors with under 10 years of history. Composite weights and signal thresholds tunable in config.py.
Backtest since May 2011
Strategy cum return
+471.04%
SPY: +626.21%
Strategy CAGR
+12.25%
SPY: +14.05%
Strategy Sharpe
0.81
SPY: 0.98
Max drawdown
-24.13%
SPY: -22.93%
Equity curves start at 1.00. Trading cost 1 bps applied to turnover at each rebalance. Cash held when no sectors clear MIN_SCORE_TO_HOLD=50.
Seasonality Heatmap (avg monthly return by sector)
| Sector |
Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
| XLK |
+0.1% |
+0.7% |
+1.5% |
+2.8% |
+3.3% |
+0.9% |
+2.8% |
+1.0% |
-0.2% |
+1.8% |
+2.0% |
+0.8% |
| XLF |
-0.2% |
-0.5% |
+0.2% |
+2.6% |
+0.1% |
-1.0% |
+2.8% |
+0.3% |
-0.6% |
+1.1% |
+2.3% |
+1.0% |
| XLE |
+1.3% |
+1.6% |
+1.3% |
+3.4% |
-0.2% |
-0.1% |
+0.7% |
-1.5% |
-0.8% |
+1.6% |
+2.3% |
-0.1% |
| XLV |
+0.9% |
-0.2% |
+0.8% |
+1.0% |
+0.7% |
+1.2% |
+2.3% |
+0.6% |
-0.3% |
+0.6% |
+2.7% |
+0.9% |
| XLI |
+0.5% |
+1.0% |
+0.8% |
+2.2% |
+0.5% |
-0.1% |
+2.2% |
-0.0% |
-0.0% |
+0.9% |
+3.5% |
+0.6% |
| XLY |
+0.8% |
-0.0% |
+0.8% |
+3.1% |
+0.3% |
+0.1% |
+2.8% |
+0.7% |
+0.4% |
+0.5% |
+2.7% |
+0.5% |
| XLP |
-0.2% |
+0.6% |
+1.6% |
+1.5% |
+0.0% |
+0.0% |
+2.1% |
+0.5% |
-0.3% |
+0.8% |
+2.2% |
+0.7% |
| XLU |
+0.2% |
-0.7% |
+2.6% |
+2.0% |
+0.3% |
+0.0% |
+2.2% |
+0.2% |
-0.5% |
+1.7% |
+0.9% |
+0.7% |
| XLB |
-0.0% |
+1.5% |
+1.3% |
+2.6% |
+0.4% |
-0.7% |
+2.1% |
-0.1% |
-1.4% |
+0.8% |
+2.9% |
+0.6% |
| XLRE |
+0.5% |
-0.3% |
+0.9% |
+1.0% |
+0.4% |
+1.8% |
+3.2% |
+0.7% |
-2.9% |
-0.9% |
+3.1% |
+0.5% |
| XLC |
+4.2% |
-0.9% |
-0.8% |
+2.0% |
+2.6% |
+0.8% |
+2.6% |
+1.5% |
-2.0% |
-0.7% |
+3.5% |
-0.0% |
Green > 0%, red < 0%. Cells require ≥5 years of history for that month.
3-Month Relative Strength vs SPY
Drill-Down: XLC (Communications)
BUY
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| NERD |
Gaming & Esports |
61.2 |
Hold |
67 |
+5.8% |
+3.6% |
0.7x |
Extended |
| SOCL |
Social Media |
37.3 |
Avoid |
56 |
+3.0% |
+1.0% |
0.5x |
Reasonable |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Top Holdings in NERD
(Gaming & Esports)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| TTWO |
Take-Two Interactive |
7.4% |
91.5 |
Buy |
73 |
+9.9% |
+12.9% |
0.7x |
Extended |
| CCOEY |
Capcom |
3.4% |
66.4 |
Buy |
65 |
+12.0% |
+5.3% |
0.7x |
Extended |
| RBLX |
Roblox |
8.3% |
61.2 |
Hold |
64 |
+16.2% |
+19.8% |
0.7x |
Extended |
| NTES |
NetEase |
10.8% |
56.1 |
Hold |
63 |
+5.9% |
+9.5% |
0.9x |
Extended |
| NCBDY |
Bandai Namco |
4.0% |
53.6 |
Hold |
69 |
+8.6% |
+8.1% |
0.7x |
Extended |
| NEXOY |
Nexon |
4.5% |
50.8 |
Hold |
58 |
+7.2% |
-0.3% |
1.1x |
Extended |
| EA |
Electronic Arts |
7.7% |
41.7 |
Hold |
69 |
+0.8% |
+1.5% |
0.9x |
Reasonable |
| U |
Unity Software |
4.3% |
33.7 |
Avoid |
60 |
+7.8% |
+8.9% |
0.9x |
Extended |
| NTDOY |
Nintendo |
10.8% |
22.6 |
Avoid |
51 |
+1.5% |
-1.9% |
1.0x |
Reasonable |
| KONMY |
Konami |
4.4% |
7.2 |
Avoid |
9 |
-8.6% |
-11.1% |
1.6x |
Oversold |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Drill-Down: XLK (Technology)
BUY
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| CIBR |
Cybersecurity |
67.3 |
Buy |
72 |
+8.1% |
+14.5% |
1.0x |
Extended |
| SMH |
Semiconductors |
59.6 |
Hold |
45 |
-6.1% |
-0.4% |
1.0x |
Oversold |
| SKYY |
Cloud Computing |
57.3 |
Hold |
62 |
+5.4% |
+6.6% |
0.8x |
Extended |
| FDN |
Internet |
56.8 |
Hold |
58 |
+3.3% |
+2.1% |
0.8x |
Reasonable |
| IGV |
Software |
55.1 |
Hold |
60 |
+5.4% |
+4.5% |
1.1x |
Extended |
| BOTZ |
AI & Robotics |
45.4 |
Hold |
44 |
-1.7% |
-5.1% |
0.9x |
Good entry |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Top Holdings in CIBR
(Cybersecurity)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| TENB |
Tenable |
2.0% |
99.5 |
Buy |
86 |
+36.5% |
+57.7% |
1.4x |
Extended |
| PANW |
Palo Alto Networks |
7.0% |
66.6 |
Buy |
74 |
+15.6% |
+34.7% |
1.0x |
Extended |
| NET |
Cloudflare |
3.0% |
61.9 |
Hold |
69 |
+15.5% |
+19.4% |
0.8x |
Extended |
| OKTA |
Okta |
3.0% |
60.1 |
Hold |
80 |
+21.8% |
+45.2% |
0.8x |
Extended |
| CRWD |
CrowdStrike |
6.5% |
57.9 |
Hold |
74 |
+12.7% |
+25.5% |
0.9x |
Extended |
| ZS |
Zscaler |
5.0% |
57.0 |
Hold |
64 |
+16.2% |
+8.4% |
0.7x |
Extended |
| FTNT |
Fortinet |
5.5% |
56.7 |
Hold |
71 |
+8.4% |
+24.5% |
0.7x |
Extended |
| CSCO |
Cisco Systems |
4.5% |
34.5 |
Avoid |
44 |
-4.7% |
+0.8% |
0.9x |
Good entry |
| GEN |
Gen Digital |
3.5% |
23.5 |
Avoid |
67 |
+9.2% |
+14.3% |
0.8x |
Extended |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Drill-Down: XLRE (Real Estate)
BUY
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| VNQ |
REITs Broad |
72.7 |
Buy |
60 |
+1.9% |
+3.1% |
1.2x |
Reasonable |
| ITB |
Homebuilders |
72.4 |
Buy |
54 |
+1.0% |
+5.5% |
0.6x |
Reasonable |
| MORT |
Mortgage REITs |
61.2 |
Hold |
58 |
+1.8% |
+1.3% |
1.7x |
Reasonable |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Top Holdings in VNQ
(REITs Broad)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| WELL |
Welltower |
7.7% |
93.5 |
Buy |
70 |
+8.6% |
+10.6% |
0.9x |
Extended |
| SPG |
Simon Property |
3.5% |
92.7 |
Buy |
69 |
+4.6% |
+9.9% |
0.7x |
Reasonable |
| PSA |
Public Storage |
2.8% |
83.9 |
Buy |
62 |
+2.5% |
+6.6% |
0.7x |
Reasonable |
| O |
Realty Income |
3.2% |
68.8 |
Buy |
62 |
+3.6% |
+3.8% |
0.9x |
Reasonable |
| EXR |
Extra Space Storage |
2.3% |
49.9 |
Hold |
55 |
+0.8% |
+3.4% |
0.6x |
Reasonable |
| PLD |
Prologis |
7.0% |
38.1 |
Avoid |
52 |
+0.0% |
+0.3% |
0.8x |
Reasonable |
| EQIX |
Equinix |
5.5% |
31.7 |
Avoid |
40 |
-3.7% |
-4.2% |
1.1x |
Good entry |
| DLR |
Digital Realty |
3.5% |
31.0 |
Avoid |
37 |
-5.2% |
-7.3% |
1.7x |
Oversold |
| AMT |
American Tower |
4.6% |
2.6 |
Avoid |
39 |
-6.5% |
-7.4% |
1.1x |
Oversold |
| CCI |
Crown Castle |
2.5% |
1.0 |
Avoid |
38 |
-7.3% |
-10.7% |
0.9x |
Oversold |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Drill-Down: XLI (Industrials)
BUY
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| JETS |
Airlines |
75.4 |
Buy |
66 |
+4.7% |
+14.3% |
0.6x |
Reasonable |
| ITA |
Aerospace & Defense |
56.3 |
Hold |
61 |
+3.2% |
+7.2% |
1.0x |
Reasonable |
| PAVE |
Infrastructure |
55.4 |
Hold |
45 |
-2.6% |
-0.8% |
0.9x |
Good entry |
| XAR |
Aerospace & Def (EW) |
39.7 |
Avoid |
52 |
+0.5% |
+3.2% |
0.9x |
Reasonable |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Drill-Down: XLF (Financials)
WATCH
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| KIE |
Insurance |
80.8 |
Buy |
78 |
+8.1% |
+11.9% |
1.0x |
Extended |
| KBE |
Banks |
77.9 |
Buy |
68 |
+3.4% |
+7.1% |
1.3x |
Reasonable |
| KRE |
Regional Banks |
77.7 |
Buy |
65 |
+3.2% |
+7.1% |
0.8x |
Reasonable |
| IYG |
Financial Services |
64.1 |
Hold |
73 |
+3.8% |
+6.6% |
1.1x |
Extended |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Top Holdings in KIE
(Insurance)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| LMND |
Lemonade |
2.9% |
83.9 |
Buy |
80 |
+30.5% |
+37.3% |
1.2x |
Extended |
| RYAN |
Ryan Specialty |
2.1% |
72.6 |
Buy |
69 |
+14.3% |
+22.9% |
0.8x |
Extended |
| CINF |
Cincinnati Financial |
2.0% |
71.9 |
Buy |
76 |
+8.0% |
+13.3% |
0.7x |
Extended |
| RNR |
RenaissanceRe |
2.0% |
71.0 |
Buy |
66 |
+5.9% |
+8.4% |
1.0x |
Extended |
| MCY |
Mercury General |
2.2% |
67.9 |
Buy |
70 |
+6.3% |
+10.2% |
0.9x |
Extended |
| AGO |
Assured Guaranty |
2.0% |
47.8 |
Hold |
73 |
+7.4% |
+8.0% |
0.7x |
Extended |
| L |
Loews Corp |
2.1% |
44.1 |
Hold |
74 |
+6.2% |
+8.4% |
0.7x |
Extended |
| ORI |
Old Republic Intl |
2.1% |
38.5 |
Avoid |
67 |
+5.2% |
+7.0% |
1.3x |
Extended |
| WTM |
White Mountains Ins |
2.1% |
32.2 |
Avoid |
65 |
+5.7% |
+3.3% |
0.8x |
Extended |
| BHF |
Brighthouse Finl |
2.5% |
29.0 |
Avoid |
73 |
+2.9% |
+4.1% |
0.9x |
Extended |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Drill-Down: XLY (Consumer Discretionary)
WATCH
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| XHB |
Homebuilders |
75.0 |
Buy |
51 |
-0.5% |
+4.1% |
0.8x |
Reasonable |
| PEJ |
Leisure & Entertain |
73.1 |
Buy |
61 |
+1.6% |
+6.3% |
1.4x |
Reasonable |
| IBUY |
Online Retail |
72.6 |
Buy |
62 |
+3.5% |
+5.5% |
0.2x |
Reasonable |
| XRT |
Retail |
71.0 |
Buy |
57 |
+0.9% |
+3.7% |
0.7x |
Reasonable |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Top Holdings in XHB
(Homebuilders)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| MAS |
Masco Corp |
3.3% |
96.8 |
Buy |
61 |
+3.9% |
+9.8% |
0.8x |
Reasonable |
| TOL |
Toll Brothers |
3.2% |
73.9 |
Buy |
52 |
-0.4% |
+6.3% |
0.8x |
Reasonable |
| PHM |
PulteGroup |
3.4% |
73.7 |
Buy |
56 |
+2.0% |
+7.4% |
0.7x |
Reasonable |
| DHI |
D.R. Horton |
3.5% |
70.8 |
Buy |
53 |
+0.4% |
+4.8% |
0.8x |
Reasonable |
| TT |
Trane Technologies |
3.7% |
68.8 |
Buy |
49 |
-0.6% |
+0.6% |
0.7x |
Good entry |
| CSL |
Carlisle Companies |
3.7% |
58.0 |
Hold |
47 |
-2.0% |
+0.1% |
1.2x |
Good entry |
| CARR |
Carrier Global |
3.8% |
54.4 |
Hold |
46 |
-3.7% |
+1.6% |
0.8x |
Good entry |
| IBP |
Installed Building |
3.6% |
52.5 |
Hold |
51 |
+3.0% |
-1.6% |
0.6x |
Reasonable |
| JCI |
Johnson Controls |
4.0% |
30.5 |
Avoid |
46 |
-2.7% |
-1.6% |
1.1x |
Good entry |
| LEN |
Lennar |
3.3% |
5.8 |
Avoid |
44 |
-3.4% |
-2.4% |
0.7x |
Good entry |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Drill-Down: XLV (Healthcare)
WATCH
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| XBI |
Biotech (Equal Wt) |
93.8 |
Buy |
79 |
+12.5% |
+19.0% |
0.8x |
Extended |
| IBB |
Biotech |
90.5 |
Buy |
81 |
+10.1% |
+14.3% |
1.1x |
Extended |
| XHE |
Health Equipment |
66.1 |
Buy |
66 |
+5.8% |
+8.7% |
0.9x |
Extended |
| IHI |
Medical Devices |
45.3 |
Hold |
62 |
+4.4% |
+4.7% |
1.3x |
Reasonable |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Drill-Down: XLB (Materials)
WATCH
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| SLX |
Steel |
48.3 |
Hold |
38 |
-4.8% |
-6.7% |
0.4x |
Good entry |
| LIT |
Lithium & Battery |
47.4 |
Hold |
35 |
-6.3% |
-11.0% |
0.5x |
Oversold |
| PICK |
Mining |
34.2 |
Avoid |
37 |
-6.1% |
-8.6% |
0.6x |
Oversold |
| GDX |
Gold Miners |
25.2 |
Avoid |
43 |
-2.8% |
-9.7% |
0.7x |
Good entry |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Top Holdings in SLX
(Steel)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| RS |
Reliance Steel |
3.5% |
76.2 |
Buy |
46 |
-3.7% |
-0.1% |
0.8x |
Good entry |
| GGB |
Gerdau SA |
3.8% |
63.1 |
Hold |
47 |
-1.5% |
-5.4% |
1.0x |
Good entry |
| NUE |
Nucor |
7.1% |
50.1 |
Hold |
42 |
-6.2% |
-4.2% |
0.8x |
Oversold |
| VALE |
Vale SA |
6.8% |
49.2 |
Hold |
38 |
-3.5% |
-7.7% |
0.8x |
Good entry |
| MT |
ArcelorMittal |
4.6% |
47.9 |
Hold |
51 |
-0.3% |
+0.6% |
1.0x |
Reasonable |
| STLD |
Steel Dynamics |
5.1% |
46.8 |
Hold |
40 |
-8.4% |
-6.1% |
0.9x |
Oversold |
| BHP |
BHP Group |
7.8% |
45.8 |
Hold |
41 |
-5.4% |
-5.2% |
0.8x |
Oversold |
| PKX |
POSCO Holdings |
5.4% |
39.8 |
Avoid |
33 |
-9.4% |
-25.2% |
0.8x |
Oversold |
| RIO |
Rio Tinto |
7.9% |
32.5 |
Avoid |
34 |
-7.1% |
-10.4% |
0.9x |
Oversold |
| TX |
Ternium |
4.0% |
28.4 |
Avoid |
39 |
-6.4% |
-5.9% |
1.2x |
Oversold |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).
Drill-Down: XLP (Consumer Staples)
WATCH
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| FXG |
Consumer Staples EW |
61.3 |
Hold |
59 |
+2.0% |
+3.0% |
1.0x |
Reasonable |
| PBJ |
Food & Beverage |
55.2 |
Hold |
54 |
+1.2% |
-0.2% |
3.2x |
Reasonable |
RSI(14): <30 oversold, >70 overbought. vs 20d/50d: distance from moving average. Vol: 5-day avg volume ÷ 20-day avg (>1 = rising interest).