源文件:research/quant_digests/2026-04-01_0428_ou-halflife-wideband-pairs-alpha.md
README.md + band_calc.py + backtest.py + config.json + run_and_rank.py)+ Cartea/Jaimungal 经典 co-integrated assets 文献锚点 + Binance 5m 本地 threshold-transfer quick check这次主材料不是新论文,而是一份 2025-12 创建、2026-01 更新 的新 repo:
djienne/pair_trading_cartea_jaimungal_penalva表面看它只是把教科书里的 pairs trading 代码化,但对我们 desk 真正有价值的,不是“又一个 cointegration spread 回归”,而是它把下面这条链条连完整了:
half-life × threshold × cost 这三个旋钮上。它和我们最近那批 pairs digest 的区别在于:
一句话:
base alpha = 两个近 cointegrated 资产的 beta-hedged spread 偏离均衡后,向长期均值回归;在 spread 足够偏、且回复速度足够快时做反向收敛。
所以它是标准的:
pairsstat-arbrelative valuemean reversion不是 filter,不是 overlay,不是纯解释型材料。
如果把 repo 里那层 OU / optimal stopping 数学全拿掉,raw alpha 本体仍然成立;但如果不把 band widening 和 half-life gate 写进去,实盘上通常会被过度交易和成本吞掉。
band_calc.py 的重点不是“数学更高级”,而是 band 要对 cost 有反应repo 在 band_calc.py 里不是简单用固定 k * std 设阈值,而是:
kappa / mu / sigmatransaction_cost 塞进 CointOpti(...)翻成人话:
> band 不是固定参数,而是“回复速度、波动、成本”共同决定的 admission hurdle。
这比很多 short-cycle pairs repo 诚实,因为后者往往默认:
而这份 repo 的做法更像:
backtest.py 的骨架足够完整,已经不是“只会画 z-score 图”repo 的交易状态机很直接:
z <= lower:做多 spread(long Y / short beta * X)z >= upper:做空 spreadmu:平仓它没有把仓位管理做得很复杂,但这反而适合 desk intake,因为你能清楚拆出:
也就是说,它已经是一个完整策略骨架,不只是“信号候选”。
run_and_rank.py 的意义:先在全市场找“可交易 pair 供给”,再谈单对优化repo 支持:
这点对 desk 很重要,因为 pairs 不是单一 alpha,而是供给池:
ETH-ADAAVAX-ETH所以真正该测的,不只是某一对,而是:
> 在给定频率、给定成本下,市场里有多少对 pair 能稳定供给正 alpha?
这次最值得带走的不是“我也要马上把 free-boundary 数值解搬进主线”。
更重要的,是先把它读成一句更朴素的话:
> short-cycle pairs 最怕的不是没偏离,而是 band 太窄、回复太慢、交易太勤。
所以对我们更有价值的,不是 headline 里的 optimal stopping 四个字,而是它隐含的三条策略纪律:
这三条都能直接迁移到 1m / 3m / 5m / 15m 的最小实验里。
为了避免把 repo 的日频回测结果硬搬成结论,我做了一个更小、更快的 5m transfer check:
5m 样本ADA / AVAX / BNB / DOGE / ETH / LINK / SOL / XRP1500 根 5m bar(约 5.2 天)28 对288 根 5m bar(约 1 天)y - (alpha + beta * x)half-life < 144 bars(小于半个 formation window)且 |beta| < 10 的时点6 bps 与 10 bps 的简化 proxy注意:
在 one-way 6 bps 成本下,对全部 28 对 pair 做 threshold sweep:
1.0σ:14 / 28 对为正这行结果非常值钱,因为它几乎把 repo 的核心直觉用最小实验复读了一遍:
> 窄 band 会把你推向高频噪声交易,而不是更高 edge。
同样是一批数据、同一套 pairs proxy,在 one-way 6 bps 下:
2.0σ:平均收益 +1.03%,正收益 17 / 28,中位交易 182.5σ:平均收益 +1.46%,正收益 18 / 28,中位交易 153.0σ:平均收益 +1.25%,正收益 20 / 28,中位交易 9也就是说:
2.5σ 给了这轮样本里最好的平均回报;3.0σ 虽然平均回报略低,但正收益 pair 数更多,更像“稳一点但慢一点”的版本;AVAXUSDT-ETHUSDT,切到宽 band 后变成 ADAUSDT-ETHUSDT,说明 赢家 pair 会随阈值改变,不是固定一对吃天下。这批最靠前 pair 的 median half-life 大多在:
12 ~ 18 根 5m bar这正好落在我们能接受的短周期回复速度区间里。
翻成人话:
6h / 12h 才回复,5m 上你大概率已经不是在做短周期 stat-arb,而是在扛结构性偏离;60~90m,那它更适合被做成 5m 主信号,15m 做 gate / disable。在 one-way 10 bps 的更重成本假设下:
2.5σ:平均收益 +1.08%,正收益 16 / 283.0σ:平均收益 +1.02%,正收益 19 / 28这看起来还活着,但这里必须诚实:
5.2 天,太短;所以正确结论不是“这就能直接实盘”,而是:
> 这条线至少证明了:把 band 放宽、把回复速度写进 gate,并不是纸上谈兵;在极简 5m proxy 里它确实改善了可交易性。
因为它不是单纯再写一遍 pairs 教科书,而是刚好补到当前 desk 最缺的那块:
pairs 的 alpha 本体我们已经有很多变体:
但真正上线最容易出事的,是:
这份 repo 给的价值,就是把这三个问题拎出来做成显式组件。
1m / 3m / 5m / 15m 都有可迁移意义1m / 3m:更适合做 entry trigger + maker priority + execution veto,band 应更宽5m:最适合做完整 signal transfer,先看 spread 回复能否穿过成本壳15m:更适合做 relationship gate / pair availability refresh / disable state所以它不是只能服务一条慢频线,而是可以拆成:
5m raw alpha skeleton15m regime / gate1m / 3m execution layerhalf-life < H_max、beta 稳定、spread 波动足够的窗口开仓muhalf-life timeoutpair relationship invalidationPnL stop / spread stoppair disable:half-life 连续恶化 / beta 飘移 / residual variance 爆掉portfolio cap:同簇 pair 不要高度重叠turnover budget:避免 band 一放窄就把 book 变成假高频fee + slippage 有单调反应这轮我只测了它的策略含义,下一轮该测它的数值实现是否真的优于固定阈值:
1.5σ / 2σ / 2.5σ / 3σband_calc.py 的 OU optimal bands90d ~ 365d这次 1500 根 5m 只是最小 transfer check,太短。
下一轮至少做:
90d / 180d / 365d不要只问“哪一对最好”,要问:
如果下一轮只做 mean-cross exit,结论会偏乐观。
至少要补:
值得进入研究池,而且优先级不低。
但它值得进入的原因,不是“optimal stopping 很 fancy”,而是:
5m proxy 已经给出可迁移信号:宽 band + half-life gate 比窄 band 更像活的东西;raw alphabeta-hedged cointegration spread mean reversion是是djienne (repo created 2025-12-27, pushed 2026-01-05). _pair_trading_cartea_jaimungal_penalva_. GitHub repository.reports/artifacts/quant_digests/ou_optimal_band_pairs_20260401/reports/artifacts/quant_digests/ou_optimal_band_pairs_20260401/threshold_sweep_summary_5m_6bps.csvreports/artifacts/quant_digests/ou_optimal_band_pairs_20260401/cost_threshold_compare_5m.csvreports/artifacts/quant_digests/ou_optimal_band_pairs_20260401/summary_threshold_sweep.jsonresearch/quant_digests/2026-04-01_0428_ou-halflife-wideband-pairs-alpha.mdhttps://eu.jerrypsy.top/momentum/reading/quant_digests/2026-04-01_0428_ou-halflife-wideband-pairs-alpha.html