← 返回 Quant Digests · 站点首页

别把这份 2026 新 repo 只读成“C++ 低延迟秀肌肉”:对 short-cycle desk,更该先测的是「1h cointegration shortlist × microprice spread z-score fade × OBI veto」这条完整 pairs raw alpha

更新时间:2026-04-01 21:41 UTC 研究时间:2026-04-01 21:40 UTC 类型:2026 GitHub repo source audit(`README.md` + `analyzer.py` + `optimizer.py` + `book_recorder.py` + `main.cpp` + `strategies.json`) 主题标签:raw-alpha/pairs/stat-arb/relative-value/mean-reversion/cointegration/microprice/order-book-imbalance/obi/execution-veto/binance-perpetual/1h/15m/5m/3m/1m/repo/public-data/cost/latency 证据类型:repo-based source audit + 方法锚点

源文件:research/quant_digests/2026-04-01_2140_microprice-obi-veto-pairs-hft-alpha.md

1. 这次看了什么

这次看的是 Samarth Chaudhary (GitHub, 2026) 的仓库 Crypto_Stat-Arb_HFT_Model。表面看,它像一份“研究层 Python + 执行层 C++”的 HFT 项目;但对我们 desk 真正有价值的,不是 4-7ms RTT 这种工程秀肌肉,而是它把一条 可以独立落地的 pairs raw alpha 壳 写得比较完整:

一句话:base alpha 不是 OBI,也不是低延迟;base alpha 仍然是 pair spread mean reversion。真正值得 intake 的,是它把 “慢频选 pair + 快频执行 veto” 接成了一条完整策略链。

2. 核心结论

  1. analyzer.py1h resample 后仍把 MAX_HALF_LIFE = 240 注释成“最多 4 小时回归”,单位明显错位;按代码实际口径更像 240 小时。
  2. optimizer.py 的成本近似是 abs(spread) * fee_pct不是双腿名义金额成本,会低估真实 friction。
  3. strategies.json 里一开始缺 mean/std_dev,后来又靠 fix_strategies.py 现场补,这说明 repo 的研究层和执行层 口径并没完全锁死

一句话核心结论:真正该复现的不是“低延迟 C++”,而是“慢频筛出可交易 pair,再让 microprice+OBI 只负责决定这次 spread 偏离要不要做”这条 pairs raw alpha。

一句话说它怎么证明:证据主要来自 repo 源码本身——数据下载、pair discovery、参数扫描、盘口记录、执行与风控模块是同一条链,说明作者不是只写了概念,而是把完整策略壳真的连起来了。

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

最近两天 intake 里,pairs / relative-value 家族已经补了不少:

这轮补的不是“再来一个 pairs headline”,而是一个当前素材池里更缺的组件:spread alpha 怎么和盘口执行层接上。

这和当前学习进展的关系也很直接:

翻成人话:pair spread 会不会回归,是第一层;这次偏离值不值得立刻出手,是第二层。repo 的价值就在把第二层写成了可执行规则。

3.5 策略拆解(必填)

4. 可复刻的最小实验

  1. Binance / Bybit / OKX 公开 perpetual 1m klines 做 pair discovery 输入;
  2. Binance bookTicker 或 top-of-book 快照做 best bid / best ask / bid size / ask size
  3. 先不要求真 tick-by-tick 撮合,第一轮只做 1s~5s 盘口 proxy。
  1. 30~601h 数据重算 pair;
  2. 相关性 > 0.8
  3. ADF p < 0.05
  4. half-life 先明确统一到 bar 数,别再混“小时/分钟”单位。
  1. 15m 先做 baseline:spread rolling zentry 2.0/2.5exit 0.5stop 3.5/4.0
  2. 然后把入场那一刻下钻到 1m 或盘口流:
  1. 入场后 1~3 根 adverse excursion 是否下降;
  2. 胜率变化是不是主要来自“少做错单”,不是“多做神单”;
  3. turnover、持有时长、止损触发率是否改善;
  4. 15m signal + 1m veto 是否优于纯 1m signal 直接交易。

5. 先测什么,不先测什么

先测 “microprice / OBI 是否能当 execution veto,而不是 alpha 本体”

别一上来就测:

第一刀更合理的是:保留一个最朴素的 spread z-score baseline,再只替换入场口那一层的执行判定。

如果这一刀都不能改善 post-entry path,就没必要急着把它升级成“高频系统”。

6. 风险与误区

7. 来源与复现线索

主来源(repo)

方法锚点(概念地基)

8. 一句话带走

如果把这份材料变成 desk 可测策略,我会把它定义成:“1h 慢频筛 pair,15m 做 spread 触发,1m / bookTicker 用 microprice + OBI 决定这笔 fade 要不要放行”的完整 pairs raw alpha 壳,而不是一份单纯炫低延迟的 C++ 项目。