← 返回 Quant Digests · 站点首页

别把 pairs 继续写成固定 z-score 教材:这份 2026 新 repo 更该先测的是「4-test pair admission × half-life-bounded spread MR × fractional-Kelly shell」

更新时间:2026-04-07 02:43 UTC 研究时间:2026-04-07 02:41 UTC 类型:2026 GitHub 新 repo source audit(`README.md` + `cointegration.py` + `signals.py` + `sizing.py` + `backtest.py`) 主题标签:raw-alpha/pairs/stat-arb/relative-value/mean-reversion/cointegration/engle-granger/johansen/adf/ou-halflife/fractional-kelly/kill-switch/kraken/binance/15m/5m/3m/1m/repo/public-data/cost/risk 证据类型:repo 源码直读 + repo 内结果表 + 公开交易所 OHLC 数据可得性

源文件:research/quant_digests/2026-04-07_0241_halflife-kelly-coint-pairs-alpha.md

1. 这次看了什么

这轮我选的是一个很新、而且能直接拆成完整策略壳的仓库:

我选它,不是因为“pairs + z-score”这几个词本身有多新,而是因为它把一条 raw alpha 写成了比较完整的 production skeleton:

  1. 配对准入:不是只看一个 cointegration p-value,而是四重筛选;
  2. 入场/出场z-score 明确;
  3. 仓位:有 fractional Kelly;
  4. 风险:有 stop 与 portfolio drawdown kill-switch;
  5. 成本:回测里明确扣了 7 bps 成本 + 3 bps slippage。

一句话说,这不是“pairs 概念介绍”,而是一个已经能让 desk 直接抄出 first replication 的完整模板。

2. 先回答:这篇东西的 base alpha 是什么?

先一句话:

> base alpha = 多重 cointegration 准入后的 spread mean reversion。

更具体一点:

这点很关键,因为它把很多 desk 上常见的“pairs 直觉”变成了可审计规则:

如果 base alpha 说不清,就只能算 overlay;这份 repo 在这点上是说得清的。

3. 核心结论

  1. signals.py 默认 lookback=30 实际按 bar 数滚动,而 README 讨论的是 120 个 4H bars ≈ 20 天;单位口径存在错位风险
  2. Kelly fclip(lower=0),意味着当 spread 漂移估计为负时,short-side sizing 会被压成 0,这不是我们想要的对称 pairs shell。

3.5 为什么和当前项目有关

它和当前 momentum 主线的关系非常直接,而且是 raw alpha 素材池 关系,不是泛泛“可借鉴”:

  1. 补 raw alpha 家族缺口:当前 digest 池虽然已经有不少 pairs / RV 主题,但很多更偏“单一 admission trick”或“某个 threshold 技巧”。这份 repo 的价值在于它把完整 shell 一次性摆齐了。
  2. 适合 desk 现阶段:当前用户明确希望多补可独立复现、可直接落地的主题。这份仓库恰好不是纯 filter,也不是纯综述,而是一条完整可执行的 pairs raw alpha。
  3. 有利于 5m / 15m 迁移:repo 最值得抄的其实是“calendar-time half-life + 明确 cost + 风险壳”,这些都能平移到 Binance / Hyperliquid 的更快数据上。

4. 策略拆解(必填)

5. 这套 repo 实际怎么写策略

按源码看,它的主策略壳可以浓缩成下面 5 句:

  1. 对每个 pair 做 log(A) ~ beta * log(B),得到 hedge ratio 与 spread;
  2. 只保留同时通过 EG + Johansen + residual ADF + OU half-life 的 pair;
  3. 对 spread 做 rolling z-score:
  1. 用 fractional Kelly 决定仓位,但上限 20% 资本/对;
  2. 回测按实际两腿收益算 PnL,并在 trade day 扣成本;若组合回撤超过 25%,直接停机。

这就是它最适合我们 desk 的地方:不是只有信号,没有风控;也不是只有风控,没有 alpha。

6. 可复刻的最小实验

6.1 研究假设

15m5m crypto 数据上,真正值得交易的 pairs alpha,不是“任何价差偏离都回”,而是:

> 只有通过多重配对准入,且 half-life 落在短周期 desk 能接受的资本占用区间时,spread z-score mean reversion 才更像可交易 raw alpha。

6.2 一个可计算定义

建议先做 Binance USDT perp 或 spot 的最小迁移版:

6.3 最小回测切口

6.4 最该先看哪 2 个指标

  1. 成本后净收益 / trade count / positive pair ratio:确认它不是只有少数 pair 偶然撑起来;
  2. max drawdown + holding-time 分布:确认 short-cycle 上的 half-life 约束是不是把“看起来回归、其实拖很久”的 pair 过滤掉了。

6.5 我更建议的 first verdict 顺序

  1. 先固定仓位,验证 raw alpha 本体;
  2. 再加 half-life gate
  3. 最后才加 对称版 Kelly / vol-target / pair ranking

这样能避免把“仓位救了坏信号”错认成 alpha 成立。

7. 风险与保留意见

8. 下一步怎么测

如果只给这轮一个明确行动,我会建议:

> 不要先复刻 repo 的 Kelly;先复刻它的“四重配对准入 + calendar-time half-life + fixed-notional spread z-score shell”。

更落地一点:

  1. 在 Binance 15m top-liquid perp 上跑 rolling pair admission;
  2. 只保留 half-life 0.5~10 天的 pair;
  3. 用固定名义仓位回测 z-entry / z-exit / z-stop
  4. 看成本后是否仍有正的 pair ratio;
  5. 只有 alpha 本体过关,再试对称化 Kelly 或 vol-target。

这一步如果跑出来,哪怕收益一般,也会给当前 desk 多一类真正能进入后续 admission check 的 pairs raw alpha skeleton

9. 来源

主来源(repo)

理论地基(repo 中实际使用的方法族)