← 返回 Quant Digests · 站点首页

别把这份 2022 unsupervised pairs repo 只读成普通 cointegration:对 short-cycle desk,更该先拆的是「cluster-first pair admission × spread fade」这条 raw alpha 壳

更新时间:2026-04-15 15:26 UTC 研究时间:2026-04-15 15:24 UTC 类型:2022 GitHub repo source audit(`README.md` + `strategies/AutoPairsTrading/__init__.py`)+ Binance USDⓈ-M `1h` public-data portability probe 主题标签:raw-alpha/pairs/stat-arb/relative-value/mean-reversion/cluster-first/pair-admission/agglomerative-clustering/pca/adf/kalman/hedge-ratio/spread-zscore/binance-perpetual/1h/15m/5m/repo/public-data/cost/risk 证据类型:repo 源码规则 + 公共历史 K 线 portability probe

源文件:research/quant_digests/2026-04-15_1524_clusterfirst-pairadmission-spreadfade-shell.md

1. 这次看了什么

主来源(repo)

本轮自建 probe 产物

2. 先把一句话说清楚:这篇东西的 base alpha 是什么?

> base alpha = 被筛选出来的 cointegrated pair 的 spread mean reversion。

翻成人话:

  1. 找两条价格行为足够接近、但短期会偏离的币;
  2. 估计 hedge ratio;
  3. 当 spread 偏到极端时做反向;
  4. 等 spread 回到中枢就走。

这轮真正值得写的新增量,在于 repo 没把“pair 从哪来”留空,而是给了一套 先聚类、再筛 cointegration、再滚动重选 的 admission 机制。也就是说: > alpha 本体 = spread fade;增量部件 = cluster-first pair admission。

所以它不是 filter,不是 overlay,而是一条 可以直接写成 entry / exit / sizing / 风控的 raw alpha 壳

3. 为什么这轮还值得写,而不是把它归到“又一篇 pairs”

如果只是“再来一篇 spread z-score fade”,这轮不值得写。

这轮值得进池,原因在 3 点:

  1. 它补的是“pair discovery loop”,不是只补一条 pair 本身。
  2. 之前很多 pairs 主题默认 pair universe 已经给定;这份 repo 给的是:

  1. 它只用公开 K 线就能跑。
  2. 不依赖私有订单流、不依赖昂贵数据商,复现门槛低,适合 desk 快速做最小实验。

  1. 它天然适合 desk 做“慢 admission + 快 execution”拆分。
  2. pair selection 可以留在 1h 甚至更慢;真正的入场、减仓、stale-leg veto、冲击过滤,可以下沉到 15m / 5m

所以这轮真正可吸收的,不一定是 repo 原版 shell 整体照搬, 而是: > 把 cluster-first admission 当成 pairs/stat-arb book 的前置选对层。

4. repo 里到底写了什么

4.1 先聚类,再在簇里找 pair

strategies/AutoPairsTrading/__init__.py 的第一层不是直接枚举全市场 pair,而是先做 feature clustering:

翻成人话: > 它不是“谁跟谁看着像就配对”,而是先按多窗口收益轮廓把币分到行为相近的簇里,再在小池子里做 pair selection。

这对 desk 的价值很直接:

4.2 簇内 pair ranking:OLS hedge ratio + ADF p-value

簇内每一对候选,repo 做的是:

  1. 对两腿价格做线性回归;
  2. 取回归残差当 spread;
  3. ADF p-value 给 pair 排序;
  4. 选最优且 symbol 不重叠 的 pair;
  5. 最多保留 3 对。

也就是说,repo 的 pair selection 不是“相关性大就上”,而是更接近: > 行为先相似,再看 spread 站不站得住 mean-reverting 统计检验。

4.3 pair 不是永久的,默认每 30 天重选一次

源码里:

这点很关键,因为 crypto pair 关系很容易漂移:

因此这份 repo 真正提供的是: > 动态 pair universe,而不是固定 pair 名单。

4.4 交易逻辑很朴素:spread 偏离 ±2σ 入场,回到中枢出场

交易层不花哨,但完整:

这意味着它不是只给 pair selection, 而是给了一条完整 raw alpha 壳:

4.5 sizing 很粗,但足够说明这真的是完整策略,不是概念 README

repo 默认:

所以它不是 production-ready, 但也不是一句“pairs trading 很酷”的空壳。

5. 我做的 Binance USDⓈ-M 1h 最小 portability probe:选对逻辑能复现,但当前 direct shell first verdict 偏负

5.1 数据与口径

  1. 用最近 60d 训练;
  2. 未来 30d 测试;
  3. 30d 重做一次 clustering + pair ranking;
  4. 每个测试窗最多保留 2 对不重叠 pair;
  5. 训练期用 OLS beta,测试期用 7d z-score;
  6. entry=±2σ,exit=0-cross
  7. 成本先用较轻但不离谱的近似:每次腿变动 4 bps

注意:

5.2 先记最重要的 6 个数

两段测试窗里,选出来的 pair 分别是:

一句话结论: > pair discovery 这件事是能复现的,但 direct shell 迁到当前 liquid-major-ish DeFi perp 子集上,first verdict 偏负。

5.3 这组数真正说明了什么

结论 1:repo 最值钱的部分,可能不是交易壳,而是 admission layer

如果这轮 probe 连 pair 都选不出来,那就没什么好说的。 但现在不是这样:

所以真正可复用的部分更像: > cluster-first pair admission,是一块可插拔组件;原版 spread fade 壳,不应直接抬进 production 候选池。

结论 2:当前 active universe 比 repo 当年的候选池更窄

repo 里原始 universe 有不少今天已经不在 Binance USDⓈ-M 活跃交易的符号:

这意味着:

结论 3:short-cycle desk 不该把它理解成“又一条现成 pair alpha”

更诚实的 desk 读法应该是:

6. 这条线对 1m / 3m / 5m / 15m 的正确定位

6.1 它服务短周期 desk 的方式,不是把 selection 本身压到 1m

最合理的拆法是:

也就是说,它对 short-cycle desk 的意义不是“高频选 pair”,而是: > 给你一个更系统化的 pair admission 前置层。

6.2 所以这轮主题仍然算 raw alpha,但当前 priority 不该太高

为什么仍算 raw alpha?

为什么 current priority 不该太高?

更合理的结论是: > 主题合格,部件有价值,但现阶段更像“pairs book 的 reusable admission module”,不是现成 alpha winner。

7. 风险与保留意见

  1. repo 的成绩大概率强依赖当时 universe。
  2. 当前活跃子集缩水后,pair 结构已经变了。

  1. probe 不是精确复刻。
  2. 我这里为了快速判断 portability,做了简化版 walk-forward,而不是完整还原 Jesse 环境与在线 Kalman 状态机。

  1. 原 repo sizing 很粗。
  2. 若真上 desk,至少要补:

  1. 这条线很容易被误读成“pairs 永远有用”。
  2. 实际上,这轮恰恰说明:

8. 我给这轮主题的结论

> 这是一个合格的新 raw alpha 主题,但当前真正值得 desk 吸收的,不是“照抄 2022 clustering-based pairs shell”,而是“cluster-first pair admission”这块模块化组件。

更具体地说:

9. 下一步怎么测

按优先级,我建议直接做这 5 步:

  1. 把 selection 和 trading engine 分开评估
  2. 先固定这套 clustering admission,只替换交易壳:

  1. 15m execution 版,而不是继续全靠 1h 触发
  2. 1h 负责选 pair,15m 负责:

  1. 把 clustering admission 和“纯 ADF 全市场扫 pair”做 head-to-head
  2. 直接比较:

  1. 扩成 sector-aware universe,而不是只看剩下的老 DeFi 币
  2. 下一版不要只盯 AAVE/COMP/CRV/SNX/SUSHI/UNI/YFI,应扩到:

  1. 把 funding / liquidity veto 接上去
  2. 对 pair 两腿补 3 个 veto: