← 返回 Quant Digests · 站点首页

HFT pairs shell:1h 选对 + 1m spread fade + OBI veto,base alpha 仍是配对均值回归

更新时间:2026-04-18 18:03 UTC 研究时间:2026-04-18 18:05 UTC 类型:GitHub repo source audit + Binance public-data portability probe 主题标签:pairs / stat-arb / relative-value / cointegration / zscore / OBI / Binance Futures / HFT shell / 1m / 5m / 15m / execution / cost 证据类型:GitHub 工程实现 + repo 自带参数文件 + Binance public-data quick probe

源文件:research/quant_digests/2026-04-18_1805_hft-pairs-obi-veto-shell.md

1. 这次看了什么

看的是 SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model。它不是泛泛的“配对交易 notebook”,而是一个研究到执行分层很清楚的壳:

  1. data_loader.py:抓 Binance USDⓈ-M 1m 数据,按 quoteVolume 先筛 top-50 流动性合约;
  2. analyzer.py:先在 1h 级别做相关性、Engle-Granger、ADF、half-life 筛 pair;
  3. optimizer.py:在 spread 上扫 window / entry_z / exit_z / stop_z
  4. main.cpp:把结果推到一个低延迟执行器里,用 bookTicker / depth 信息加 OBI 做更细的放行。

这套结构对我们最有价值的,不是“C++ 很快”本身,而是:它把 pair admission、spread alpha、本地微观结构 gate、执行线程壳分开了。

2. 核心结论

3. 一句话结论

这份 repo 最值得保留的不是“低延迟 C++ 外壳”,而是 1h pair admission -> 1m spread-zscore fade -> OBI veto execution 这条可独立复现、可继续压缩到短周期的 raw alpha 结构。

4. 它是怎么证明这件事的

它不是靠论文口头说服,而是靠工程分层 + 参数文件 + 直接执行逻辑来证明:

换句话说,repo 自己已经在结构上回答了一个关键问题:base alpha 是 pair spread 回归,不是盘口失衡。盘口只是 timing layer。

5. 为什么和当前项目有关

当前 digest 池里虽然已经有很多 pairs / stat-arb 主题,但这份 repo 仍有一个没那么重复的价值:

这比继续做纯 regime/filter 主题更值钱,因为它直接服务于“怎么把 pairs 从 paper signal 往实盘壳推进”。

6. 策略拆解

7. 这份 repo 最值得借的 3 个点

7.1 先在慢一点的频率做 pair admission

analyzer.py 不是直接拿 1m 噪音去跑全市场配对,而是先 resample 到 1h,再做:

这很符合 desk 现实:pair selection 可以慢,entry timing 才需要快。

7.2 OBI 是 timing veto,不是 alpha 本体

main.cpp 里 spread 还是用: log(p1) - hedge_ratio * log(p2)

真正进场条件则是:

这很重要,因为很多 repo 会把“看见 OBI”误写成“alpha 来自 OBI”;这份 repo 至少在结构上没犯这个错。

7.3 研究层和执行层真的分开了

这对后续复现很关键:

也就是说,它天然支持分阶段验证,而不是一上来就把 low-latency、网络、线程、盘口特征全部绑死。

8. 但它现在还不能直接照抄上线

这里有两个明显问题,反而也是这篇 digest 最值得记下来的地方:

8.1 优化器和执行器的 spread 口径不一致

这不是小问题。它意味着:离线最优参数和线上触发空间可能根本不是同一个 spread。

8.2 main.cpp 读取 mean/std_dev,但 strategies.json 默认并不带这两个字段

repo 里专门又写了个 fix_strategies.py 去补 mean/std_dev。这说明当前仓库更像“工程壳 + 研究草稿”,还不是可以闭眼上线的 production artifact。

所以这篇东西更适合作为:

9. 可复刻的最小实验

9.1 当前最小实验

先不碰低延迟和盘口,只做最小 spread 回归验证:

  1. Universe:Binance USDⓈ-M top 20~50 流动性合约;
  2. Pair admission:按 repo 的 corr + EG/ADF + half-life
  3. Signal:
  1. Frequency:
  1. 先不加盘口,先看 gross 收敛、持有时长、事件密度。

9.2 当前 quick probe 结果

10. 与当前短周期 1m/3m/5m/15m 的关系

所以它对我们最有价值的映射不是“把整套系统搬到 15m”,而是: 把 pair selection 慢一点保留,把 spread alpha 放在 1m/3m/5m 里重验。

11. 风险与保留意见

最大风险不是“回测太漂亮”,而是数学与执行口径不一致

另外,repo 给出的 pair 里不少是中小币对,流动性与冲击成本可能比纯 majors 更差。也就是说,这套壳更像:

12. 下一步怎么测

  1. 先统一 spread 定义:raw spread / log spread 二选一,不要离线线上两套口径;
  2. 做 friction ladder:0 / 4bps / 8bps / 12bps / maker-taker split;
  3. 把 pair admission 跟 entry 分层回测
  1. 先做 majors-relative pocket:例如 LINK/SOLETH/BTC proxy 这种更接近可交易 pair;
  2. 记录持有时长分布:如果大多数 edge 要 >60m 才回收,那就和 repo 宣称的 HFT 壳不匹配;
  3. 如果 1m 过于吃成本,就把它降级成:5m signal, 1m execution filter,而不是硬做秒级策略。

13. 来源