← 返回 Quant Digests · 站点首页

别把这份 2025 stat-arb repo 只读成“cointegration 筛对脚本”:对 short-cycle desk,更该先测的是「HMM 状态 × spread 方向预测 × MVO 配对篮子」这条完整 raw alpha

更新时间:2026-04-04 16:38 UTC 研究时间:2026-04-04 16:48 UTC 类型:2025 GitHub repo source audit(`strategy.py` + `main.py` + `market_data_gateway.py` + `OMS.py` + `portfolio_tracker.py`)+ Binance USDⓈ-M 公共 `5m/15m` 最小可移植性快检 主题标签:raw-alpha/pairs/stat-arb/relative-value/spread-forecast/hmm/xgboost/cointegration/adf/mvo/market-neutral/binance-perpetual/5m/15m/3m/1m/repo/public-data/cost/risk 证据类型:开源代码仓 + 公共行情最小实验

源文件:research/quant_digests/2026-04-04_1648_hmmstate-xgb-spreadforecast-pairs-alpha.md

1) 先回答一句:这篇东西的 base alpha 是什么?

base alpha 不是“cointegration 本身”,而是“cointegrated spread 的短窗方向可预测性”。

翻成人话:

这条线对我们当前 desk 的价值在于:它不是纯 filter,也不是 overlay,而是可独立跑成完整策略的 relative-value raw alpha(entry/exit/sizing/risk/cost 都能落地)。

---

2) 本轮主材料与为什么不重复

2.1 主材料(repo)

2.2 本轮聚焦的关键源码

2.3 为什么和最近 digest 不重复

最近我们有不少 pairs z-score fade / cointegration shell。这篇最值得 intake 的分歧点是:

  1. signal 层不是单纯 z-score 阈值,而是 spread 方向预测(HMM state + feature stack)
  2. 组合层显式做了 MVO,不是每个 pair 等权;
  3. 代码里能直接抽出“从 pair alpha 到 portfolio alpha”的接口。

---

3) 代码级拆解:真正可抄的与必须修的

3.1 可抄的主链路

strategy.py 的链路是完整的:

  1. get_pairs()
  1. generate_signal(spread)
  1. mvo()

这三步拼起来就是一条完整 raw-alpha 壳,不是“只会筛对”的半成品。

3.2 必须修的硬伤(不修不能实盘)

A) 数据频率写死 1d

market_data_gateway.py 取的是 interval="1d"。对 short-cycle desk(1m/3m/5m/15m)必须改频率与窗口。

B) 下单后立刻平仓

main.pyweights_to_order(...) 后直接 close_positions(...),等于“刚开就平”。 这在研究/实盘里会把 alpha 全部变成手续费。

C) 工程完整性不足

结论: > 这不是可直接运行的 production repo,但它提供了有价值的“signal + portfolio” alpha 母板。

---

4) 最小可移植性快检(Binance 公共 5m/15m)

我先不复刻 HMM/XGB 全链路(依赖与工程不完整),先测最核心可迁移假设:

> 同样 pair admission 思路下,短窗 spread 在极端偏离后是否存在可交易的回摆/修复口袋。

4.1 数据与口径

4.2 关键数据点(本轮)

  1. MATIC 失活证据MATICUSDT 最近 5 根 15m bar 最后时间停在 2024-09-11 09:44:59 UTC,且成交量均为 0。这说明 repo 原 universe 直接照抄会污染当下样本。
  2. 5m 口径(36 对):极端事件的 pair 中位回摆 hit-rate 约 53.7%;最强 pair SOL-AVAX hit-rate 约 79.8%
  3. 15m 口径(36 对):中位 hit-rate 约 51.9%;最强 pair XRP-DOGE hit-rate 约 64.2%

解释:

4.3 产物路径

---

5) 给 desk 的可落地版本(entry/exit/sizing/risk/cost)

下面给一版直接可做最小实验的策略壳(先 ML-lite,再上 HMM/XGB):

5.1 Universe / Admission

  1. 动态 universe:排除 stale/零成交合约(例如本轮 MATIC)。
  2. 每日(或每 6h)重跑 pair admission:

5.2 Signal(先 ML-lite,再升级)

5.3 Entry / Exit

5.4 Sizing

5.5 Risk / Cost

---

6) 为什么这条线现在值得进素材池

  1. 是 raw alpha,不是 filter 伪装:可以独立开平仓并产生成交序列。
  2. 能服务我们现有 pairs 家族:把“纯 z-score 触发”升级为“状态感知 + 方向预测 + 组合汇总”。
  3. 短周期友好:公开数据可得、5m/15m 可快速出第一轮实证,不需要私有订单流起步。

---

7) 下一步怎么测(必须执行)

按优先级给三步,先快后慢:

Step 1(今天可做)

把当前 pairs baseline 拆成 A/B:

Step 2(1~2 天)

在 B 上加 regime gate

Step 3(2~4 天)

再上 repo 同构升级:

成功门槛建议:

---

8) References / Sources

  1. timshao8. (2025). _Market-Microstructure-_. GitHub repository.
  1. Engle, R. F., & Granger, C. W. J. (1987). _Co-integration and Error Correction: Representation, Estimation, and Testing_. Econometrica.
  1. Rabiner, L. R. (1989). _A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition_. Proceedings of the IEEE.
  1. Chen, T., & Guestrin, C. (2016). _XGBoost: A Scalable Tree Boosting System_. KDD.
  1. Avellaneda, M., & Lee, J.-H. (2010). _Statistical Arbitrage in the U.S. Equities Market_. Quantitative Finance.

---

9) 一句话收口

这份 2025 repo 真正值得 intake 的,不是“又一个 cointegration 框架”,而是它把 pairs raw alpha 往前推进了一步:从 spread 偏离触发 升级到 状态感知的 spread 方向预测 + 组合层权重分配;下一步该做的是先用 5m/15m 的 ML-lite 版验证净后优势,再决定是否上完整 HMM/XGB。