Heatmap — S&P 500 sector heatmap
Tapeboard's S&P 500 cap-weighted heatmap with live prices and historical period closes. Pick a time range — Today, 1W, 1M, 3M, 6M, YTD, or 1Y — and the grid colours by that period's % change. Tickers are grouped by GICS sector and sub-grouped by industry, with a hover tooltip and sector drill-down to the top movers inside each cell.
The Heatmap renders the top S&P 500 stocks as a cap-weighted grid, grouped by GICS sector and then by industry within each sector, coloured by % change. Box area is market cap. Box colour is the period return for the selected time range. Click a sector header to drill into that sector's top scanner rows in a slide-out panel.

What it is
A cap-weighted grid built over a curated universe of ~100 large-cap names, hand-picked across the 11 GICS sectors. Within each sector cluster, tickers are sub-grouped under industry sub-headers (e.g., Technology → Semiconductors, Software—Infrastructure, Consumer Electronics) so the grid reads as sector → industry → ticker. Aggregates are cached for about 60 seconds, so every refresh on the page pulls from the same snapshot the rest of the terminal uses. It uses live prices plus historical closes behind the 1W / 1M / 3M / 6M / YTD / 1Y ranges.
Colour ramps from #5B0E0E (deep red, ≤-5%) through dark slate at neutral (#11141a, ±0.3%) to #065F2E (deep green, ≥+5%). The bottom-of-screen legend spells out the scale; the footer also annotates BOX = MKT_CAP.
When to use it
Open it first thing to see where the money is rotating today — green tech and red energy looks different from the inverse. Switch the time range (Pro) to 1W, 1M, 3M, 6M, YTD, or 1Y to see whether today's move is a continuation or a reversal of a longer trend — a name that's red today but deep green on YTD is a different setup than one that's red on both. The industry sub-headers let you see whether a sector move is broad or concentrated in one industry. Click into the worst-performing sector to find the names dragging it down before you size into anything there.
Open it
- Path:
/heatmap - Shortcut: none — sidebar
MARKETSgroup - Tier-gate: Free is locked to
S&P 500view +Todaycolour scale; Pro unlocksSector ETFsaggregate view (heatmap.allViews) and the longer time ranges —1W/1M/3M/6M/YTD/1Y(heatmap.allColors)
How to use it
- Land on
/heatmap. Loads withS&P 500 / Todayby default; the grid renders inside 1-2 seconds (or instantly from cache on repeat visits). - Pick a time range from the pill row —
Today,1W,1M,3M,6M,YTD, or1Y. The grid recolours by that period's % change:Todayis the live session move,1W/1M/3M/6Mare the return vs. the close that many trading periods ago,YTDis from the first close of the calendar year, and1Yis the trailing-252-day return. - Switch the view from the pill toggle —
S&P 500shows individual tickers grouped by sector and industry;Sector ETFscollapses each sector to a single market-cap-weighted box. - Read the sector and industry sub-headers — each sector cluster is broken into industry groups (the small strip labels above sub-clusters) so you can tell a broad sector move from a single-industry one.
- Hover any tile for the tooltip — sector, industry, market cap, last price, and % change for the selected range.
- Click a sector header bar to open the sector detail panel — slides in from the right with the top 10 scanner rows from that sector, sorted by % change. Click any row to jump to that name's research page.
- Click any individual stock tile to navigate to that name's research page.
- The page refreshes automatically about every 60 seconds; changing the time range, view, or colour triggers an immediate update. On phones the grid is replaced with a sorted list of cards — each ticker a tappable row sorted by % change descending. Same data, optimized for the phone.

Fields
Controls
| Control | Values | Notes |
|---|---|---|
View | S&P 500, Sector ETFs | Pro unlocks Sector ETFs; Free is locked to S&P 500 |
Time range | Today, 1W, 1M, 3M, 6M, YTD, 1Y | Sets the period the colour represents. Pro unlocks every range past Today; Free is locked to Today |
Colour scale (% change)
| Range | Colour |
|---|---|
| ≤ -5% | #5B0E0E (deep red) |
| -5% to -3% | #7A1515 |
| -3% to -2% | #9B1C1C |
| -2% to -1% | #B72525 |
| -1% to -0.3% | #C43A3A |
| -0.3% to +0.3% | #11141a (neutral slate) |
| +0.3% to +1% | #1E6B3A |
| +1% to +2% | #1A7F3A |
| +2% to +3% | #15803D |
| +3% to +5% | #0F6B35 |
| ≥ +5% | #065F2E (deep green) |
Per-tile data (tooltip + drill)
| Field | What it is |
|---|---|
symbol | The ticker |
name | Company name |
sector | One of 11 GICS sectors (Technology, Communication, Consumer Cyclical, Healthcare, Financial, Consumer Defensive, Industrial, Energy, Utilities, Real Estate, Basic Materials) |
industry | GICS industry within the sector (e.g., Semiconductors, Banks—Diversified) — drives the in-sector sub-headers |
marketCap | Last price × shares outstanding |
changePercent | Today: the live session percent change; 1W/1M/3M/6M/YTD/1Y: computed from the close at the matching lookback (≈5 / 21 / 63 / 126 trading days, first-of-year, and ~252 days) |
price | Last price |
volume | Session total volume |
The hover tooltip surfaces sector, industry, market cap, price, and the % change for the active time range.
Sector aggregate (Sectors ETFs view)
Each sector becomes a single tile. marketCap is the sum of constituent caps; changePercent is the cap-weighted mean of constituent % changes. Sorted by market cap descending.
Limits
- Universe is ~100 hand-picked large caps, not the full S&P 500. Sub-$5B names won't appear regardless of how much they moved
- If the market-data feed is briefly unavailable the page falls back to the most recent cached snapshot, then shows
MARKET_DATA_UNAVAILABLEif neither works - The longer ranges (
1Wthrough1Y) pull more history on a cache miss — the first load after the cache expires can take 3-5 seconds, and the6M/YTD/1Yranges are the heaviest because they pull the most closes - Colour scale is fixed at ±5% extremes; a 10% mover and a 5% mover both show full-saturation green/red, no gradient detail beyond ±5%
- The sector detail panel pulls the top 10 from the full scanner universe, not the heatmap universe, so the drill-down can surface names that aren't on the grid
- Phone view drops the grid entirely — no tap-to-drill-sector, only tap-to-research-ticker
- The 60-second auto-refresh runs whether the tab is foregrounded or not
Troubleshooting
MARKET_DATA_UNAVAILABLE on a weekday during market hours. The market-data feed is briefly unavailable and no cached snapshot exists for this view + range combo. Try the Today view first (most likely to be cached); if that also fails, the feed is genuinely out — wait a minute and refresh.
The 1W / 1M / 3M / 6M / YTD / 1Y time ranges look locked (greyed with a 🔒 icon). You're on Free. Free is locked to the Today range; upgrade to Pro to unlock every longer range, or stay on Today.
The industry sub-headers split a sector into more groups than I expected. That's the GICS industry breakdown — a single GICS sector spans several industries, so Technology can show Semiconductors, Software, and Consumer Electronics as separate sub-clusters. The sub-grouping is by design and helps you see whether a sector move is broad or concentrated in one industry.
The same ticker shows a different colour when I change the time range. Expected — colour is the % change over the *selected* range, not a fixed value. A name can be red on Today and green on YTD (or the reverse); switch ranges to compare the short-term move against the longer trend.
Sector tile colour looks wrong vs. constituents. The Sector ETFs view colour is the cap-weighted mean — a few mega-caps can drag the aggregate green even when most names in the sector are red. Drill in via click to see the per-ticker truth.
Drill-down panel shows tickers that aren't visible on the grid. Expected — the panel pulls from the full scanner universe, not the limited heatmap list. Smaller names in the sector can rank into the top-10 by % change without making the grid.
A ticker I expect to see (e.g., a $50B fast-growing name) isn't on the heatmap. The universe is curated — if it's not in the heatmap list it won't render. Open the ticker's research or charts page instead.