源文件:research/quant_digests/2026-03-31_1846_pairs-plateau-adf-killswitch-cost-cliff.md
README.md + src/shortlist_pairs.py + src/backtest.py)+ Binance USDⓈ-M Perpetual 公共 5m 本地 proxy quick check这次主材料不是一篇论文,而是一份 2026 新 repo:velychkoanton-stack/cointegration-pairs。它表面上是在做 Bybit 5m pairs 扫描 / 回测,但真正对 desk 有价值的,不是“又一个 cointegration z-score 回归”,而是两件更实用的事:
repo 自己给出的骨架很完整:有 pair shortlist、rolling window、开仓阈值倍数、TP/SL、交易成本、以及持仓中的 cointegration 失效检查。对我们的意义是:
base alpha = 同一风险簇里,两条高相关 / 近 cointegrated 价格序列的 beta-hedged spread 偏离后,向均值回归。
也就是标准的 pairs / stat-arb / relative value / mean reversion,不是 filter,也不是 overlay。
repo 的可取之处不在于发明了新 alpha,而在于把这个 raw alpha 从“拍脑袋 z-score backtest”往 可落地策略骨架 推近了一步:
src/shortlist_pairs.py 里,repo 对候选对做的是一组联合过滤,而不是只看 Engle-Granger / ADF:
ADF_MAX = -2.9P_VALUE_MAX = 0.05HURST_MAX = 0.45HALFLIFE_BARS ∈ [10, 300]SKEW ∈ [0, 1]KURT ∈ [0, 5]这点很对。对短周期 desk 来说,stationary 不是充分条件:
README 的“Best pair shortlist”部分,不是直接拿单组最优参数,而是保留:
good_cases >= 100plateau_n >= 5plateau_share >= 0.10这是这份 repo 最值得 desk 偷的部分。
因为 pairs 最大的问题,往往不是“完全没边”,而是:
plateau-share 比“best Sharpe / best balance”更诚实,因为它在回答:
> 这个 alpha 是真的存在,还是只是某个参数点碰巧拟合了样本路径?
src/backtest.py 里的退出逻辑不是只有 TP / SL / mean reversion,还加了:
ADF_CHECK_EVERY_BARS = 12ADF_PERSIST_K = 3bars_in_trade >= rolling_window 且连续复检失败时,触发 HL_COINTEGRATION_LOST 退出这比很多 pairs repo 诚实得多。很多 pairs 回测默认:
现实里更常见的是:
所以这份 repo 对 desk 的真正启发是:
pair alpha 可以继续做,但必须把“pair 已经不再是 pair”这件事写进状态机。
5m ETH/LINK 验证“plateau + cost cliff”为了不直接照抄 repo 的 Bybit 结果,我做了一个更小、更快的 public-data proxy:
5m klines(公开 REST)ETHUSDT 与 LINKUSDT9000 根 5m bars(约 31 天)4500 根训练 / 后 4500 根测试β ≈ 1.149phi ≈ 0.991480.3 根 5m bar,约 6.7h我这里用的是最小可复现版本,而不是完全复刻 repo:
log(P_ETH) - β * log(P_LINK)roll ∈ {72, 96, 120, 144}entry z ∈ {1.5, 1.75, 2.0, 2.25, 2.5}stop z ∈ {3.0, 3.5, 4.0, 4.5, 5.0}#### 无成本(纯 gross)
roll=72, entry=1.75, stop=5.0final_eq ≈ 1.1281,即约 +12.81%83这说明一个事实:
这个 pair 的 raw alpha 在测试段不是只有单个 best cell 活,而是整块参数面都活。
#### 10 bps spread-package round-trip 成本 proxy(每次开/平各 5 bps)
roll=72, entry≈1.75, stop≈4.0~5.0 一带final_eq ≈ 1.0388,即约 +3.88%也就是说,plateau 在低成本下没有立刻蒸发,而是从“整块都活”缩成“仍有一整片 pocket 活着”。
#### 20 bps spread-package round-trip 成本 proxy(每次开/平各 10 bps)
final_eq ≈ 0.9883这就非常关键了:
> pairs raw alpha 不是没有,但它的“可交易性”基本被成本壳一刀切开。
这也是为什么这份 repo 里 plateau-first + transaction cost 组合非常值钱:
这不是在证明 “ETH/LINK 一定值得实盘”,而是在证明三件更重要的事:
5m 上仍可能有 raw alpha;5m 主做,15m 做慢门控从这次 proxy half-life(约 6.7h)看,最自然的读法是:
5m15m也就是:
5m 负责抓 spread 偏离的 entry;15m 负责决定这对关系当前是否值得开仓,避免在结构断裂期机械抄底 / 摸顶。如果要把这条策略变成完整 desk 组件,我会按下面的顺序写:
5m spread z-score 偏离entry 1.75~2.25σ 开始,而不是太激进的 1.0~1.25σ10 bps 的 spread-package round-trip proxy,edge 很可能直接蒸发值得进入研究池。
但进入研究池的不是“又一个 plain cointegration pairs alpha”,而是这条更 desk 化的表达:
> raw alpha = beta-hedged spread mean reversion;真正该带走的可交易化组件 = plateau-first parameter selection + in-trade ADF kill-switch + 成本生存线审计。
它不是:
它是:
5m/15m desk 仍有现实意义的 pairs 壳;good_cases / plateau_n / plateau_sharehalf-life timeout + ADF fail我会先做这个:
ETH/BNB/LINK/SOL/AVAX/ARB/OP/AAVE5m10 / 15 / 20 bps 三档 spread-package proxyhttps://github.com/velychkoanton-stack/cointegration-pairshttps://github.com/velychkoanton-stack/cointegration-pairs10.2307/1913236https://doi.org/10.2307/1913236research/quant_digests/2026-03-31_1846_pairs-plateau-adf-killswitch-cost-cliff.mdhttps://eu.jerrypsy.top/momentum/reading/quant_digests/2026-03-31_1846_pairs-plateau-adf-killswitch-cost-cliff.html