← 返回 Quant Digests · 站点首页

别把这份 2026 HFT repo 只读成 C++ 低延迟引擎:对 short-cycle desk,更该先测的是「cointegrated perp spread fade × microprice/OBI confirm」这条 raw alpha

更新时间:2026-04-11 22:36 UTC 研究时间:2026-04-11 22:38 UTC 类型:2026 GitHub repo source audit(`README.md` + `analyzer.py` + `optimizer.py` + `fix_strategies.py` + `strategies.json` + `main.cpp`)+ Binance USDⓈ-M 公共 `1m` portability probe 主题标签:raw-alpha/pairs/stat-arb/relative-value/mean-reversion/cointegration/microprice/order-book-imbalance/obi/binance-perpetual/1m/3m/5m/15m/repo/public-data/cost/risk 证据类型:源码审计 + 公共 1m portability probe

源文件:research/quant_digests/2026-04-11_2238_microprice-obi-coint-perp-pairs-alpha.md

1. 这次看了什么

这次看的是 SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model。表面上它最显眼的是:

但对我们 desk 真正更值钱的,不是“又一个低延迟引擎”,而是它把一条 crypto perp pairs raw alpha 写成了比较完整的研究到执行链:

  1. data_loader.py:抓 Binance USDⓈ-M top-50 liquid assets 的 1m K 线;
  2. analyzer.py:先做相关性筛选,再做 OLS hedge ratio + ADF,找协整 pair;
  3. optimizer.py:对 rolling window / entry z / exit z / stop z 做网格;
  4. main.cpp:用实时 microprice 和顶级盘口量差,决定是否执行 spread fade。

所以这次真正可迁移的主题,不是“C++ 快”,而是:

> cointegrated perp spread mean reversion 这条 raw alpha,能不能在 1m/3m/5m/15m 上,加上一层 honest 的 microprice/OBI confirmation 后,变成更可执行的短周期相对价值壳。

2. 核心结论

2.1 一句话结论

这份 repo 最值得 desk 拿走的,不是 HFT 外壳,而是:

> 用协整筛出来的 perp 对做 spread fade,把 top-of-book microprice 与 OBI 当作 entry confirmation / veto。

这仍然是 raw alpha,不是 filter 伪装成 alpha:

2.2 为什么这不是又一篇普通 pairs 教材

我们最近已经补了不少 pairs / stat-arb 线,但这份 repo 多了一层 short-cycle 可执行性

这点对 1m/3m/5m 尤其重要,因为很多 pair spread 在 candle close 上像会回归,但一到真实盘口就会发现:

这时,top-of-book imbalance 才真的开始有意义。

3. 源码里最该拿走的 3 个零件

3.1 pair formation:它不是盲配,而是先做相关性 + 协整 + half-life 约束

analyzer.py 的主流程是:

对 short-cycle desk 来说,最可迁移的不是“协整”三个字,而是它把 pair formation 明确成:

> 先让 pair 至少像一个会回来的东西,再谈入场和执行。

3.2 runtime 信号:spread 用 microprice,confirmation 用 OBI

main.cpp 里不是直接拿 last trade price,而是读取 !bookTicker

runtime 核心就是:

这比“只要 z-score 到了就进”诚实得多。对 short-cycle 而言,这个 confirmation 层比再多加一个技术指标更有用,因为它直接碰到 执行时刻的订单簿现实

3.3 执行外壳:它天然适合 market-neutral / relative-value sleeve

repo 的执行是双腿同步下单、固定 notional、实时风控暂停。这意味着它天然服务于:

这正好补我们当前素材池里一块缺口:

> pairs alpha 不缺,缺的是更接近真实盘口的短周期执行确认层。

4. 但源码里也有 3 个不能忽略的硬伤

这份 repo 不能直接照抄上线,至少有 3 个地方必须先拆开看。

4.1 half-life 注释和实际单位对不上

analyzer.py 先把数据 resample('1h'),然后算 half-life,并设:

但这里 half-life 是在 小时频率 上算的;240 更像 240 小时,不是 4 小时。它后面只是把结果乘 60 打印成分钟。

也就是说:

这会把 pair universe 放得比 README 读起来宽很多。

4.2 optimizer 和 runtime 实际没真正接上

optimizer.py 会产出:

main.cpp 真正运行时是硬编码:

并且 runtime 读取 strategies.json 时实际依赖的是:

这也是为什么 repo 额外放了一个 fix_strategies.py:它重新补 mean/std_dev。换句话说:

> research layer 的参数优化,目前并没有被 honest 地带进 live runtime。

所以我们应该把它当成:

4.3 OBI 阈值现在更像“宽松 veto”,还不像“强确认”

当前 main.cpp 里的 OBI 阈值:

但实际入场条件更像:

这其实很宽:

对我们 desk 来说,更 honest 的写法应该是:

5. 为什么这轮值得写,而不是继续补别的 funding / basis 题

因为它直接服务于当前阶段更该补的那一类:

如果继续补 funding / basis,我们当然也能找到题;但那条线最近已经比较密。相反,这个 repo 给的是另一块更缺的东西:

> pair spread fade 不只是 formation / z-score / hedge ratio,真正会卡住 short-cycle 的,是“入场那一刻订单簿是否站在你这边”。

这就是它比继续补一个 generic pairs 教材更值得的地方。

5.5 策略拆解(必填)

6. 本地 portability probe:这条线在 Binance 公共 1m 上有 first verdict 吗?

我用 Binance USDⓈ-M 公共 1m K 线,对 repo strategies.json 里几组 pair 做了一个最小快检。

6.1 口径

6.2 结果先看一句话

6.3 ADAUSDT/HYPEUSDT 的 first-pass 数字

本地 artifact:reports/artifacts/literature/statarb_hft_repo_portability_summary_2026-04-11.csv

ADAUSDT/HYPEUSDT

未来 signed spread-close:

这组数字说明两件事:

  1. spread fade 本体没有死——至少在公共 1m close-proxy 上,极端 z-score 后未来 15m 的回归倾向仍然存在;
  2. 但它的 edge 也没有大到可以无视成本——若双腿都 taker,很多时候未必够厚;这反而正好解释了 repo 为什么要往 microprice / OBI / 低延迟执行去补壳。

6.4 为什么我不把 AXSUSDT/FILUSDT 直接写成主 pair

AXSUSDT/FILUSDT 在同一份 summary 里,15m mean spread-close 约 +10.48 bps,明显更亮眼;但:

所以更合理的读法不是“最大 close-proxy edge 就是最佳 live candidate”,而是:

> 先用 close-proxy 找可能有回归生命迹象的 pair,再按流动性把它们分成“先上 BBO 回放”和“先放观察名单”。

7. 可复刻的最小实验

7.1 数据源 / 公开性 / 更新频率

7.2 最小研究假设

> 当 Binance perp pair 的 rolling spread z-score 达到 |z| >= 2,且订单簿 microprice / OBI 不反着均值回归方向时,未来 5m~15m 的 spread-close 更可能为正;若再加 maker/taker 成本后仍为正,这条 raw alpha 才算真正过第一关。

7.3 最小回测切口

第一轮别贪多,直接做:

8. 下一步怎么测

下一步我不会先扩 universe,而是先做 4 件最值钱的事:

  1. 把 close-proxy 升级成 live BBO event log
  1. 把 formation 和 runtime honest 接线
  1. 把 OBI 从宽松 veto 改成真正 confirmation
  1. 先用流动性把 pair 分层

如果 ADA/HYPE 这类 pair 在 maker/taker 成本下,15m 仍能保留正的净 spread-close,那这条线就值得进入 clean replication 队列;如果只在 close-proxy 下好看,一上 BBO 就塌,那它更适合降级成 pairs sleeve 的 entry confirmation / veto layer,而不是独立交易壳。

9. 风险与保留意见

10. 来源

主来源(repo)

本地 portability artifacts

本地 probe 说明