看懂未平仓量异动、避开最常见的误读,以及官方策略怎么反向用它。
总览页上一个大方块亮起来,代表巨鲸正在进场做多吗?巨鲸警报告诉你的是未平仓量与成交量「动得有多反常」,方向要另外判断——这也是最多人读错的地方。
巨鲸警报(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 也是样本内的估计——任何阈值都要用你自己的回测验证。