未決済建玉の異常を読み、よくある誤読を避け、公式戦略の逆張りの使い方を知る。
概要ページで大きなブロックが光ったら、大口がロングで参入している合図でしょうか。ホエールハンターが教えてくれるのは、未決済建玉と出来高が「どれだけ異常に動いたか」です。方向は別に判断する必要があり、ここが最も読み違えやすいポイントです。
ホエールハンター(Whale Hunter、WH)は Blave のポジション変化指標です。Binance USDT 建て無期限先物の 5 分ごとの未決済建玉(Open Interest、OI)の変化と出来高を、選んだ時間窓(timeframe)で合計し、その銘柄の直近 30 日に対する z スコアに換算します。スコアは二種類あります。
| スコア | 何を合計するか | 読み方 |
|---|---|---|
score_oi | 時間窓内の OI の純変化(コイン建て) | 正=その期間の OI 変化が直近 30 日平均より大きい(通常は純増)。負=平均より小さい(通常は純減) |
score_volume | 時間窓内の出来高合計(コイン建て)。出来高の水準であり、変化ではありません | 正=直近 30 日より活発。負=直近 30 日より閑散で、出来高が減っているという意味ではありません |
z スコアなので数値に上限・下限はなく、全銘柄を同じ尺度で比べられます。ただし「高い」は常にその銘柄自身の直近 30 日との比較です。長期間 OI が増え続けている銘柄は、自分の平均に吸収されて z 値が小さくなります。Studio のステータスバッジは次のしきい値で分類されます(score_oi の例)。
| 数値 | Studio のバッジ | 意味 |
|---|---|---|
| ≥ +3 | 過度な増加 | OI の純増が直近 30 日の平常時を大きく上回る極端な値 |
| +2 ~ +3 | 大幅増加 | OI の純増が平常時を明確に上回る |
| +0.5 ~ +2 | 増加 | OI の純増が平常時を上回る |
| −0.5 ~ +0.5 | ラベルなし | 直近 30 日の平常時とほぼ同じ |
| ≤ −0.5 | 減少/大幅減少/過度な減少 | 正の側と対称で、しきい値は −0.5、−2、−3。OI の純減(手仕舞い)が平常時より大きい |
ホエールハンターの正負は、OI や出来高の変化がどれだけ異常かを示すだけで、方向は含みません。OI の増加は新しいポジションが建てられたことを意味しますが、それはロングかもしれないしショートかもしれません。方向を判断するには価格を見るか、保有集中度のような方向性のある指標と組み合わせます。
名前の「ホエール(クジラ)」は比喩です。データは Binance 無期限先物の市場全体の合計で、個別の口座は見えず、少数の大口なのか多数の個人なのかは区別できません。他の取引所のポジション変化も含まれていません。
score_oi が −0.7 を下回ったとき(OI が異常なほど大量に手仕舞われたとき)にロングし、0.2 以上に戻ったら手仕舞います。ロングのみです。Blave 戦略ライブラリに表示されているバックテスト(2023-01-01〜2026-07-13、片道手数料 0.05%):総リターン 268.17%、シャープレシオ 1.46、最大ドローダウン −22.5%、MCPT 有意性検定 p = 0.005。反対に「大きなブロックを見たら追いかける」使い方には、現時点で検証済みの戦略がありません。以下の三つの使い方のうち、掲載済みでチェックを通過した公式戦略に対応するのは一つ目だけです。残りの二つは組み合わせの考え方を示したもので、バックテストはしていません。しきい値は必ず自分で検証してください。
ロジックはシンプルです。24h 窓の OI の純減が異常な水準(score_oi < −0.7)になったら、その期間に大量のポジションが決済されたということです。戦略はそこでロングし、スコアが 0.2 以上に戻ったら手仕舞いしてノーポジションにします。これが公式戦略 btc_whale_1h のシグナル関数です。
ENTRY_TH = -0.7
EXIT_TH = 0.2
def compute_signals(df, entry_th=ENTRY_TH, exit_th=EXIT_TH):
# df['WH'] = BTCUSDT の 24h score_oi、1h 足ごとに読む
signal = pd.Series(np.nan, index=df.index)
signal[df['WH'] < entry_th] = 1.0 # OI が異常に手仕舞われた → ロング
signal[df['WH'] > exit_th] = 0.0 # スコアが平常化 → ノーポジション
return signal
ENTRY_TH = -0.7 と EXIT_TH = 0.2 はパラメータスキャンで見つけた高原(プラトー)の値で、当て推量ではありません。エントリーしきい値 −1.3〜−0.6、エグジットしきい値 0.0〜0.3 はいずれも頑健な領域に入り、プラトーのシャープレシオは選んだパラメータ点のシャープレシオの 0.884 倍です。
Blave のサイト内速報はこの条件を使っています。1h 窓の score_oi と score_volume がともに 2 を超えると「未決済建玉と出来高が大幅に上昇」と通知されます。「この銘柄で何かが起きている」ことを見つけるスクリーニング条件に向いています。
oi = fetch_whale_hunter(SYMBOL, INTERVAL, START, END, hdrs,
timeframe='1h', score_type='score_oi')
vol = fetch_whale_hunter(SYMBOL, INTERVAL, START, END, hdrs,
timeframe='1h', score_type='score_volume')
# 両スコアが同時に > 2:サイト内速報と同じ条件
active = (oi['alpha'] > 2) & (vol['alpha'] > 2)
これはスクリーニングであって、エントリーシグナルではありません。方向は分からず、バックテストもありません。戦略に組み込むなら、少なくとも方向の判断を一つ加え、自分でバックテストしてください。
WH には方向がないので、「異常が起きているか」は WH に任せ、エントリーするかどうかは方向指標(たとえば保有集中度)に決めさせるのが自然な組み合わせです。以下は構造の例で、compute_direction_filter は自分の方向条件に置き換えてください。
wh_active = df['WH'] > 2 direction_ok = compute_direction_filter(df) # 例:保有集中度の条件 signal = pd.Series(np.nan, index=df.index) signal[wh_active & direction_ok] = 1.0 signal[~wh_active] = 0.0
この組み合わせはバックテストしておらず、しきい値 2 はサイト内速報の数字を借りただけです。実際に使う前にパラメータをスキャンし、手数料控除後の成績を確認してください。
WH には混同しやすい設定が二つあります。timeframe は OI 変化や出来高を合計する窓で、15min、1h、4h、8h、24h、3d から選べ、既定は 24h と score_oi です。足の周期(Studio チャートの 5min〜1d、戦略の interval)は、数値をどれくらいの頻度で読むかを決めるだけです。公式戦略は 1h 足で 24h 窓のスコアを読んでいます。
| timeframe | 一つの値が表すもの | 注意 |
|---|---|---|
15min / 1h | 直近 15 分または 1 時間の OI 変化/出来高 | 窓が短いので 24h のしきい値は流用せず、別途スキャンする |
4h / 8h | 直近 4 時間または 8 時間の変化 | 短い窓と日次の中間。しきい値は同じく自分でスキャンする |
24h | 直近 24 時間の変化 | 既定値。公式戦略 BTC ホエールハンター逆張りが使う窓 |
3d | 直近 3 日間の変化 | 最も長い窓。一度の大きな建玉増加が 3 日間数値に残る |
Blave が 2024-09〜2026-09 の BTC、ETH、1000PEPE を実測したところ、デフォルトの 24h 窓では OI スコアの 1/99 パーセンタイルは約 −2.6/+3、極値は約 ±10 でした。窓が短いほど裾は厚くなり、1h ではすでに ±20 を超えます。出来高スコアは右に偏っており(負の値が −2 を下回ることはまれ)、OI スコアの対称なしきい値はそのまま使えません。しきい値は設定をまたいで共用できません。timeframe や銘柄を変えたら再スキャンしてください。−0.7 を別の設定にそのまま当てはめないでください。
| ページ | 表示内容 |
|---|---|
| 概要 | ブロックのヒートマップ。timeframe と「OI の変化/出来高の変化」を切り替えられ、値が 0 より大きい上位 30 銘柄を、値に比例した面積で大きい順に並べます。色は同じ窓での価格の騰落です。 |
| 履歴 | 単一銘柄の WH の棒グラフを価格に重ねて表示。timeframe、スコアの種類、チャート周期を選べ、stat フィールドも表示されます。 |
| 散布図(Pro) | 全銘柄の最新スナップショット。横軸が OI スコア、縦軸が出来高スコアで、ゼロの補助線だけがあり象限の名称はありません。下半分は出来高が直近 30 日より閑散という意味で、出来高が減っているわけではありません。 |
以下は組み合わせの考え方で、検証済みの結論ではありません。
| 組み合わせ | 目的 |
|---|---|
| WH + 保有集中度 | WH でポジションに異常な変化がある銘柄を見つけ、保有集中度でそのポジションがロング寄りかショート寄りかを判断する手がかりにします。 |
| WH + テイカー強度 | OI が大きく減ったとき、同じ時間帯の積極的な売買をテイカー強度で確認し、清算を伴っていたかを見分ける手がかりにします。 |
API エンドポイントは GET /whale_hunter/get_alpha で、パラメータは symbol、period、timeframe(既定 24h)、score_type(score_oi または score_volume)と開始・終了日です。Blave Agent では fetch_whale_hunter が対応します。返されるのは確定済みの足だけで、開始日を指定しなければ直近 365 日、365 日を超える期間は自動で切り詰められます。履歴は 2021-12-01(または上場時)からです。レスポンスには最新の値を説明する stat オブジェクトが一つ付きますが、名前と中身は完全には一致しません。
| フィールド | 実際の計算 |
|---|---|
up_prob | 直近 365 日のデータで学習したロジスティック回帰モデルが、WH から 24 時間後の上昇・下落を予測し、上昇する確率を出したもの。学習データに現在の期間が含まれるため、サンプル内の推定値であり、サンプル外の勝率ではありません。 |
avg_up_return /avg_down_return | 直近 365 日で「24 時間後に上昇/下落」したすべての時点の平均リターン。WH の水準は区別しません。 |
exp_value | up_prob × avg_up_return +(1 − up_prob)× avg_down_return。小数であり、パーセントではありません。 |
is_data_sufficient | その銘柄のデータが 365 日より前から存在するかどうか。「この水準のサンプルが十分か」ではありません。 |
stat もサンプル内の推定です。どのしきい値も自分のバックテストで検証してください。