读懂爆仓指标的正负号与分布,避开两个常见误读,再放进策略。
急跌之后,爆仓历史上出现一根很深的负柱——是很多多单被强平,还是这个币的数值本来就常偏负?爆仓指标只读 Binance、0 也不是平衡点,这两点决定你怎么读这根柱子。如果你看的是价位上的爆仓地图,那是另一套模型估算,见爆仓地图怎么读。
爆仓指标是衡量一段时间内空单与多单哪一边被强平得多的标准化数值,只用 Binance 的公开强平推送。爆仓是杠杆仓位被交易所强制平仓:多单被强平时交易所送出卖单,空单被强平时送出买单。Blave 每 5 分钟把各币种两边的强平数量(币数)累加,再分三步计算:
| 步骤 | 算的是什么 |
|---|---|
| 1. 净爆仓 | 每 5 分钟「空单爆仓量 − 多单爆仓量」,单位是币数,不是美元;没有强平记录的 5 分钟记为 0。 |
| 2. 滚动加总 | 在选定的 timeframe(默认 24h)内加总。 |
| 3. 标准化 | 除以这个加总近 30 天的滚动标准差。分子不减平均,所以它不是标准的 z-score。 |
数值没有上下限,正负号代表哪一边爆得多:
| 数值 | 意思 |
|---|---|
| > 0 | 该 timeframe 内空单爆仓(币数)多于多单 |
| < 0 | 多单爆仓多于空单 |
| ≈ 0 | 两边相抵、那段没有强平记录,或推送中断;不代表这个币的多空平衡 |
分布不对称,下缘(多单爆仓)比上缘深。以下是 Blave 以 Binance 强平推送自算的分位数,1 小时 K 线、timeframe 24h,期间 2024-09-15~2026-09-14,每小时取一个值(n = 17,520):
| 币种 | p1 | p50 | p99 | 大于 0 的时间比例 |
|---|---|---|---|---|
| BTC | −3.76 | −0.01 | +3.31 | 48.8% |
| ETH | −4.07 | −0.08 | +2.79 | 43.1% |
| SOL | −4.01 | −0.17 | +2.87 | 37.6% |
| DOGE | −4.07 | −0.23 | +2.97 | 31.1% |
爆仓总览、爆仓历史与地图页的 24 小时爆仓柱,只吃 Binance 的强平推送。Binance 官方规定每个币种每秒最多推 1 笔,同一秒内的其他强平不会送出,所以这是抽样,大行情时会低估。
单位是币数,不同币的原始爆仓量不能比大小,要跨币比较请看标准化后的数值。推送中断期间,数值会像那段没有爆仓,不会标注缺数据。
数值大于 0 代表空单爆仓多于多单,小于 0 代表多单爆仓多于空单。但标准化时分子不减平均,长期多单爆仓偏多的币,数值会系统性偏负,0 并不是这个币的「平常水平」。
在上面的测量期间(1 小时 K 线、timeframe 24h),数值大于 0 的时间比例见上表。同样是 0,在 BTC 大约是中位数,在 DOGE 已经比多数时候偏向空单爆仓。
目前没有任何官方策略使用爆仓数据,以下三种用法都是示意、未回测。代码里的门槛借用上面量到的分位数当起点,不是参数扫描的结果,实际使用前都要自己回测。
最直接的写法是把数值落在分布两端的时段标出来。因为下缘比上缘深,两边门槛不要用同一个绝对值:以 BTC 为例,p1 约 −3.8、p99 约 +3.3。
LONG_FLUSH_TH = -3.8 # 示意:约 BTC 1h × 24h 的 p1 SHORT_FLUSH_TH = 3.3 # 示意:约 BTC 1h × 24h 的 p99 liq = fetch_liquidation(SYMBOL, INTERVAL, START, END, hdrs, timeframe='24h') df['LIQ'] = liq['alpha'] long_flush = df['LIQ'] <= LONG_FLUSH_TH # 多单集中爆仓 short_flush = df['LIQ'] >= SHORT_FLUSH_TH # 空单集中爆仓
标出来之后怎么交易要自己研究:Blave 没有验证过集中爆仓之后价格会反转还是延续。分位数也因币而异,ETH、SOL、DOGE 的 p1 都比 BTC 深,换币要重算。
因为 0 不是平衡点,「大于 0 就算空单爆仓偏多」这种写法,在 DOGE 这类长期偏负的币上会失真。改用该币自己过去一段期间的分位数当门槛,比较不受长期偏向影响:
# 示意:用过去 180 天的分位数当门槛,窗口长度没有扫描过
lo = df['LIQ'].rolling('180D').quantile(0.01)
hi = df['LIQ'].rolling('180D').quantile(0.99)
extreme = (df['LIQ'] <= lo) | (df['LIQ'] >= hi)
窗口太短,门槛会跟着近期行情漂移;窗口也不要跨进该币数据起点后约 30 天内的预热期(BTC、ETH 是 2023-01-31 以前),那段标准差样本太少,会算出假的极端值。
另一种保守的用法,是把它加在既有策略的进场条件上:数值落在任一端时,先不开新仓。沿用第 1 种用法的两个门槛,compute_entry 换成你原本策略的进场条件:
# 示意:数值落在任一端时不进场 flush = (df['LIQ'] <= LONG_FLUSH_TH) | (df['LIQ'] >= SHORT_FLUSH_TH) entry = compute_entry(df) & ~flush
这个组合没有回测,也没有验证过避开集中爆仓能改善绩效;只是把「刚爆完一波」当成暂停开新仓的条件。
爆仓指标有两个设置:timeframe 是净爆仓的加总窗口,可选 15min、1h、4h、8h、24h、3d,默认 24h;周期(period)决定多久取一次值,可选 5min、15min、1h、4h、8h、1d。数值都先在 5 分钟格上算完,再取每根 K 线的最后一个值。换 timeframe,分布就会变;同一期间改用 timeframe 1h(1 小时 K 线)的测量如下:
| 币种 | p1 | p50 | p99 | 大于 0 的时间比例 |
|---|---|---|---|---|
| BTC | −2.62 | 0.00 | +2.12 | 52.5% |
| ETH | −2.84 | 0.00 | +2.17 | 48.8% |
| SOL | −3.07 | 0.00 | +2.21 | 45.5% |
| DOGE | −3.50 | 0.00 | +2.09 | 40.3% |
跟 24h 比,1h 的两端比较窄,中位数都是 0.00,大于 0 的比例也比较接近一半。所以门槛要跟着 timeframe 重算,不能把一组数字套到另一组;15min、4h、8h、3d 本文没有测量。
| 页面 | 看什么 | 谁能看 |
|---|---|---|
| 爆仓总览 | 下拉切换「空单爆仓」「多单爆仓」两张排行,各取前 30 名。方块大小是数值的绝对值(相对自己近 30 天),不是爆仓金额;颜色是该 timeframe 的价格涨跌。 | 登录 |
| 爆仓历史 | 单一币种的爆仓指标柱状图叠上价格,可选 timeframe 与周期,附 stat 字段。 | 非 Pro 最近 7 天延后显示 |
以下是组合思路,不是验证过的结论:
| 组合 | 用途 |
|---|---|
| 爆仓 + 巨鲸警报 | 用巨鲸警报看未平仓量有没有反常变动,再看同一段爆仓指标落在哪一端,分辨那次变动是否伴随集中强平。 |
| 爆仓 + 多空力道 | 爆仓指标只看被强平的一方,用多空力道看同一段主动买卖的力道,补上自愿交易的那一半。 |
爆仓指标的端点是 GET /liquidation/get_alpha,参数有 symbol、period、timeframe(默认 24h)与起止日期(start_date、end_date);Blave Agent 里对应 fetch_liquidation。只返回已收盘的 K 线,字段是 timestamp、alpha 与 stat,区间超过 1 年会自动截短。最早的币种(BTC、ETH)数据从 2023-01-01 起、之前的数值是 0,其他币种可能更晚;30 天标准差需要预热,比较有意义的数值大约从数据起点 30 天后开始(BTC、ETH 约 2023-01-31)。
get_alpha 的 stat 对象描述最新一笔数值,意思跟名字不完全一样:
| 字段 | 实际算法 |
|---|---|
up_prob | 用近 365 天的数据训练逻辑回归模型,以爆仓指标预测 24 小时后涨跌,输出上涨的概率。训练数据包含当下这段,属样本内估计,不是样本外胜率。 |
avg_up_return /avg_down_return | 近 365 天所有「24 小时后上涨/下跌」时点的平均报酬,不分爆仓指标水位。 |
exp_value | up_prob × avg_up_return +(1 − up_prob)× avg_down_return,是小数,不是百分比。 |
is_data_sufficient | 该币数据是否早于 365 天前就开始,不是「这个水位的样本够不够」。 |
爆仓地图、地图变化与多交易所汇总的端点和栏位,见爆仓地图怎么读。
stat 也是样本内的估计——任何门槛都要用你自己的回测验证。