← 返回 Quant Digests · 站点首页

别把这份今天刚创建的 order-book notebook 只读成数据体操:对 short-cycle desk,更该先测的是「top20 depth imbalance × tight-spread continuation」这条 microstructure raw alpha

更新时间:2026-04-05 00:59 UTC 类型:2026 GitHub 新 repo source audit(GitHub API metadata + `order_book_extensive_analysis.ipynb` 存档输出)+ Bybit 公共 orderbook 文档 主题标签:raw-alpha/microstructure/order-book-imbalance/depth-imbalance/top20/tight-spread/continuation/event-time/bybit/btcusdt/1m/3m/5m/15m/repo/public-data/cost/risk 证据类型:repo notebook 内置单日样本统计与信号分层输出;目前不是多日 walk-forward,但已经足够做最小复现

源文件:research/quant_digests/2026-04-05_0059_top20-depth-imbalance-tightspread-continuation-alpha.md

1. 先回答一句:base alpha 是什么?

base alpha = 当买盘深度显著大于卖盘深度时,未来几秒 / 几十个事件的 mid-price 更容易继续上漂;当卖盘深度显著占优时,未来 mid-price 更容易继续下滑。

这不是:

它更像是:

> 盘口库存不平衡 → 极短窗口价格发现继续沿失衡方向推进。

所以它属于很纯的 microstructure raw alpha

2. 为什么这轮值得选它?

结合最近 digest 进展,当前池子里已经有不少:

这轮更值得补的,反而是一个更底层、也更“快”的原型:

> book-depth 失衡本身能不能当 raw alpha?

原因很简单:

对 short-cycle desk 来说,这类材料的价值很高: 哪怕最后独立 taker 策略不赚钱,它也很可能成为别的 alpha 的 shared trigger。

3. 这份 repo 到底提供了什么?

主材料来自今天刚创建的 GitHub repo:

repo 很小,核心几乎都在一个 notebook 里,但信息密度够高:

同时 Bybit 官方文档也说明:

所以这条线的最大优点是: 不是私有数据故事,而是真能拿公开流快速复现。

4. notebook 里最值钱的证据,不是图,而是这几组数

4.1 样本本身足够密:24 小时、42.4 万条 level-200 消息

notebook 存档输出给出的基础统计:

这意味着平均节奏大约是:

4.2 盘口失衡不是噪声:imbalance_top20 分布很宽

notebook 描述统计:

翻成人话:

4.3 最关键:imbalance decile 与未来收益基本单调

50-event forward return(单位:bps)里,decile 结果非常干净:

也就是说:

> 从最偏卖压到最偏买压,50-event 的 extreme-decile spread 大约是 0.5285 bps。

200-event 更明显:

这条单调性是这轮最值钱的东西。 它说明这不是“只在极端点偶然有点 edge”,而是: 失衡越偏向 bid,未来 drift 越偏正;越偏向 ask,未来 drift 越偏负。

4.4 它不是只存在于 event-time 幻觉里:秒级读数也保留同方向关系

1s forward return:

2s forward return:

这很重要,因为很多 event-time alpha 会被吐槽成: “只是消息更密的时候更容易看到更多更新,不是真正的 wall-clock 可交易信号。”

但这里至少从 notebook 存档结果看,转成 1 秒 / 2 秒后,方向关系还在。

当然,边际也立刻暴露了:

4.5 tight spread 才是更好的土壤

repo 的 spread-regime 分层也很有用。 在 50-event horizon 下,decile10-minus-decile1 的极值差:

这句话非常 desk-friendly:

> 不是 spread 越宽 edge 越大;恰恰相反,盘口健康、价差紧的时候,这条 depth-imbalance continuation 更干净。

这给了一个明确的执行含义:

5. 对 short-cycle desk,应该怎么读它?

5.1 它首先服务 1m / 3m,不是天然服务 15m

最诚实的读法是:

所以不要误读成: “又发现了一条可以直接在 15m bar close 上做多做空的主信号。”

不是。 它更像是一个 micro alpha primitive

5.2 这条线最可能先在哪些标的活下来?

优先级我会放在:

  1. BTCUSDT perp
  2. ETHUSDT perp
  3. SOLUSDT perp(但更容易受冲击成本和假深度影响)

不建议一开始就全市场扩散,原因是:

6. desk 版完整策略壳:可以直接写最小回测

6.1 Universe

第一版只做:

如果只拿到 Binance 的浅层书,也可以先做粗版; 但若要贴近 source,最好优先用 Bybit level-200

6.2 Signal

最小实现直接照 source:

``text imbalance_top20 = (sum_bid_qty_top20 - sum_ask_qty_top20) / (sum_bid_qty_top20 + sum_ask_qty_top20) ``

然后做两种版本:

版本 A:原生秒级 continuation

版本 B:映射到 1m / 3m

把秒级信号聚合成 bar 内得分:

``text obi_score_1m = mean(last 30~60s imbalance_top20) obi_persist = pct(last 30~60s snapshots with decile in top/bottom 20%) ``

这一步的核心不是换 fancy 模型,而是把瞬时盘口倾斜变成可执行的 bar 内累计压力

6.3 Entry / Exit

纯秒级版

  1. 固定持有 1s / 2s / 5s 三档做对照;
  2. 或持有 10 / 50 / 200 events
  3. 若出现反向 decile(如从 9/10 掉到 1/2)则提前离场;
  4. 若 spread 从 tight 突然切到 wide,则直接 flatten。

1m / 3m 映射版

6.4 Sizing

因为毛 edge 很薄, sizing 必须保守:

更直白一点: 先验证信号,不要一上来把容量幻想写太满。

6.5 Risk / Cost

这里必须泼冷水:

这意味着:

  1. maker skew / quote leaning:根据 OBI 调整挂单偏向;
  2. 已有主策略的入场确认:只有当 OBI 与主方向一致才放行;
  3. taker but only on fee-favorable / internalized / VIP execution path

建议在回测里至少分 3 档成本:

如果只有第一档活,那就别把它包装成独立 taker alpha, 而应老老实实归类成: microstructure directional primitive + execution layer

7. 这条线最容易犯的错

错法 1:把“方向单调”误读成“可直接市价扫单”

source 给出的统计最漂亮的地方,是 decile 单调。 但这不等于:

这类 alpha 最常见的死法,就是信号正确,但执行方式错误

错法 2:把它硬拉长到 15m 主信号

这条线最强的证据是秒级 / event-time。 你当然可以聚合成 1m / 3m, 但如果一路硬压成 15m 主因子,很可能会被:

错法 3:只看 BTC 一天样本就宣称“稳了”

目前 source 的短板也要写清楚:

所以它现在的地位应该是: 高质量 intake 候选,不是已验证生产因子。

8. 当前最诚实的 verdict

Verdict:值得进 raw alpha 池,而且优先级不低。

原因不是“它已经证明可以独立赚钱”,而是:

  1. base alpha 很清楚:depth imbalance → same-direction drift;
  2. source 直接可复现:公开 book feed + 明确特征公式;
  3. 和当前 desk 目标高度匹配:更适合 1m / 3m 的高强度 alpha;
  4. 即便独立 taker 不活,也很可能作为 shared gate / maker skew 非常有价值。

如果让我给一个更务实的定位:

> 它首先是一个值得进池的 microstructure raw alpha;其次才是一个待验证的独立策略。

9. 下一步怎么测(直接排最小实验)

实验 A:复刻 source 的最小事实,不要先做 fancy execution

目标:先确认关系是否存在。

数据:

输出:

判定标准:

实验 B:从“单点失衡”变成“可执行持久失衡”

把信号改成 persistence 版本:

``text persist_long = pct(last 20~50 snapshots with imbalance_decile >= 9) persist_short = pct(last 20~50 snapshots with imbalance_decile <= 2) ``

比较:

目标: 找出最不容易被噪声翻面的版本。

实验 C:跨资产移植,但先只测最厚的两三个品种

标的:

不要急着上全市场。 先看:

实验 D:成本敏感性必须单列,不要混在总回测里

至少跑 3 套:

  1. post-only maker first
  2. blended execution
  3. pure taker

然后输出:

目标不是把曲线做漂亮, 而是先回答一句:

> 这条线到底是独立 alpha,还是 execution primitive?

10. 与当前 1m / 3m / 5m / 15m 框架的关系

换句话说:

> 这条线不是要取代 5m/15m 主策略,而是给更快层提供一个可复现的 microstructure 原件。

11. 来源与链接

  1. Starkl7 (2026). _Crypto-OrderBook-Imbalance_. GitHub repository.
  2. Repo URL: <https://github.com/Starkl7/Crypto-OrderBook-Imbalance> GitHub API metadata: <https://api.github.com/repos/Starkl7/Crypto-OrderBook-Imbalance>

  1. Starkl7 (2026). _order_book_extensive_analysis.ipynb_.
  2. Raw notebook: <https://raw.githubusercontent.com/Starkl7/Crypto-OrderBook-Imbalance/main/order_book_extensive_analysis.ipynb>

  1. Bybit API Documentation — Orderbook WebSocket (public).
  2. Readable URL: <https://bybit-exchange.github.io/docs/v5/websocket/public/orderbook>

---

一句话结论: 这轮最该 intake 的,不是“又一个 OBI 概念”,而是前 20 档深度失衡在 tight spread 下能否稳定转成 1m/3m 可执行 continuation alpha;如果独立 taker 不活,它也大概率值得留下来做 shared microstructure gate。