Appearance
Sector Performance Quilt
The performance quilt sits next to the fundamentals heatmap on the Sectors page and answers a different question. Fundamentals tells you how each sector is currently positioned — margins, returns on capital, leverage. The quilt tells you how each sector has actually performed, month by month, across the last year. Together they let you ask "is this sector cheap because it's been beaten up, or beaten up because it's structurally weaker?"
The chart shows 11 GICS sectors as rows and 13 columns: the trailing twelve full months plus the current month-to-date. Each cell is one number — that sector's monthly return — colored on a brick-to-forest diverging scale anchored at zero.
The cell value
For a single ticker in a single month:
where
The return type toggle picks which price column to use:
- Total return (default) reads
adj_close— yfinance's dividend- and split-adjusted close. Reinvested dividends are baked in, so the ratio above is the true total return without a separate dividend roll-up step. - Price return reads the unadjusted
close. It understates real performance, especially for high-yield sectors (Utilities, Energy, Financials), but it's useful when you want to isolate price action from cash distributions.
Aggregating to the sector
For a given sector
Equal-weighted: every contributor counts the same.
Cap-weighted (default): weighted by current market_cap.
where
If fewer than two constituents in the sector have a non-null cap available, the cap-weighted formula falls back to the equal-weighted calculation rather than returning a misleading two-stock approximation. This mirrors the same minimum-N rule the fundamentals heatmap uses for weighted_mcap.
Suppression: if fewer than three constituents have a computable monthly return for the cell, the cell renders as a hatched block with no number — the sample is too small to be representative. This matches the minimum-N rule on the fundamentals heatmap.
Coloring
The diverging scale is anchored at exactly 0% — green above, red below — and clipped at
The legend strip below the quilt shows the active range. Toggling between cap- and equal-weighted, or between TR and PR, recomputes the visible max and re-shades the cells live.
Simplifications applied in v1
Two deliberate simplifications, both flagged so a reader knows what to discount:
Current SP500 membership applied across all 13 months. A company added to the index three months ago appears in every column of the quilt, including months when it wasn't in the index. The bias is small at the SP500 scale (membership is sticky) but the quilt isn't a survivorship-corrected backtest — it's a current-membership look at trailing performance. Same simplification the rest of the Sectors page already makes.
Current market_cap used as the cap weight across all months. A more honest cap-weighted aggregation would use each ticker's market cap as of that month-end, which would let high-volatility sectors look more or less concentrated as their composition shifted. The current approach keeps the weights stable, which produces correct ordering but slight bias for sectors that rotate hard during stress regimes.
Both are tracked in the backlog as v2 candidates if the bias starts to matter for the kind of comparison Sean is making.
What the quilt is good for
- Spotting leadership rotation. If Tech is dark green for three months and then suddenly red while Energy lights up, that's a regime shift — exactly the kind of thing a single-sector chart would obscure.
- Reading macro stress. Months where every sector is red (or every sector green) tell you the market moved together — a beta event, not a stock-picker's market.
- Cross-checking a fundamentals story. A sector with great fundamentals but a long red streak is either an opportunity (mispriced) or a warning (something the fundamentals don't yet capture).
What it is not good for
- A backtest. The membership and cap simplifications make this current-look-back analysis, not a what-if-I-bought-this strategy.
- A point-in-time comparison. Quilt months use today's sector classifications and today's index membership. A company that switched from "Industrials" to "Technology" in 2023 appears under its current sector for every cell, including months when it was classified differently.
- High-frequency timing. The granularity is monthly. Intraday or weekly trends won't show.