How to Use Crypto Sector Rotation

How the 51-sector heatmap is computed, what the colors mean, and the three readings that trip people up.

Last updated 2026-09
Key Takeaways
  • Sector rotation groups the 718 USDT-margined Binance perpetuals into 51 sectors from a hand-maintained table; a sector's move is its members' moves weighted by open-interest notional value.
  • Weights are concentrated: ETH is 78.6% of Layer 1, SOL is 73.5% of SOL Eco (measured 2026-09-15 16:15 UTC). A green sector is often one leader moving.
  • It measures price, not money: there is no volume and no inflow or outflow in the data — only OI-weighted returns.
  • Colors are steps of an assumed volatility, so each column has its own thresholds: the faintest green is about +0.4% in the 1h column and about +18.6% in the 90d column.
  • No official strategy uses sector rotation today, so every use below is a sketch, not a backtested rule.

On the same day, some sectors are all green and others all red. But is the sector moving, or is one leader carrying it? The heatmap compares 51 sectors across seven timeframes, and both its colors and its numbers come with conditions — read how they are built before you read the colors.

What is sector rotation?

Sector rotation is Blave's sector-performance heatmap: every USDT-margined Binance perpetual gets a sector label, each sector's move is computed over seven timeframes, and the result is drawn as shaded cells. Rows are sectors; columns are 1h, 8h, 24h, 3d, 7d, 30d and 90d.

The computation has three steps:

StepWhat it does
1. LabelEach coin gets a sector from a hand-maintained table. Measured 2026-09-15: of 718 USDT perpetuals, 707 matched a label and 11 did not.
2. Coin moveTake 5-minute closes over the last 100 days, compute each bar's return, then sum the returns inside the timeframe.
3. Sector valueAverage the members' moves, weighted by each coin's open-interest notional value in USDT. Not equal-weight, not market-cap weight.

Two things to know up front. Sectors are not mutually exclusive: a coin can sit in several, for example ETH in both ETH and Layer 1, SOL in both Layer 1 and SOL Eco. And the table is not only crypto — Binance's tokenized US and Hong Kong equities, ETFs and commodities (gold, silver, crude) are in there too, and they track those perpetual contracts, not the underlying market's session or close.

The table is maintained by hand and has been updated roughly every one to three months over the past year, so the members in an old screenshot are not necessarily the members today.

Three things to check before you read the colors

These three are where the heatmap gets misread most often — run through them before you look at the colors.

1. A green sector does not mean the sector is up

Sector values are weighted by OI notional, and OI is heavily concentrated. Measured 2026-09-15 16:15 UTC:

SectorLargest member's share of the sector's OI
Layer 1ETH 78.6% (SOL 10.9%)
SOL EcoSOL 73.5%
YieldBTW 78.5%
MemeDOGE 30.2%
AIWLD 17.0% (TAO 15.8%)

Almost four-fifths of the Layer 1 cell is ETH. To tell a broad move from a leader-only move, open the sector's token page: most members green is a different market from the top name green and the rest red.

2. It measures price, not money

You will often hear the heatmap described as money rotating between sectors. It cannot answer that — the calculation contains no volume and no flows, only price returns and the open-interest value used as the weight. Rising prices usually come with buying, but they are not the same thing, and nothing here separates new money from short covering.

3. The same green is not the same move in every column

There are 13 color steps, and the thresholds are not fixed percentages. An assumed annual volatility is scaled down to each timeframe, and the steps sit at 0.5, 1, 1.5, 2, 2.5 and 3 times that number, with everything past 3 capped at the darkest shade. So every column has its own thresholds:

TimeframeFaintest shade starts nearDarkest (capped) near
1h±0.4%±2.4%
24h±2.0%±11.8%
7d±5.2%±31.2%
30d±10.8%±64.5%
90d±18.6%±111.7%

Thresholds for the sector overview, derived from the page's constants rather than measured. The token page assumes a larger volatility, so its thresholds are about 1.33× the table above and the same move is shaded differently on the two pages.

Reading across a row compares how far a sector has travelled relative to its own normal in windows of different length — not how big the moves are.

Ask three questions before you read a color: How much of this cell's OI is its largest member? Am I looking at price, or at money? Which column is this green in? All three answers change what the same green means.

Where do the numbers come from?

A sector's move is built from summed 5-minute returns, not from "price now ÷ price N days ago − 1". For majors over short and medium windows the two are nearly identical; over long windows they drift; for high-volatility small caps over long windows they break.

Measured 2026-09-15 16:15 UTC, majors sit one to two percentage points apart:

CellShownTrue returnGap (true − shown)
BTC 90d+16.40%+15.88%−0.52pp
BTC 30d+19.44%+20.64%+1.20pp

At the same moment one small cap's 90d cell computed to −390%, which no real return can be: that is what summing does in a long, volatile window.

Two practical consequences. The heatmap itself hides it, because the shading caps at three volatility units. And the distortion is carried into the sector average whenever a distorted member holds a meaningful weight.

One more effect pushes the same way: the weight is the current OI value, and OI value moves with price. A coin that just ran up gets a larger weight at the same time — weighting by the outcome, and the longer the timeframe the more it shows.

So treat the long columns as an ordering of what is moving, not as return figures.

How to put it into a strategy

None of the three sketches below is backed by an official strategy or a backtest. They are starting points to validate yourself. Data comes from GET /sector_rotation/get_overview_data (API plan required), which returns each sector's move across the seven timeframes plus its member list.

1. Check breadth before you follow

The heatmap says the sector is up; the token page says how many members are. Requiring both "sector positive" and "more than half the members positive" filters out the leader-only case.

import requests
r = requests.get("https://api.blave.org/sector_rotation/get_overview_data", headers=hdrs)
sectors = r.json()["data"]
s = sectors["Layer 1"]
tf = "24h"
# is the sector up over 24h
sector_up = s["data"][tf]["pct_change"] > 0
# what share of members are up (breadth)
ups = [t for t in s["symbols"].values() if t["data"][tf]["pct_change"] > 0]
breadth = len(ups) / len(s["symbols"])
print(sector_up, round(breadth, 2))  # green with breadth 0.3 = the leader alone

2. Treat short/long divergence as a rotation candidate

A sector red over 30 days and green over 24 hours is one shape of a laggard starting to move; deep green over 30 days and red over 24 hours is a leader cooling off. This is a reading, not a rule — and remember the distortion above: use the 30d and 90d numbers for ordering only.

short_tf, long_tf = "24h", "30d"
rows = []
for name, s in sectors.items():
    short = s["data"][short_tf]["pct_change"]
    long_ = s["data"][long_tf]["pct_change"]
    if short > 0 and long_ < 0:          # long-term laggard turning up
        rows.append((name, short, long_))
rows.sort(key=lambda x: -x[1])
print(rows[:5])

3. Use it as a filter on single-coin signals

If you already run a strategy on one coin, you can add "the coin's sector is positive over a short timeframe" as a condition and only accept entries when the sector agrees. It changes no entry or exit logic, it only removes trades — whether that pays has to come out of your own backtest, not from the assumption that a filter helps. Market Sentiment is another filter of the same kind: it reads one coin's premium to the index rather than the relative strength of a group.

def sector_ok(sectors, token, tf="8h"):
    # a coin can belong to several sectors; any one positive passes
    for s in sectors.values():
        if token in s["symbols"] and s["data"][tf]["pct_change"] > 0:
            return True
    return False

Which timeframe should you use?

TimeframeGood forWatch out
1h, 8hIntraday rotation, reaction after an eventThe snapshot refreshes hourly, so the 1h column can lag by up to an hour — it is not a live quote
24h, 3dSwing-level ordering of strengthThe most usable range; distortion is still small here
7d, 30dMedium-term trend, where a sector standsSumming distortion appears; use for ordering
90dLong-run themesLargest distortion, and the weights are today's OI; do not read as returns

The examples here use 24h and 8h because those columns track real returns most closely and match the horizons most people actually hold.

The history page — a year of cumulative sector returns as lines — runs on a different calculation: daily returns compounded, today's OI weights applied across the whole year, only coins that still exist (delisted coins are absent for the entire line), and days before listing counted as 0%. New sectors therefore start as flat lines; the tokenized-equity sectors, for instance, have little data before early 2026. Read it as relative movement between sectors, not as a performance record you could have captured.

Which indicators pair well with it?

These are ideas for combinations, not verified conclusions:

Pair withWhy
Sector Rotation + Whale HunterSectors show which group is moving; use Whale Hunter to see whether a single coin's open interest and volume are unusually large.
Sector Rotation + Market SentimentSectors are the relative strength of a group of coins; Market Sentiment is one coin's premium to the index — different questions.
Sector Rotation + LiquidationWhen a sector turns red quickly, check the liquidation indicator to see whether forced selling was part of it.
Sector rotation is reference data, not a trading signal. It is built only from Binance perpetual prices and open interest — no spot, no other venues. Sectors come from a hand-maintained table that changes over time, and the long timeframes carry distortion from both summing and weighting. The history page also carries survivorship bias: delisted coins are not in the data, so the past looks kinder than it was.