源文件:research/quant_digests/2026-04-19_0112_cointegration-spreadfade-router-alpha.md
log(A) - beta*log(B) 残差)短时间偏得过远,后面几个 15m bar 往往会向均值回归;交易上对应 多便宜腿、空偏贵腿 的 spread fade。base alpha 很清楚:cointegration / residual spread mean reversion。
不是“market neutral 很好听”,也不是“相关性高就能做 pairs”,而是:
> 先筛出关系相对稳的 pair,再在残差 z-score 极端时做回归。
所以这轮我没有把 repo 只当成“又一个 stat-arb 大框架”,而是直接把最像 desk 可交易原型的那一层拎出来:
> pair admission 用相关性 + 残差稳定性,entry 用 residual z-score extreme,exit 先看 1h~3h 的 fixed-hold / time-box fade。
---
来源
crypto-stat-arbREADME.mdcryptoarb/pairs.pycryptoarb/signals.pycryptoarb/backtest.pyresults/backtest_results.json我为什么选它
15m residual fade router。一句话核心结论:
> 这份 repo 的价值不在“日频 WFO 成绩单”,而在它把 pairs/stat-arb 最该先保留的 raw alpha 骨架写得很干净:先做 pair admission,再做 residual extreme fade。
一句话证明方式:
> 作者用 Engle-Granger pair discovery、rolling hedge ratio、残差 z-score 进出场、显式成本和 walk-forward backtest 来支撑这条线。
---
pairs.py 先相关性预筛,再做 Engle-Granger residual test,并要求 half-life 落在区间内;这比“看到两条线长得像就上”靠谱得多。
signals.py 的核心是:
z > entry_z:做空 spreadz < -entry_z:做多 spread|z| < exit_z:平仓|z| > stop_z:止损这就是完整的 raw alpha 壳,不是只有 admission 没有 exits。
results/backtest_results.json 里,作者公开给出的 OOS 结果约是:
-18.77%-15.72%0.0257这很重要:说明“market-neutral 结构成立”不等于“当前版本就能赚钱”。
既然日频大而全版本不厚,就不要迷恋长样本组合壳;更该回到短周期去测: 极端 residual 偏离后,未来 1h~3h 有没有 pocket mean reversion。
---
15m raw alpha,而不是 5m 硬压执行15m 主实验,5m 只做 child-execution sanity checkBTC/ETH/SOL/BNB/XRP/DOGE/ADA/LINK/AVAX/LTC15m 近约 60d,5m 近约 21dreports/artifacts/quant_digests/2026-04-19_cointegration_pairs_probe_pairs.csvreports/artifacts/quant_digests/2026-04-19_cointegration_pairs_probe_events_15m.csvreports/artifacts/quant_digests/2026-04-19_cointegration_pairs_probe_router_15m.csvreports/artifacts/quant_digests/2026-04-19_cointegration_pairs_probe_events_5mchild.csvreports/artifacts/quant_digests/2026-04-19_cointegration_pairs_probe_router_5mchild.csvreports/artifacts/quant_digests/2026-04-19_cointegration_pairs_probe_summary.json本轮 proxy 里筛出来的 3 组代表性 pair 是:
LINKUSDT / LTCUSDT:corr≈0.924,half-life≈76 barsSOLUSDT / LTCUSDT:corr≈0.904,half-life≈82 barsLINKUSDT / AVAXUSDT:corr≈0.937,half-life≈86 bars这和很多短周期 stat-arb 的经验一致:majors 最干净,但也最容易被卷平;mid-cap 某些结构 pocket 反而更厚。
15m residual extreme fade 当前是正的,而且越拉长到 2h~3h 越像样对这些入选 pair,用 residual |z|>=2 作为事件,方向按“偏离就反手回归”处理:
n=20834/8/12 bars(约 1h/2h/3h)mean gross ≈ +7.39 / +15.59 / +23.08 bps56.8% / 60.9% / 62.3%若同一时点多个 pair 同时触发,只做 abs(z) 最大 的 strongest-only router:
n=15284/8/12 bars mean gross ≈ +8.13 / +15.97 / +23.69 bps57.7% / 61.7% / 63.4%也就是说,这条线当前更像:
> 15m pair-admission + strongest residual dislocation router + 2h~3h time-box fade
而不是高频秒杀策略。
5m child execution,当前反而转负把同样的 15m 事件拿去看 5m 子窗口:
3/6/12 个 5m bars mean gross ≈ -5.39 / -3.34 / -0.83 bps这很关键:不要看见 spread fade 就本能想“越快越好”。 当前更合理的 desk 读法反而是:
15m1h~3h5m 只适合做更细的挂单/分批,不适合拿来重写信号本体---
cointegration-first residual spread mean reversionabs(z) 足够大、且 strongest-only 的 dislocation|z|<exit_z 平仓或 1h~3h time-box;|z|>stop_z 止损;成本要按双腿进出场估算,而不是单腿 thinking---
因为它补的是 raw alpha 素材池,不是又一个“shared gate”。
而且它服务的是我们最近持续在补的空缺:
更具体地说,这轮先回答了一个很直接的问题:
> 对 short-cycle crypto desk,pairs/stat-arb 该先押注在哪一层?
当前答案不是“复杂图聚类”也不是“先上 Kalman 全家桶”,而是:
> 先把 pair admission 和 residual extreme fade 这条最朴素的 raw alpha 壳测扎实。
---
10~20 个 liquid perp;15m 更新 residual z-score;|z|>=2,做 beta-neutral spread fade;若多组同时触发,只做 abs(z) 最大的 1 组;8~12 根 15m,或 |z|<0.5 提前出;先看两个指标:
gross / net bps per tradepair breakdown:edge 是否被少数 mid-cap pair 独占下一步怎么测:
8 / 12 / 16 / 20 bps 的双腿 round-trip 生死线;ratio-zscore pairs、cluster deviation stat-arb、residual loser-bounce basket 比,确认它是不是独立 pocket。---
repo 有更完整的 Engle-Granger / ADF / WFO / cost 结构;我这轮先做的是 short-cycle portability proxy。
这是双腿进、双腿出;gross 15~24bps 看着不错,但如果 taker/slippage 合计上到 16~20bps,很多边际样本就会被吃掉。
crypto 里叙事切换、funding、链上事件、上币/下币消息,都会让原本稳定的 pair 突然失效。
这意味着 edge 可能更厚,但容量、滑点、冲击成本也会更差。
---
这轮我会把它放进:
> 可独立复现、且可直接落成完整策略壳的 raw alpha 候选。
不是因为 repo 的日频成绩单很漂亮,恰恰相反—— 正因为 repo 把骨架写清楚、但原版成绩并不神,我们才更容易老老实实地把它拆成 desk 真正该先测的那一层。
当前最值得保留的,不是“大而全 stat-arb 平台”这件事,而是:
> pair admission × strongest residual dislocation fade 在 15m 上有 pocket evidence,但不适合直接压成 5m 高频执行。
---