← Sector Rotation Screen home
⚠ Strategy did NOT beat SPY net of 10 bps trading cost in the backtest since May 2011. Cumulative: strategy +247.30% vs SPY +626.21%.
Mid-cycle
INDPRO YoY +1.7% between 0.0% and 4.0% with curve +0.31: steady expansion.
Sector Scores & Signals
| ETF |
Name |
Last |
% From 52W High |
Seasonality |
n yrs |
Cycle Fit |
Rel Strength |
RS 3m |
Composite |
Signal |
| XLK |
Technology |
$180.59 |
-8.78% |
82.5 |
21 |
100.0 |
77.7 |
20.06% |
85.8 |
Buy |
| XLI |
Industrials |
$183.91 |
-0.71% |
81.5 |
21 |
50.0 |
67.0 |
-1.84% |
66.3 |
Buy |
| XLRE |
Real Estate |
$44.68 |
-1.24% |
89.8 |
11 |
50.0 |
52.9 |
-3.89% |
63.1 |
Hold |
| XLC |
Communications |
$109.60 |
-8.20% |
80.9 ⚠ |
9 |
100.0 |
13.8 |
-15.18% |
59.8 |
Hold |
| XLF |
Financials |
$55.62 |
-0.53% |
82.1 |
21 |
50.0 |
46.6 |
-1.06% |
58.3 |
Hold |
| XLV |
Healthcare |
$163.74 |
0.00% |
81.5 |
21 |
35.0 |
51.0 |
-2.63% |
55.4 |
Hold |
| XLB |
Materials |
$52.01 |
-2.21% |
71.1 |
21 |
50.0 |
47.0 |
-10.50% |
55.1 |
Hold |
| XLP |
Consumer Staples |
$84.99 |
-4.39% |
78.8 |
21 |
35.0 |
44.7 |
-8.90% |
52.0 |
Hold |
| XLY |
Consumer Discretionary |
$117.12 |
-5.57% |
80.5 |
21 |
50.0 |
25.5 |
-7.08% |
49.3 |
Hold |
| XLE |
Energy |
$53.22 |
-14.32% |
62.6 |
21 |
50.0 |
37.9 |
-23.06% |
48.9 |
Hold |
| XLU |
Utilities |
$45.76 |
-2.84% |
77.5 |
21 |
35.0 |
37.7 |
-14.08% |
48.8 |
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
+247.30%
SPY: +626.21%
Strategy CAGR
+8.60%
SPY: +14.05%
Strategy Sharpe
0.63
SPY: 0.98
Max drawdown
-29.12%
SPY: -22.93%
Equity curves start at 1.00. Trading cost 10 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.7% |
+0.3% |
-0.6% |
+1.1% |
+2.3% |
+1.0% |
| XLE |
+1.3% |
+1.6% |
+1.3% |
+3.4% |
-0.2% |
-0.1% |
+0.6% |
-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.3% |
-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.1% |
+0.7% |
-2.9% |
-0.9% |
+3.1% |
+0.5% |
| XLC |
+4.2% |
-0.9% |
-0.8% |
+2.0% |
+2.6% |
+0.8% |
+2.4% |
+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: XLK (Technology)
BUY
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| SMH |
Semiconductors |
82.9 |
Buy |
47 |
-4.4% |
+2.2% |
1.0x |
Good entry |
| CIBR |
Cybersecurity |
74.5 |
Buy |
67 |
+5.3% |
+12.4% |
1.1x |
Extended |
| IGV |
Software |
38.3 |
Avoid |
56 |
+2.8% |
+2.5% |
1.2x |
Reasonable |
| SKYY |
Cloud Computing |
37.9 |
Avoid |
53 |
+0.5% |
+2.6% |
0.6x |
Reasonable |
| FDN |
Internet |
37.3 |
Avoid |
51 |
+0.6% |
-0.3% |
0.9x |
Reasonable |
| BOTZ |
AI & Robotics |
32.0 |
Avoid |
47 |
-0.4% |
-3.4% |
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 SMH
(Semiconductors)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| INTC |
Intel |
3.5% |
98.9 |
Buy |
49 |
-2.3% |
+6.1% |
0.9x |
Good entry |
| LRCX |
Lam Research |
3.5% |
92.1 |
Buy |
48 |
-4.8% |
+9.5% |
1.2x |
Good entry |
| AMD |
AMD |
5.5% |
91.8 |
Buy |
52 |
+0.2% |
+12.5% |
1.1x |
Reasonable |
| MU |
Micron Technology |
4.0% |
83.1 |
Buy |
48 |
-6.5% |
+14.5% |
1.0x |
Oversold |
| TXN |
Texas Instruments |
4.5% |
68.9 |
Buy |
48 |
-2.4% |
-0.8% |
1.4x |
Good entry |
| ASML |
ASML Holdings |
5.0% |
63.7 |
Hold |
50 |
-3.1% |
+7.4% |
1.0x |
Good entry |
| TSM |
Taiwan Semi |
12.0% |
44.6 |
Hold |
50 |
-0.7% |
+3.7% |
1.1x |
Reasonable |
| QCOM |
Qualcomm |
5.0% |
21.2 |
Avoid |
38 |
-14.3% |
-12.8% |
1.1x |
Oversold |
| NVDA |
NVIDIA |
20.0% |
13.9 |
Avoid |
41 |
-4.3% |
-7.1% |
1.0x |
Good entry |
| AVGO |
Broadcom |
8.0% |
12.9 |
Avoid |
40 |
-6.1% |
-11.8% |
0.8x |
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 |
72.6 |
Buy |
73 |
+8.2% |
+17.3% |
0.6x |
Extended |
| ITA |
Aerospace & Defense |
61.7 |
Hold |
68 |
+5.0% |
+8.9% |
0.8x |
Extended |
| XAR |
Aerospace & Def (EW) |
60.4 |
Hold |
60 |
+3.3% |
+6.0% |
0.9x |
Reasonable |
| PAVE |
Infrastructure |
60.3 |
Hold |
48 |
-1.2% |
+0.7% |
1.0x |
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: XLRE (Real Estate)
WATCH
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| VNQ |
REITs Broad |
67.4 |
Buy |
58 |
+1.4% |
+2.5% |
1.2x |
Reasonable |
| ITB |
Homebuilders |
66.3 |
Buy |
61 |
+4.3% |
+8.1% |
0.7x |
Reasonable |
| MORT |
Mortgage REITs |
44.0 |
Hold |
59 |
+2.0% |
+1.1% |
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).
Top Holdings in VNQ
(REITs Broad)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| WELL |
Welltower |
7.7% |
89.6 |
Buy |
72 |
+9.5% |
+10.6% |
1.0x |
Extended |
| SPG |
Simon Property |
3.5% |
88.7 |
Buy |
67 |
+4.3% |
+9.1% |
1.3x |
Reasonable |
| PSA |
Public Storage |
2.8% |
88.5 |
Buy |
65 |
+3.4% |
+7.1% |
0.9x |
Reasonable |
| EXR |
Extra Space Storage |
2.3% |
66.0 |
Buy |
59 |
+1.9% |
+4.4% |
0.9x |
Reasonable |
| O |
Realty Income |
3.2% |
49.9 |
Hold |
63 |
+3.9% |
+3.6% |
1.0x |
Reasonable |
| EQIX |
Equinix |
5.5% |
42.7 |
Hold |
32 |
-6.4% |
-6.6% |
1.2x |
Oversold |
| PLD |
Prologis |
7.0% |
34.0 |
Avoid |
46 |
-2.1% |
-1.7% |
1.0x |
Good entry |
| DLR |
Digital Realty |
3.5% |
25.8 |
Avoid |
33 |
-6.9% |
-8.8% |
1.7x |
Oversold |
| AMT |
American Tower |
4.6% |
7.0 |
Avoid |
37 |
-7.6% |
-7.2% |
1.3x |
Oversold |
| CCI |
Crown Castle |
2.5% |
3.1 |
Avoid |
33 |
-10.2% |
-12.1% |
1.0x |
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: XLC (Communications)
WATCH
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| SOCL |
Social Media |
41.0 |
Hold |
52 |
+0.7% |
-1.1% |
0.7x |
Reasonable |
| NERD |
Gaming & Esports |
39.8 |
Avoid |
61 |
+3.9% |
+1.2% |
0.6x |
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 SOCL
(Social Media)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| GOOGL |
Alphabet |
7.9% |
84.9 |
Buy |
50 |
+0.4% |
-2.9% |
1.2x |
Good entry |
| RDDT |
Reddit |
7.0% |
76.9 |
Buy |
62 |
+12.1% |
+18.2% |
1.1x |
Extended |
| NTES |
NetEase |
4.3% |
67.7 |
Buy |
58 |
+3.5% |
+6.9% |
1.2x |
Reasonable |
| META |
Meta Platforms |
11.4% |
40.7 |
Hold |
50 |
+1.1% |
-3.6% |
1.2x |
Good entry |
| SPOT |
Spotify |
4.5% |
40.6 |
Hold |
56 |
+2.5% |
+3.5% |
0.9x |
Reasonable |
| BIDU |
Baidu |
6.0% |
26.5 |
Avoid |
45 |
-1.2% |
-9.8% |
1.3x |
Good entry |
| 035420.KS |
NAVER Corp |
8.3% |
15.7 |
Avoid |
39 |
-12.0% |
-10.6% |
0.5x |
Oversold |
| TCEHY |
Tencent Holdings |
10.0% |
12.4 |
Avoid |
46 |
-1.7% |
-4.1% |
1.0x |
Good entry |
| SNAP |
Snap Inc |
3.5% |
9.7 |
Avoid |
45 |
-3.3% |
-11.9% |
0.9x |
Good entry |
| 035720.KS |
Kakao Corp |
4.2% |
3.1 |
Avoid |
40 |
-4.6% |
-14.5% |
1.0x |
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: XLF (Financials)
WATCH
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| KRE |
Regional Banks |
76.7 |
Buy |
64 |
+3.3% |
+6.8% |
0.9x |
Reasonable |
| KBE |
Banks |
75.7 |
Buy |
66 |
+3.4% |
+6.6% |
1.4x |
Reasonable |
| KIE |
Insurance |
72.8 |
Buy |
78 |
+8.8% |
+11.5% |
1.1x |
Extended |
| IYG |
Financial Services |
62.2 |
Hold |
71 |
+3.5% |
+5.9% |
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).
Top Holdings in KRE
(Regional Banks)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| BPOP |
Popular Inc |
2.2% |
86.9 |
Buy |
68 |
+3.9% |
+9.3% |
1.0x |
Reasonable |
| VLY |
Valley National |
2.1% |
74.1 |
Buy |
61 |
+2.1% |
+6.4% |
1.1x |
Reasonable |
| CFR |
Cullen/Frost |
2.0% |
67.1 |
Buy |
71 |
+4.5% |
+9.1% |
0.8x |
Extended |
| EWBC |
East West Bancorp |
2.0% |
62.7 |
Hold |
56 |
+0.2% |
+3.3% |
1.0x |
Reasonable |
| MTB |
M&T Bank |
2.0% |
62.5 |
Hold |
66 |
+3.7% |
+8.6% |
0.9x |
Reasonable |
| WBS |
Webster Financial |
2.1% |
54.4 |
Hold |
71 |
+2.8% |
+5.0% |
0.9x |
Extended |
| RF |
Regions Financial |
2.0% |
52.5 |
Hold |
64 |
+3.5% |
+6.9% |
0.8x |
Reasonable |
| FNB |
F.N.B. Corp |
2.0% |
47.4 |
Hold |
61 |
+2.8% |
+6.1% |
0.9x |
Reasonable |
| HBAN |
Huntington Bancshr |
2.0% |
42.6 |
Hold |
64 |
+3.8% |
+8.5% |
0.8x |
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: 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) |
91.6 |
Buy |
77 |
+12.6% |
+17.4% |
1.0x |
Extended |
| IBB |
Biotech |
82.7 |
Buy |
80 |
+10.3% |
+13.4% |
1.2x |
Extended |
| XHE |
Health Equipment |
52.2 |
Hold |
66 |
+6.0% |
+8.3% |
1.3x |
Extended |
| IHI |
Medical Devices |
29.1 |
Avoid |
60 |
+4.1% |
+3.9% |
1.1x |
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 |
| LIT |
Lithium & Battery |
56.1 |
Hold |
40 |
-3.7% |
-8.2% |
0.6x |
Good entry |
| SLX |
Steel |
56.1 |
Hold |
35 |
-6.0% |
-7.1% |
0.4x |
Oversold |
| PICK |
Mining |
44.0 |
Hold |
37 |
-5.7% |
-7.6% |
0.8x |
Oversold |
| GDX |
Gold Miners |
26.1 |
Avoid |
46 |
-0.9% |
-8.1% |
0.8x |
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 LIT
(Lithium & Battery)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| TEM |
Tempus AI |
3.7% |
66.4 |
Buy |
65 |
+15.6% |
+19.0% |
1.0x |
Extended |
| 006400.KS |
Samsung SDI |
7.0% |
57.8 |
Hold |
40 |
-7.8% |
-20.8% |
1.0x |
Oversold |
| PLS.AX |
Pilbara Minerals |
3.9% |
43.4 |
Hold |
39 |
-8.0% |
-13.0% |
0.8x |
Oversold |
| RIO |
Rio Tinto |
19.7% |
40.2 |
Hold |
39 |
-4.9% |
-7.6% |
0.9x |
Good entry |
| QS |
QuantumScape |
3.2% |
30.7 |
Avoid |
43 |
-4.7% |
-8.6% |
0.9x |
Good entry |
| ENVX |
Enovix Corp |
3.4% |
20.9 |
Avoid |
35 |
-18.5% |
-20.8% |
1.1x |
Oversold |
| SQM |
SQM |
3.9% |
19.0 |
Avoid |
40 |
-5.3% |
-12.0% |
0.8x |
Oversold |
| BYDDY |
BYD Company |
3.8% |
4.7 |
Avoid |
42 |
-2.0% |
-12.6% |
1.0x |
Good entry |
| ALB |
Albemarle |
6.7% |
3.4 |
Avoid |
33 |
-10.4% |
-21.1% |
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).