看懂未平倉量異動、避開最常見的誤讀,以及官方策略怎麼反向用它。
總覽頁上一塊大方塊亮起來,代表巨鯨正在進場做多嗎?巨鯨警報告訴你的是未平倉量與成交量「動得有多反常」,方向得另外判斷——這也是最多人讀錯的地方。
巨鯨警報(Whale Hunter,WH)是 Blave 的持倉異動指標:把 Binance USDT 本位永續合約每 5 分鐘的未平倉量(Open Interest,OI)變化與成交量,在你選的時間窗口(timeframe)內加總,再換算成相對該幣近 30 天的 z-score。它有兩種分數:
| 分數 | 算的是什麼 | 怎麼讀 |
|---|---|---|
score_oi | 窗口內 OI 的淨變化(以幣計) | 正值=這段期間的 OI 變化高於近 30 天平均,通常是淨增加;負值=低於平均,通常是淨減少 |
score_volume | 窗口內的成交量加總(以幣計)——是量的水位,不是量的變化 | 正值=比近 30 天熱絡;負值=比近 30 天冷清,不代表量正在減少 |
因為是 z-score,數值沒有上下限,各幣種能放在同一把尺上比較;但「高」永遠是相對自己近 30 天——一個長期持續增倉的幣,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%、Sharpe 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 K 線讀一次
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 之間都落在穩健區,平坦區 Sharpe 是所選參數點 Sharpe 的 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 不帶方向,自然的組合是讓它負責「有沒有異動」,再交給方向指標(例如籌碼集中度)決定要不要進場。以下是結構示意,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;K 線週期(Studio 圖表的 5min~1d、策略的 interval)只決定多久讀一次數值。官方策略就是用 1h K 線讀 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 窗口計,未平倉量分數的第 1/99 百分位約 −2.6/+3,極值約 ±10;窗口越短尾巴越肥,1h 已可達 ±20 以上。成交量分數偏右(負值很少低於 −2),不能照搬未平倉量的對稱門檻。門檻不能跨設定共用:換 timeframe 或幣種都要重新掃描,別把 −0.7 直接套到別的設定上。
| 頁面 | 看什麼 |
|---|---|
| 總覽 | 方塊熱圖:可切 timeframe 與「未平倉量變化/交易量變化」,取數值大於 0 的前 30 名,方塊面積與數值成比例、由大到小排列;顏色是同一窗口內的價格漲跌。 |
| 歷史 | 單一幣種的 WH 柱狀圖疊上價格,可選 timeframe、分數類型與圖表週期,並附 stat 欄位。 |
| 分佈(Pro) | 所有幣種的最新快照:橫軸是 OI 分數、縱軸是成交量分數,只畫零軸線、沒有象限分類。下半部代表成交量比近 30 天冷清,不是量在下降。 |
以下是組合思路,不是驗證過的結論:
API 端點是 GET /whale_hunter/get_alpha,參數有 symbol、period、timeframe(預設 24h)、score_type(score_oi 或 score_volume)與起訖日期;Blave Agent 裡對應 fetch_whale_hunter。只回傳已收盤的 K 線;沒給起始日時預設抓最近 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 也是樣本內的估計——任何門檻都要用你自己的回測驗證。