← 返回 Quant Digests · 站点首页

别把 YoloBotV2 只读成“大而全 perp bot”:对 short-cycle desk,更该先测的是「crowded-long fragility × liquidation-unwind continuation」这条 raw alpha

更新时间:2026-04-13 19:17 UTC 研究时间:2026-04-13 19:13 UTC 类型:2026 GitHub repo source audit(`backend/core/fragility.py` + `backend/core/cascade_engine.py` + `backend/core/factor_scoring.py`)+ Binance USDⓈ-M `15m` public-data portability probe 主题标签:raw-alpha/event-driven/positioning/fragility/liquidation/cascade/crowding/funding/open-interest/top-trader/continuation/exhaustion/bounce/btc/eth/sol/binance-perpetual/15m/5m/repo/public-data/cost/risk 证据类型:源码规则 + 一个月公共数据 portability probe + desk-level strategy reframing

源文件:research/quant_digests/2026-04-13_1913_crowdedlong-fragility-cascade-alpha.md

1. 先把一句话说清楚:这篇东西的 base alpha 是什么?

> base alpha = crowded-long fragility → liquidation-unwind continuation。

不是“funding 高了就空”。 也不是“OI 高了就危险”。 更不是把 fragility 当成一个抽象风险分数挂在看板上。

这份 repo 真正适合 desk 拆出来的,是一条 事件驱动 raw alpha

  1. 先识别哪一边拥挤而脆弱;
  2. 再等第一脚 against-crowd move 把 forced unwind 真正打出来;
  3. Phase B 先做顺着清算方向的 continuation;
  4. Phase C / D 再考虑 exhaustion 和反打 bounce。

翻成人话:

2. 这次看了什么

主来源(repo)

本轮直接审的关键文件

本轮自建 probe 产物

3. 一句话核心结论 + 一句话证明方式

一句话核心结论

> 这份 repo 表面看像“多策略 perp bot 拼装体”,但真正值得 desk 收下的,是 fragility score → cascade state machine 这条两阶段 event-driven raw alpha 壳;第一阶段先做 crowded-side unwind continuation,第二阶段再做 exhaustion bounce。

一句话证明方式

> 证明不靠 README 口号,而靠源码结构本身:fragility.py 先把拥挤/脆弱方向状态化,cascade_engine.py 再把 Phase A/B/C/D/E 串成完整交易生命周期;我再用 Binance 公共 funding + OI + top-trader ratio + 15m return 做一个公开 proxy,得到 BTC/ETH 核心 lane 在近一个月 12 个事件里,事件后 15m 平均空头收益 +5.96 bps、事件后 60m 平均空头收益 +14.29 bps

4. 为什么这轮值得写,而不是继续补又一个 pairs / basis / OFI 题

因为它补的是当前池子里相对少的一类:

  1. 它不是纯 overlay。
  1. 它不是 funding alpha 的重复翻版。
  1. 它对 5m/15m desk 很自然。

5. repo 真正提供了什么

5.1 fragility.py:不是温度计,而是“哪边先爆”的 pre-entry gate

compute_fragility_score() 把 7 类因子揉成一个 0~100 的脆弱度分数,并同时给出 fragile_direction

  1. OI percentile(最高给 20 分)
  2. Funding velocity / squeeze risk(最高给 15 分)
  3. CVD divergence(最高给 15 分)
  4. Bid depth decay(最高给 10 分)
  5. Orderbook imbalance trend(最高给 10 分)
  6. Whale pulse(最高给 5 分)
  7. Volume climax(最高给 5 分)

分层阈值:

关键不在“分数高低”,而在: > repo 明确在问“现在更脆的是多头还是空头”。

这就已经不是 generic risk overlay 语言了,而是 交易方向 admission 语言

5.2 factor_scoring.py:fragility 是刻意放在主方向投票之外的

这个文件很重要,因为它明确把系统拆成两层:

翻成人话:

对 desk 来说,这个拆法非常有价值,因为它允许你:

5.3 cascade_engine.py:真正有价值的是 5-phase 生命周期,不是一个静态信号

repo 把 cascade 写成了一个状态机:

其中最有用的是 Phase B/C/D:

Phase B:顺着 forced unwind 做 continuation

repo 注释里直接写了:

如果脆弱的是多头,Phase B 的第一反应就是: > 顺着下跌方向继续做。

这就是本轮认为最该先测的 raw alpha leg。

Phase C:exhaustion 不是拍脑袋,而是 7 选 4

源码里写的 7 个 exhaustion signal 包括:

  1. CVD reversal
  2. Volume climax
  3. Bid depth recovering
  4. Funding stabilized
  5. 15m RSI extreme
  6. Price stabilizing
  7. Minimum cascade duration > 30 min

这很像 desk 会接受的结构:

Phase D:bounce 触发比“抄底”严格得多

repo 不是说一看到跌狠了就反手, 而是要求:

也就是说: > repo 里真正可以迁移的不是“逢暴跌抄底”,而是“先做瀑布延续,再等结构 reclaim 做 bounce”。

6. 我做的 Binance public-data portability probe:先测 continuation leg,不先赌 bounce

6.1 为什么只能做 proxy,而不是 1:1 复刻 repo

repo 的完整 fragility 需要:

这些并不都能用一组简单公共历史接口无损复原。

所以本轮只做一个 公开、低门槛、最小可复现 proxy,专门近似 repo 的“多头脆弱并开始被打”这条支路:

翻成人话: > 先要求 crowding 明确存在,再要求“价格跌 + OI 掉”这脚 liquidation-style unwind 已经开始。

6.2 数据与口径

6.3 先记最重要的 5 个数

数 1:BTC 这条腿是最干净的

BTCUSDT

这说明: > 至少在 BTC 上,“crowded long + down bar + OI flush” 更像 cascade 开始,而不是已经跌完。

数 2:ETH 也偏正,但没 BTC 干净

ETHUSDT

翻成人话:

数 3:BTC+ETH 核心 lane 合并后仍是正的

BTC + ETH 合并看:

这很像一个 desk 可接受的第一版结论: > 先别把它当“全市场全币通用”;但在 BTC/ETH 主流 perp 上,已经值得继续做第二轮更细的分层实验。

数 4:SOL 太 sparse,不能现在就宣布可迁移

SOLUSDT

这个结果最合理的读法不是“SOL 也行”,而是: > SOL 当前样本太少,暂时更像需要单独分 asset behavior 的第二阶段对象。

数 5:这条线更像 60m 内 drift,而不是单根秒杀型信号

三资产合并:

这意味着:

7. 这条线对 short-cycle desk 的正确读法

7.1 它是 raw alpha,不是 regime/filter/overlay

因为它已经能独立回答:

所以它不是“给别的 alpha 加一层 veto”那么简单。 它本身就是: > event-driven liquidation-continuation raw alpha

7.2 但它天然是“两段式”而不是“一把梭”

不要把 repo 读成一个单点信号。 更准确的 desk 拆法是:

  1. Continuation leg(优先)
  1. Bounce leg(次优先)

当前阶段,显然应先做第 1 条。

7.3 最像怎样的完整策略壳?

第一版 desk shell 我会这样写:

Admission(15m)

满足以下同时成立时,允许开空:

Entry(5m child)

Exit

优先级:

  1. 60m hard timer
  2. 价格重新站回事件 VWAP / 事件 K 中位之上
  3. OI 停止继续下掉,且下一根出现明显反包

Sizing

Cost

8. 这条线现在最大的风险是什么

风险 1:公共 proxy 只近似了 repo 的一半

当前 probe 没有复刻:

所以当前结果更像: > 证明“这条原理值得测”,还不是证明“repo 全状态机已经可直接照抄上线”。

风险 2:极端暴跌日容易把“已经跌完”混进来

明细里能看到某些 2026-03-16 的 BTC/ETH 事件, 事件后下一根并没有继续下,而是直接反抽。

这说明需要再加一层:

换句话说:

风险 3:不同资产的 phase 长度并不一致

所以不要一开始就做“统一阈值全市场广播”。

9. 下一步怎么测(必须项)

9.1 先把 Phase B continuation 和 Phase D bounce 分开做标签

下一轮不要再把所有事件揉在一起。 至少拆成两套 label:

  1. Continuation label
  1. Exhaustion/bounce label

9.2 用更多公共因子逼近 repo 原版 fragility

下一轮建议补进:

目标不是炫技,而是把 repo 里 7 因子中的至少 5 个,用公共接口近似出来。

9.3 先只做 BTC/ETH,不急着推全市场

第一轮正式回测建议:

9.4 加一个“尾声 veto”

最应该马上补的不是更多 fancy features, 而是一个简单 veto:

> 若事件 bar 的 vol_z 已经极端高,且下一根出现 OI 不再继续下掉,则不追 continuation,改等 bounce。

这一步很可能直接决定这条线能不能从“研究有趣”变成“实盘可做”。

10. 最后的 desk 结论

如果只问一句“这轮该不该进素材池”,我的答案是:该,而且优先级不低。

但要把结论说准:

> 应进入素材池的,不是“YoloBotV2 全家桶”,而是其中 crowded-side fragility → unwind continuation → exhaustion reclaim 这条事件状态机。当前最值得先做的 leg 是 BTC/ETH 上的 continuation short;bounce leg 留到第二轮。

一句话落地: > 先把它当成 15m 事件 admission、5m 子执行的 liquidation-continuation raw alpha 去测;不要一上来就把它写成万能风险面板,也不要急着先赌末端反转。