← Sector Rotation Screen home
Mid-cycle
INDPRO YoY +1.1% between 0.0% and 4.0% with curve +0.34: steady expansion.
Sector Scores & Signals
| ETF |
Name |
Last |
% From 52W High |
Seasonality |
n yrs |
Cycle Fit |
Rel Strength |
RS 3m |
Composite |
Signal |
| XLK |
Technology |
$175.88 |
-11.16% |
84.7 |
20 |
100.0 |
46.0 |
8.42% |
77.3 |
Buy |
| XLC |
Communications |
$106.30 |
-10.96% |
74.3 ⚠ |
9 |
100.0 |
44.4 |
-13.78% |
74.1 |
Watch |
| XLE |
Energy |
$59.62 |
-4.01% |
66.2 |
20 |
50.0 |
86.5 |
0.82% |
66.8 |
Buy |
| XLRE |
Real Estate |
$45.95 |
0.00% |
90.7 |
11 |
50.0 |
59.3 |
0.87% |
63.5 |
Hold |
| XLF |
Financials |
$56.31 |
-0.78% |
82.1 |
20 |
50.0 |
51.1 |
4.52% |
58.4 |
Hold |
| XLV |
Healthcare |
$162.57 |
-1.14% |
80.0 |
20 |
35.0 |
60.9 |
7.09% |
55.3 |
Hold |
| XLI |
Industrials |
$182.66 |
-1.56% |
85.2 |
20 |
50.0 |
37.7 |
0.62% |
54.5 |
Hold |
| XLU |
Utilities |
$46.29 |
-1.72% |
76.5 |
20 |
35.0 |
42.5 |
-3.50% |
48.0 |
Hold |
| XLB |
Materials |
$51.26 |
-3.62% |
73.5 |
20 |
50.0 |
26.8 |
-5.26% |
47.8 |
Hold |
| XLY |
Consumer Discretionary |
$109.41 |
-11.78% |
81.8 |
20 |
50.0 |
13.4 |
-11.46% |
45.1 |
Hold |
| XLP |
Consumer Staples |
$84.13 |
-5.35% |
78.1 |
20 |
35.0 |
31.1 |
-3.09% |
44.4 |
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
+636.32%
SPY: +626.21%
Strategy CAGR
+14.15%
SPY: +14.05%
Strategy Sharpe
0.89
SPY: 0.98
Max drawdown
-18.78%
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% |
+3.0% |
+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% |
+1.1% |
-1.5% |
-0.8% |
+1.6% |
+2.3% |
-0.1% |
| XLV |
+0.9% |
-0.2% |
+0.8% |
+1.0% |
+0.7% |
+1.2% |
+2.1% |
+0.6% |
-0.3% |
+0.6% |
+2.7% |
+0.9% |
| XLI |
+0.5% |
+1.0% |
+0.8% |
+2.2% |
+0.5% |
-0.1% |
+2.6% |
-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.3% |
-0.1% |
-1.4% |
+0.8% |
+2.9% |
+0.6% |
| XLRE |
+0.5% |
-0.3% |
+0.9% |
+1.0% |
+0.4% |
+1.8% |
+3.4% |
+0.7% |
-2.9% |
-0.9% |
+3.1% |
+0.5% |
| XLC |
+4.2% |
-0.9% |
-0.8% |
+2.0% |
+2.6% |
+0.8% |
+2.0% |
+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 |
| CIBR |
Cybersecurity |
77.9 |
Buy |
48 |
-2.9% |
+1.4% |
0.9x |
Good entry |
| SKYY |
Cloud Computing |
67.7 |
Buy |
43 |
-3.0% |
-2.6% |
1.1x |
Good entry |
| IGV |
Software |
61.9 |
Hold |
39 |
-4.3% |
-5.1% |
0.9x |
Good entry |
| FDN |
Internet |
58.5 |
Hold |
38 |
-3.7% |
-3.9% |
1.5x |
Good entry |
| SMH |
Semiconductors |
48.8 |
Hold |
43 |
-5.5% |
-6.3% |
0.8x |
Oversold |
| BOTZ |
AI & Robotics |
44.6 |
Hold |
34 |
-6.1% |
-10.4% |
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).
Top Holdings in CIBR
(Cybersecurity)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| NET |
Cloudflare |
3.0% |
87.1 |
Buy |
53 |
-0.4% |
+8.4% |
0.9x |
Reasonable |
| CRWD |
CrowdStrike |
6.5% |
85.4 |
Buy |
47 |
-5.2% |
+3.0% |
0.8x |
Oversold |
| TENB |
Tenable |
2.0% |
82.3 |
Buy |
44 |
-14.0% |
+4.7% |
1.0x |
Oversold |
| PANW |
Palo Alto Networks |
7.0% |
76.1 |
Buy |
50 |
-4.5% |
+9.0% |
0.8x |
Reasonable |
| GEN |
Gen Digital |
3.5% |
73.5 |
Buy |
52 |
-0.7% |
+2.4% |
0.8x |
Reasonable |
| OKTA |
Okta |
3.0% |
58.9 |
Hold |
53 |
-2.8% |
+13.5% |
0.9x |
Reasonable |
| ZS |
Zscaler |
5.0% |
58.4 |
Hold |
50 |
-1.7% |
-0.7% |
0.7x |
Good entry |
| FTNT |
Fortinet |
5.5% |
55.3 |
Hold |
49 |
-3.8% |
+4.0% |
0.8x |
Good entry |
| CSCO |
Cisco Systems |
4.5% |
39.8 |
Avoid |
49 |
-0.2% |
-2.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).
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 |
60.1 |
Hold |
41 |
-3.0% |
-3.0% |
0.9x |
Good entry |
| NERD |
Gaming & Esports |
57.5 |
Hold |
42 |
-2.4% |
-1.5% |
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 SOCL
(Social Media)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| SPOT |
Spotify |
4.5% |
68.7 |
Buy |
52 |
+0.8% |
+0.9% |
1.1x |
Reasonable |
| META |
Meta Platforms |
11.4% |
64.6 |
Hold |
44 |
-4.2% |
-1.8% |
0.6x |
Good entry |
| 035720.KS |
Kakao Corp |
4.2% |
50.7 |
Hold |
50 |
+3.1% |
-5.2% |
1.0x |
Reasonable |
| 035420.KS |
NAVER Corp |
8.3% |
46.8 |
Hold |
52 |
+6.2% |
-2.9% |
1.1x |
Extended |
| NTES |
NetEase |
4.3% |
44.8 |
Hold |
40 |
-7.0% |
-3.1% |
0.9x |
Oversold |
| BIDU |
Baidu |
6.0% |
43.5 |
Hold |
38 |
-5.7% |
-12.1% |
0.6x |
Oversold |
| SNAP |
Snap Inc |
3.5% |
42.8 |
Hold |
34 |
-5.4% |
-14.6% |
0.8x |
Oversold |
| RDDT |
Reddit |
7.0% |
36.6 |
Avoid |
42 |
-9.8% |
-2.9% |
1.1x |
Oversold |
| GOOGL |
Alphabet |
7.9% |
32.1 |
Avoid |
32 |
-9.2% |
-12.3% |
1.1x |
Oversold |
| TCEHY |
Tencent Holdings |
10.0% |
25.1 |
Avoid |
44 |
-3.8% |
-3.0% |
1.1x |
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: XLE (Energy)
BUY
Sub-Sector ETFs (ranked by composite)
| ETF | Theme | Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| XOP |
Oil & Gas E&P |
81.0 |
Buy |
65 |
+6.6% |
+6.1% |
1.0x |
Extended |
| AMLP |
MLPs / Midstream |
62.3 |
Hold |
67 |
+3.3% |
+4.1% |
0.9x |
Reasonable |
| OIH |
Oil Services |
60.4 |
Hold |
54 |
+4.1% |
-3.0% |
0.8x |
Reasonable |
| URA |
Uranium / Nuclear |
23.6 |
Avoid |
39 |
-4.1% |
-12.4% |
1.1x |
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 XOP
(Oil & Gas E&P)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| SM |
SM Energy |
2.9% |
96.4 |
Buy |
67 |
+13.4% |
+9.6% |
0.9x |
Extended |
| VG |
Venture Global |
3.2% |
94.8 |
Buy |
61 |
+12.9% |
+13.5% |
1.4x |
Extended |
| CHRD |
Chord Energy |
2.8% |
80.3 |
Buy |
67 |
+12.7% |
+6.2% |
1.0x |
Extended |
| XOM |
Exxon Mobil |
2.8% |
65.3 |
Buy |
72 |
+9.2% |
+7.1% |
0.9x |
Extended |
| FANG |
Diamondback Energy |
2.8% |
60.5 |
Hold |
67 |
+9.1% |
+6.4% |
0.9x |
Extended |
| CVX |
Chevron |
2.8% |
59.4 |
Hold |
71 |
+8.6% |
+6.7% |
0.8x |
Extended |
| APA |
APA Corp |
2.9% |
56.6 |
Hold |
59 |
+6.4% |
+1.8% |
0.9x |
Extended |
| MUR |
Murphy Oil |
2.9% |
45.9 |
Hold |
64 |
+11.4% |
+6.6% |
0.8x |
Extended |
| TPL |
Texas Pacific Land |
2.7% |
39.6 |
Avoid |
56 |
+1.8% |
+6.2% |
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).
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 |
68.4 |
Buy |
64 |
+2.6% |
+4.3% |
0.7x |
Reasonable |
| MORT |
Mortgage REITs |
39.9 |
Avoid |
45 |
-1.8% |
-0.3% |
1.0x |
Good entry |
| ITB |
Homebuilders |
31.9 |
Avoid |
49 |
-1.8% |
+1.3% |
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 VNQ
(REITs Broad)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| WELL |
Welltower |
7.7% |
96.3 |
Buy |
74 |
+6.4% |
+13.8% |
0.9x |
Extended |
| PLD |
Prologis |
7.0% |
71.2 |
Buy |
57 |
+3.2% |
+3.2% |
1.2x |
Reasonable |
| O |
Realty Income |
3.2% |
61.1 |
Hold |
63 |
+2.6% |
+5.5% |
0.7x |
Reasonable |
| DLR |
Digital Realty |
3.5% |
51.5 |
Hold |
69 |
+11.1% |
+7.9% |
1.0x |
Extended |
| SPG |
Simon Property |
3.5% |
49.3 |
Hold |
64 |
+2.3% |
+7.2% |
0.7x |
Reasonable |
| EQIX |
Equinix |
5.5% |
34.8 |
Avoid |
62 |
+4.9% |
+2.6% |
0.9x |
Reasonable |
| PSA |
Public Storage |
2.8% |
34.1 |
Avoid |
55 |
+0.7% |
+3.0% |
1.5x |
Reasonable |
| EXR |
Extra Space Storage |
2.3% |
28.6 |
Avoid |
54 |
+0.9% |
+2.1% |
1.2x |
Reasonable |
| AMT |
American Tower |
4.6% |
16.0 |
Avoid |
44 |
-0.2% |
-5.2% |
0.9x |
Good entry |
| CCI |
Crown Castle |
2.5% |
13.9 |
Avoid |
37 |
-3.5% |
-11.0% |
1.1x |
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 |
| KIE |
Insurance |
72.2 |
Buy |
62 |
+1.5% |
+7.8% |
0.7x |
Reasonable |
| IYG |
Financial Services |
60.7 |
Hold |
60 |
+1.0% |
+4.6% |
0.8x |
Reasonable |
| KRE |
Regional Banks |
55.6 |
Hold |
56 |
+0.4% |
+4.9% |
1.0x |
Reasonable |
| KBE |
Banks |
55.4 |
Hold |
57 |
+0.5% |
+5.0% |
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).
Top Holdings in KIE
(Insurance)
| Ticker | Name | Weight |
Composite | Signal |
RSI | vs 20d | vs 50d |
Vol | Entry Timing |
| RYAN |
Ryan Specialty |
2.1% |
73.1 |
Buy |
60 |
+2.5% |
+15.1% |
0.8x |
Reasonable |
| WTM |
White Mountains Ins |
2.1% |
60.1 |
Hold |
63 |
+2.2% |
+5.0% |
0.8x |
Reasonable |
| AGO |
Assured Guaranty |
2.0% |
54.4 |
Hold |
66 |
+2.7% |
+8.3% |
0.9x |
Reasonable |
| L |
Loews Corp |
2.1% |
50.7 |
Hold |
67 |
+2.6% |
+6.9% |
0.8x |
Reasonable |
| RNR |
RenaissanceRe |
2.0% |
49.5 |
Hold |
62 |
+2.9% |
+8.3% |
1.0x |
Reasonable |
| ORI |
Old Republic Intl |
2.1% |
44.3 |
Hold |
60 |
+1.8% |
+6.5% |
0.8x |
Reasonable |
| MCY |
Mercury General |
2.2% |
39.9 |
Avoid |
54 |
-0.5% |
+3.7% |
0.8x |
Reasonable |
| CINF |
Cincinnati Financial |
2.0% |
38.4 |
Avoid |
57 |
+0.3% |
+6.1% |
0.8x |
Reasonable |
| LMND |
Lemonade |
2.9% |
33.1 |
Avoid |
42 |
-11.2% |
-1.0% |
0.6x |
Oversold |
| BHF |
Brighthouse Finl |
2.5% |
19.8 |
Avoid |
43 |
-2.1% |
-0.3% |
1.2x |
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) |
51.9 |
Hold |
49 |
-4.0% |
+4.8% |
0.8x |
Good entry |
| IBB |
Biotech |
49.4 |
Hold |
54 |
-1.5% |
+5.2% |
0.8x |
Reasonable |
| XHE |
Health Equipment |
41.3 |
Hold |
49 |
-1.8% |
+2.5% |
0.6x |
Good entry |
| IHI |
Medical Devices |
33.2 |
Avoid |
49 |
-0.9% |
+0.6% |
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).