← 返回 Quant Digests · 站点首页

别把这份 OBI repo 只读成“order book 机器学习”:对 short-cycle desk,更该先测的是「1m signed trade imbalance × 5m forward return × maker-only conviction gate」这条 raw alpha——但 15bps 阈值大概率过高

更新时间:2026-04-04 08:50 UTC 研究时间:**2024-12-01 ~ 2024-12-03 UTC** 类型:2026 GitHub repo source audit(`README.md` + `src/data_integration.py` + `src/feature_engineering.py` + `src/model_training.py` + `src/backtester.py`)+ Binance 公共 aggTrades 最小便携性快检(2024-12-01 ~ 2024-12-03 BTCUSDT) 主题标签:raw-alpha/microstructure/order-flow/signed-trade-imbalance/aggressor-flow/5m-forward-return/maker-only/conviction-threshold/xgboost/binance-spot/btc/1m/3m/5m/15m/repo/public-data/cost/risk 证据类型:repo 源码证据 + 公共数据最小便携性快检

源文件:research/quant_digests/2026-04-04_0849_signed-flow-imbalance-maker-conviction-alpha.md

1. 这次看了什么

这轮我没有继续补 pairs / carry / breakout,而是刻意补一条 更底层的 microstructure raw alpha

> 分钟级 signed flow / 主动买卖方向失衡,能不能直接变成 1m -> 5m 的短周期可交易 alpha?

主材料是一个 2026 的公开 GitHub repo,但我先说结论:

> 这份仓库值得 intake 的地方,不是 README 里那句“order book imbalance 很强”;而是它把一条可独立复现的 1m signed-trade-imbalance -> 5m forward return 策略壳写得很清楚。

同时,也必须先把一个容易误读的点挑出来:

所以这轮最值得写的,不是“OBI 机器学习 repo”,而是:

> 别把 repo 的 headline 当结论;真正可复现的 base alpha,是 signed trade imbalance,不是 L2 depth imbalance。

2. 先回答最重要的一句:base alpha 是什么?

一句话版:

> base alpha 就是:当过去 1 分钟里主动买盘明显压过主动卖盘时,接下来约 5 分钟收益更偏正;反之亦然。

翻成人话:

这也是为什么这轮仍然值得放进研究池:

  1. 它是 raw alpha,不是 filter / regime / overlay。
  2. 它和当前 desk 的 1m / 3m / 5m 很贴近。
  3. 它补的是目前 digest 池里相对少的“成交流 / microstructure 原始 alpha”方向。
  4. 它天然可以进一步分叉:

3. 主 repo 到底是什么

3.1 主材料

3.2 这次核对的源码

3.3 数据源

repo 用的是:

4. repo 真正复现出来的,不是 L2 OBI,而是 signed trade imbalance

4.1 数据抓取层已经决定了它不是真 L2 OBI

src/data_integration.py 明确抓的是:

这意味着:

也就是:

> 源码里的核心特征,其实更像 signed trade imbalance / aggressor-flow imbalance,而不是 order-book depth imbalance。

4.2 核心特征怎么构造

src/feature_engineering.py 做了 4 件事:

  1. 读入每日 aggTrades
  2. 聚合到 1min
  3. 计算:
  1. 预测目标:

也就是非常干净的一条线:

4.3 模型层并不复杂

src/model_training.py 用的是:

再喂给一个:

这点对我们很重要:

> repo 的可复现核心,不依赖神秘大模型,也不是几十个外部因子;就是一个非常朴素的 minute microstructure alpha 壳。

5. 为什么这条线对当前 desk 有价值

先回答一句必须回答的话:

> 它为什么比继续补一个 filter 更值得?因为它本身就是可独立复现、可直接落地的 raw alpha。

而且它补的是当前素材池里相对稀缺的方向:

这条线尤其适合:

6. repo 给了哪些“完整策略”要素

6.1 Entry

src/backtester.py 的 admission 很明确:

即:

这说明 repo 不只是说“有一点预测力”;而是明确把它写成:

> 必须过一个成本之后仍然足够厚的 conviction gate,才允许入场。

6.2 Exit

源码里最简单:

翻成人话:

6.3 Sizing

repo 没有复杂 sizing,但这不妨碍它可落地:

6.4 Risk

repo 隐含的几层 risk 很清楚:

但真正风险在于:

  1. 信号很薄
  2. taker 成本一抬,edge 可能直接没了
  3. maker 能否成交,是实盘生死线
  4. 把 signed trades 误认成 L2 OBI,会高估信息含量

6.5 Cost

repo 在 backtester.py 里默认:

这里最值钱的不是数字,而是 repo 明确承认:

> 这条信号如果要活,必须依赖低成本执行;用 taker 乱打,大概率直接死。

7. repo 自己给出的几个关键数据点

根据 README:

  1. OBI / microstructure 相关特征约占 ~45% feature importance
  2. 在其回测设定里,maker-only + 15bps threshold 后,策略净收益约 +3.21%
  3. 同期 buy-and-hold 市场回报约 -12.76%

但这些数字只能算:

原因很简单:

所以这轮我额外做了一个最小便携性 sanity check。

8. 最小便携性快检:public BTCUSDT aggTrades 上,这条线到底有多厚?

我额外跑了一个极简复核:

8.1 线性 sanity check:单靠这条信号,15bps admission 基本太高

线性模型结果:

这说明什么?

> 如果只把它当一条“线性的单因子 signed-flow alpha”,repo 里的 15bps conviction gate 大概率过高。

也就是说:

8.2 浅层非线性 sanity check:能做出交易,但稳定性很可疑

我又做了一个浅层 Random Forest 快检,结果是:

但更关键的是:

这说明:

> 一旦换成小样本 portability probe,这条策略虽然“能回测出几笔赚钱交易”,但主导特征已经不是 OBI,而是 volatility。

翻成人话:

9. 这条 alpha 该怎么 desk 化,才不容易被骗

9.1 正确读法

正确读法是:

> 它不是“单靠一分钟 signed imbalance 就稳定印钞”;而是“minute flow imbalance + nonlinear interaction + cost-aware admission” 的一条 raw alpha 候选。

9.2 错误读法

不要这样读:

这些都不严谨。

9.3 更适合我们 desk 的拆法

对当前 desk,我会把它拆成三层:

  1. raw alpha 主体1m signed trade imbalance -> 5m forward return
  2. conviction gate:只有预测净边际大于成本才开仓
  3. execution assumption:优先 maker / 被动成交,否则 alpha 可能直接消失

10. 和 1m / 3m / 5m / 15m 的关系

10.1 最自然的层级

10.2 3m 的用法

10.3 15m 的用法

这条线到 15m 时,不太适合再 pretending 它是同一条逐根 alpha。 更合理的是:

也就是说:

> 15m 上,它更像“共享 microstructure gate”,而不是原汁原味的 alpha 本体。

11. 我对这条材料的研究结论

11.1 值得 intake 吗?

值得。

因为它满足:

11.2 但该放在什么优先级?

我会放在:

11.3 这轮最重要的 take-away

> 这份 repo 真正可复现的 alpha,不是“神奇 OBI”,而是“signed trade imbalance + nonlinear conviction gate + maker-only economics”。

如果后续验证失败,最可能死掉的位置不是:

而是:

12. 下一步怎么测

这部分最关键,直接给可开工版本。

12.1 实验 A:先把“假 OBI”和“真 OBI”分开

目的:别再让 repo headline 混淆 alpha 本体。

  1. signed trade imbalance
  2. L2 depth imbalance
  3. microprice / queue proxy

通过条件: L2 OBI 至少要相对 signed trades 提供可见增量;否则这条线本质上就该改名成 flow alpha,而不是 book alpha。

12.2 实验 B:系统扫 horizon 与 threshold

目的:判断 repo 的 5m + 15bps 是不是拍脑袋。

网格:

通过条件: 至少找到一块 post-cost 仍为正、而且 trade count 不是接近零的区域。

12.3 实验 C:做 walk-forward,不要只看单段 lucky sample

  1. 线性模型
  2. 浅树模型
  3. XGBoost

通过条件: 如果只有复杂模型赚钱,而线性完全没有信号,要进一步检查是不是过拟合到 volatility regime。

12.4 实验 D:若独立 alpha 不够稳,直接降级成 shared gate

如果实验 B/C 结果显示:

那就别硬把它当独立 alpha,直接降级成:

这仍然有很高研究价值。

13. 参考资料

  1. tsuithomas. (2026). _Cryptocurrency Statistical Arbitrage & Microstructure Alpha Research_. GitHub Repository.
  1. Repo source files used in this digest
  1. Binance Public Data Archive — aggTrades