apps2 · sectors

sector rotation — 26 sectors (GICS + thematic: defense · quantum · bitcoin · software · rare earth · space …) vs their own history & vs SPX/NAS100 hubcohortsinflationdecoupfundamentalssectors loading…
Sector rotation — performance rank by timeframe (1d · 1w · 1m · 3m · 1y) The glanceable overview: each column = one timeframe, every sector ranked best→worst by its % return over that window (top = leader, bottom = laggard; the left rail runs BetterWorse). Track a sector's row drift left→right to see rotation — e.g. near the top at 1d but the bottom at 1y is a fresh mover; the reverse is fading leadership. Each cell = rank · color (its line/tape color) · proxy ETF · sector · signed return (green = up, red = down). Click a ticker to spotlight it across every column (the rest dim); click it again or any empty space to clear. Same 5y daily data as the charts below — no extra fetch; the columns are fixed lookbacks that always end at the latest bar.
computing sector ranks…
computing sector ranks…
Sectors — every sector vs its own history (lines) Each line = one sector (its color = the legend), normalized so differently-priced sectors compare on ONE axis. Impulse z (default) = σ vs the visible window mean — best for divergence/rotation (+2σ = same rarity for every line); full stretch to fit = each line 0→1 across the window (shape); % change = from the window start. SPX + NAS100 baselines are solid, dark and NEVER muted (both default on; Bold baselines thickens them). Adjust reprices every line (and the baselines) into REAL terms before normalizing: ÷CPI = inflation-adjusted purchasing power, ÷M2 = vs money printing (each divided by the CPI/M2 of its observation month, fwd-filled to daily — a historical viz, not a tradeable signal). Individual sectors only — no averaged basket line (drill into any basket's constituents below). Click a line to identify it (dims the others; its tooltip alone); click empty space to dismiss; shift-click for the all-series dateline. The hot/cold tape below is this chart's companion. The Retail P/C reference (default on) rides its own right scale: >1 = puts/fear, <1 = calls/greed. Re-frame history with the zoom presets / View(bars) / drag-pan (shared with the tape).
loading sectors…
Select all Deselect all Bold baselines Retail P/C ref
Sectors hot/cold tape — red = hot/stretched · blue = cold/washed-out Each row = one sector; each cell colors that date on ONE shared diverging ramp. DEEP RED = HOT (stretched high vs the mode's reference), DEEP BLUE = COLD (washed-out low), pale = normal. Cell coloring re-labels the ramp per lens (R-UI-26): own history (vs itself, default) · cross-sectional rank (vs all other sectors that day) · vs SPX · vs NAS100 · all-ticker %-move · vs own mean. Sort rows re-orders the tape by the dateline-selected column (click a cell to pick the column; none picked = latest bar). Click a sector's cells to drill into its constituents below (its tooltip shows THAT row; click empty space to dismiss; shift-click for all rows). Heatmaps expose relative rotation/anticorrelation across history that overlapping lines cannot — that is why it accompanies the line chart.
loading sectors…
Select all Deselect all
Sector constituents — drill into any basket (each holding individually selectable) Pick a sector (or click its tape row above) to load its constituent stocks as individual normalized lines — the ETF proxy plus each holding, vs SPX/NAS100. A basket is NEVER collapsed into one averaged line: every constituent is its own selectable line (Select / Deselect all, click to identify one). Same normalize (impulse z / fit / %) and CPI/M2 real-terms adjust as the sector chart. Constituents are fetched only when you open a basket (never all at once). Constituents labeled by ticker; the ETF proxy line is labeled "ETF <ticker>".
pick a sector to load its constituents…
Select all Deselect all Bold baselines Retail P/C ref
Sector divergence — price↔RSI / price↔OBV across 1h · 4h · 1d A divergence is when price and an oscillator disagree — a computed read you can't get by eyeballing the line, so it's the one class of marker we label (R-UI-23). RSI (momentum, volume-free) is computed for every sector ETF + the SPX/NAS100 baselines — price grinds to a new high while momentum quietly rolls over = a top warning; a new low while momentum turns up = a bottom warning. OBV (On-Balance-Volume — is real traded volume backing the move?) is available on the volume-bearing sector ETFs; the SPX/NAS100 cash indices have no native traded volume, so their OBV honestly reads N/A — no volume (never faked; no proxy wired here). Each instrument gets 9 cells = 3 timeframes (1h / 4h / 1d) × 3 swing lookbacks (short 5 / normal 13 / wide 34). Cell color = type (bear ▼, bull ▲, hidden-bear ▿, hidden-bull ▵); size = strength; it fades as it ages; blank = none; grey hatch = no intraday history. Confluence nets bull vs bear across all 9 — a divergence confirmed across many scales beats one lone cell. SPX · NAS100 are pinned on top as the always-present benchmarks. Pick a view mode for a different lens (each explained on-screen); click any row to load it in the price + oscillator chart, which draws the exact swing pair the read is computed from and joins the page-wide dateline.
Retail P/C ref
loading…
loading sector divergence grid…
RSI — every sectorRSI (momentum) needs only price, so it is computed for all 26 sector ETFs and the SPX/NAS100 baselines.
OBV — sector ETFsOBV (On-Balance-Volume) needs real traded volume, available on the volume-bearing sector proxy ETFs. Note: ETF volume is partly creation/redemption & index-rebalance flow, so treat an ETF OBV divergence as a softer volume-confirmation than the same read on a single stock.
Baselines → N/ASPX & NAS100 are cash indices with no native traded volume, so their OBV reads N/A — no volume (RSI still works). No SPY/QQQ volume proxy is wired on this page — we show the honest gap rather than fabricate a signal.
Why matrix + chart agreeCell and chart run the SAME engine + parameters: RSI(14) or OBV, divergences(close, osc, {look, maxSpan: look×7, minSpan: look}); 4h bucketed from the 1h file. The chart draws the exact swing pair each cell reports.
Tape + line pairapps2/sectors · sector rotation lens — the MANDATORY tape+line pair (arch law §1.10 / R-UI-22): a normalized LINE chart of every sector vs its own history + the hot/cold stretch TAPE (heatmap). Upgrades v1 /apps/sectors (apps2-supersedes-apps).
GICS (11)The S&P Select Sector SPDRs.
Thematic (15)Defense/Military (ITA) · Quantum (QTUM) · Bitcoin (IBIT) · Software (IGV) · Rare Earth (REMX, thin — few clean US-listed pure plays) · Space (ARKX) · Semiconductors (SMH) · AI & Robotics (BOTZ) · Clean Energy (ICLN) · Uranium/Nuclear (URA) · Gold Miners (GDX) · Biotech (XBI) · Cybersecurity (CIBR) · Homebuilders (XHB) · Transportation (IYT).
Proxy & drill-downEach sector is proxied by its highest-volume Yahoo ETF; the drill-down decomposes any basket into its individual constituents (never an averaged line).
SPX + NAS100 baselinesSolid, dark, never muted.
Adjust (CPI / M2)Reprices each price by the CPI (CPIAUCSL) or M2 (M2SL) of its observation month, fwd-filled to daily — the baselines are adjusted too, so real-vs-real stays comparable (historical viz, not a tradeable signal).
DataYahoo + FRED via ../decoup/data.php (5y daily prices + CPI/M2 monthly), 10-min server cache, no auto-refresh.