51 セクターのヒートマップの計算方法、色の意味、そしてよくある三つの誤読。
同じ日でも、あるセクターは一面の緑、別のセクターは一面の赤になります。では、セクター全体が上げているのか、それとも一つ二つの主力銘柄が引き上げているだけなのか。このヒートマップは 51 のセクターを 7 つの時間軸で比べますが、その色も数字も前提つきです。色を読む前に、まず計算方法を理解しましょう。
セクターローテーションは Blave のセクター別パフォーマンス・ヒートマップです。Binance の USDT 建て無期限契約の各銘柄にセクターのラベルを付け、セクターごとの騰落を 7 つの時間軸で計算し、色の濃淡で一覧にします。縦軸はセクター、横軸は 1 時間・8 時間・24 時間・3 日・7 日・30 日・90 日です。
計算は三段階です。
| ステップ | 何を計算するか |
|---|---|
| 1. 分類 | 各銘柄に、手作業で管理された分類表からセクターのラベルを付けます。2026-09-15 の計測では、718 の USDT 無期限のうち 707 銘柄がラベルに一致し、11 銘柄は一致しませんでした。 |
| 2. 銘柄の騰落 | 直近 100 日分の 5 分足終値を取り、各足のリターンを計算したうえで、その時間軸に含まれるリターンを合計します。 |
| 3. セクター値 | 構成銘柄の騰落を、各銘柄の建玉名目価値(OI、USDT 建て)で加重平均します。等ウェイトでも時価総額加重でもありません。 |
先に知っておくべきことが二つあります。第一に、セクターは排他的な分類ではありません。一つの銘柄が複数のセクターに属することがあり、たとえば ETH は ETH と Layer 1 の両方に、SOL は Layer 1 と SOL Eco の両方に入ります。第二に、分類表は暗号資産だけではありません。Binance に上場しているトークン化された米国株・香港株・ETF・コモディティ(金、銀、原油など)の無期限契約も含まれており、これらが映すのはその無期限契約の価格であって、原市場の取引時間や終値ではありません。
分類表は手作業で管理されており、直近 1 年ではおよそ 1〜3 か月に一度更新されています。古いスクリーンショットの構成銘柄が現在と同じとは限りません。
ヒートマップの読み違いは、ほとんどこの三点から生まれます。色を見る前に一度確認してください。
セクター値は OI 名目価値による加重であり、その OI は各セクター内で大きく偏っています。2026-09-15 16:15 UTC 時点の計測:
| セクター | 最大構成銘柄が占める当該セクター OI の比率 |
|---|---|
| Layer 1 | ETH 78.6% (SOL 10.9%) |
| SOL Eco | SOL 73.5% |
| Yield | BTW 78.5% |
| Meme | DOGE 30.2% |
| AI | WLD 17.0% (TAO 15.8%) |
Layer 1 のセルの色は、その八割近くを ETH が決めています。「セクター全体」なのか「主力銘柄だけ」なのかを見分けるには、セクターをクリックして銘柄ページを開いてください。同じセクターで大半の銘柄が緑なのと、首位だけ緑で残りが赤いのとでは、まったく別の相場です。
「資金がセクター間を移動している」という説明をよく耳にします。しかしこのヒートマップはそれに答えられません。計算には出来高も資金の流入・流出も含まれず、あるのは価格の騰落と、ウェイトとして使う建玉価値だけです。価格上昇には通常買いが伴いますが、両者は同じものではなく、新規資金の流入なのか売り方の買い戻しなのかをこの図から見分けることはできません。
色は 13 段階あり、しきい値は固定のパーセンテージではありません。想定年率ボラティリティを各時間軸に換算し、その 0.5・1・1.5・2・2.5・3 倍で段階を区切り、3 倍を超えると一律で最も濃い色になります。したがって列ごとに実際のしきい値が異なります。
| 時間軸 | 最も薄い段階の目安 | 最も濃い色(上限)の目安 |
|---|---|---|
| 1 時間 | ±0.4% | ±2.4% |
| 24 時間 | ±2.0% | ±11.8% |
| 7 日 | ±5.2% | ±31.2% |
| 30 日 | ±10.8% | ±64.5% |
| 90 日 | ±18.6% | ±111.7% |
セクター総覧ページのしきい値で、ページ内の定数から換算したものです。計測値ではありません。銘柄ページは想定ボラティリティが大きいため、しきい値は上表の約 1.33 倍となり、同じ上昇幅でも 2 つのページで色の濃さが変わります。
行を横に読むのは、「そのセクターが長さの違う窓のなかで、それぞれの平常時に比べてどれだけ動いたか」を比べることであって、上昇幅の大きさを比べることではありません。
セクター値の材料は 5 分足リターンの合計であり、「現在価格 ÷ N 日前の価格 − 1」ではありません。主要銘柄の短中期ではほぼ一致しますが、長期ではずれが生じ、値動きの荒い小型銘柄の長期では大きく歪みます。
2026-09-15 16:15 UTC の実測では、主要銘柄の差は 1〜2 パーセントポイントでした。
| セル | 表示値 | 実際のリターン | 差(実際 − 表示) |
|---|---|---|---|
| BTC 90 日 | +16.40% | +15.88% | −0.52pp |
| BTC 30 日 | +19.44% | +20.64% | +1.20pp |
ところが同じ時点で、ある小型銘柄の 90 日のセルは −390% と算出されました。実際のリターンが −100% を下回ることはありえません。これが、荒い値動きの長い窓で合計を取ったときに生じる歪みです。
実務上の影響は二つあります。一つは、色が想定ボラティリティの 3 倍で上限に達するため、ヒートマップ上では歪みが見えないこと。もう一つは、歪んだ銘柄がそれなりのウェイトを持つと、その歪みがセクター平均にそのまま持ち込まれることです。
同じ方向に働く効果がもう一つあります。加重に使うのは現時点の建玉価値であり、OI 価値そのものが価格の上下で変動します。直近で大きく上げた銘柄は、同時にウェイトも大きくなります。つまり結果で後から加重していることになり、時間軸が長いほど影響が目立ちます。
ですから長い時間軸の列は、「どのセクターが動いているか」の順位の手がかりとして使い、リターンの数字としては読まないでください。
以下の三つの使い方には、いずれも公式戦略もバックテストもありません。あくまで出発点なので、使うなら自分で検証してください。データは GET /sector_rotation/get_overview_data から取得し(API プランが必要)、各セクターの 7 つの時間軸の騰落と構成銘柄の一覧が返ります。
ヒートマップはセクターが上げていることを示し、銘柄ページは構成銘柄のうち何割が上げているかを示します。「セクターがプラス」と「構成銘柄の過半数がプラス」を二つの条件にすれば、主力銘柄だけが強いケースを除けます。
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"
# セクターの 24 時間はプラスか
sector_up = s["data"][tf]["pct_change"] > 0
# 構成銘柄のうちプラスの割合(広がり)
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)) # 緑でも広がり 0.3 → 主力銘柄だけ
あるセクターが 30 日では赤、24 時間では緑という形は、「出遅れセクターが動き始めた」ときの一つの形です。逆に 30 日が濃い緑で 24 時間が赤なら、強かったセクターが冷めつつある形です。これは読み方の仮説であってルールではありません。前節の歪みにも注意してください。30 日以上の数字は順位付けにのみ使いましょう。
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: # 長期は出遅れ、短期は上向き
rows.append((name, short, long_))
rows.sort(key=lambda x: -x[1])
print(rows[:5])
すでに単一銘柄で動かしている戦略があるなら、「その銘柄が属するセクターの短期がプラス」という条件を加え、セクターが同じ向きのときだけエントリーシグナルを受け入れる、という使い方ができます。元の戦略の売買ロジックは変えず、取引回数を減らすだけです。それが割に合うかどうかは自分のバックテストで比べる必要があり、フィルターを足せば良くなると決めつけてはいけません。同じ種類のフィルターには市場センチメントもあります。こちらは一群の銘柄の相対的な強弱ではなく、単一銘柄の指数に対するプレミアムを見ます。
def sector_ok(sectors, token, tf="8h"):
# 1 銘柄が複数セクターに属しうる。いずれかがプラスなら通過
for s in sectors.values():
if token in s["symbols"] and s["data"][tf]["pct_change"] > 0:
return True
return False
| 時間軸 | 向いている用途 | 注意点 |
|---|---|---|
| 1 時間・8 時間 | 当日のローテーション、イベント後の反応 | スナップショットは 1 時間ごとの更新なので、1 時間の列は最大で約 1 時間遅れます。リアルタイム相場ではありません |
| 24 時間・3 日 | 日中からスイングまでの強弱の順位付け | 最も実用的な範囲。この長さなら歪みはまだ小さい |
| 7 日・30 日 | 中期トレンド、セクターの相対的な位置 | 合計による歪みが出始める。順位付けに使う |
| 90 日 | 長期テーマ | 歪みが最も大きく、ウェイトも今日の OI。リターンとして読まないこと |
本記事の例が 24 時間と 8 時間を使うのは、この二つの列の数字が実際のリターンに最も近く、実際に保有する期間とも対応しやすいからです。
履歴ページ(セクター累積リターンの 1 年折れ線)は、また別の計算です。日次リターンを複利で積み上げ、1 年分の線すべてに今日の OI ウェイトを使い、構成銘柄は現在も存在する銘柄のみ(上場廃止銘柄は線の全期間で不在)、上場前の日は 0% リターンとして扱います。そのため新しいセクターの前半は横ばいの直線になります。たとえばトークン化米国株のセクターは、2026 年初より前のデータがほとんどありません。これは「セクター間の相対的な動き」として読み、当時実際に取れた成績としては読まないでください。
以下は組み合わせの考え方で、検証済みの結論ではありません。
| 組み合わせ | 理由 |
|---|---|
| セクターローテーション + ホエールハンター | セクターはどの一群が動いているかを示します。ホエールハンターで個別銘柄の建玉と出来高が異常に膨らんでいないかを確認しましょう。 |
| セクターローテーション + 市場センチメント | セクターは一群の銘柄の相対的な強弱、市場センチメントは単一銘柄の指数に対するプレミアムで、見ているものが違います。 |
| セクターローテーション + 清算 | セクターが短時間で赤に転じたときは、清算指標で強制決済が絡んでいたかを確認できます。 |