源文件:research/quant_digests/2026-04-17_2226_correlationranked-ratio-zscore-pairs-alpha.md
README.md + correlation_bot.py + phase1_data_fetch_correlation.py)+ Binance USDⓈ-M public-data portability probe(1m / 5m)short rich leg / long cheap leg,赌价差回到均值。correlation_bot.py:<https://raw.githubusercontent.com/ApexQuant-Dev/binance-correlation-stat-arb/main/correlation_bot.py>phase1_data_fetch_correlation.py:<https://raw.githubusercontent.com/ApexQuant-Dev/binance-correlation-stat-arb/main/phase1_data_fetch_correlation.py>先把 base alpha 说清楚:
> 不是“相关性高就能赚钱”,而是“先用相关性做 pair admission,再对 admitted pair 做 ratio 极端偏离的均值回归”。
所以它不是单纯 filter,也不是研究工具本身,而是一条标准的 pairs / relative-value / stat-arb / raw alpha:
repo 的主逻辑很短,但交易本体很清楚:
ratio = price_A / price_B;z > 2 时,认为 A 相对 B 偏贵,做 short A / long B;z < -2 时,认为 A 相对 B 偏便宜,做 long A / short B。correlation_bot.py 里最核心的几行其实就这三件事:
1m OHLCV;因为这里的信号本体就是:
pair admission = 这两个币最近确实在一起走entry trigger = 但此刻 ratio 偏离历史均值太多也就是说:
ratio z-score reversion。这点很重要。很多“相关性仓”最后只是做了个监控面板,这个 repo 虽然简陋,但至少已经把开仓方向写死了: > 价比值偏高就 short rich leg / long cheap leg;偏低就反过来。
如果只照 README 看,很容易把它当成“配对交易入门脚本”。
但对 short-cycle desk,更值钱的读法是:
> 把相关性当 pair admission 的最低成本近似,把 ratio z-score 当真正的 raw alpha,然后去问:在 1m / 5m 上,哪些 pair 还有 pocket,哪些 pair 其实已经被成本和结构变化吃死。
这比继续泛泛补一个“pairs 也许有用”的综述值钱得多,因为它直接回答:
phase1_data_fetch_correlation.py 明确写了:
5m、100 根 lookback这对 desk 很友好:
1m / 5m。repo 给了很清楚的 entry 语言,但几乎没写:
1:1 notionals 还是 beta-neutral;z=0 还是回到 |z|<0.5;所以它是 合格的 raw alpha 母板,但不是现成 production 成品。
不过本轮我仍把“是否可直接落地完整策略”标成 是,原因不是 repo 自己已经完美,而是:
klines API5m:近 30d1m:近 7d沿用 repo 默认/近似默认风格,测试:
ETHUSDT / BTCUSDTSOLUSDT / AVAXUSDTLINKUSDT / UNIUSDTARBUSDT / OPUSDTAPTUSDT / SEIUSDT最基础版本,先不加 fancy 模块:
30 bars|z| >= 2.0|z| <= 0.255m 版 12 bars(约 1h)1m 版 20 bars(约 20m)z > 0 ⇒ short A / long Bz < 0 ⇒ long A / short B12 bps 总成本(双腿合并口径,保守但还不算极端)5m 上基本全面不过线按 pair 看,5m baseline 全是负的:
ETH/BTC:339 笔,平均 -11.69 bps/笔SOL/AVAX:351 笔,平均 -9.34 bps/笔LINK/UNI:339 笔,平均 -9.01 bps/笔ARB/OP:373 笔,平均 -8.25 bps/笔APT/SEI:355 笔,平均 -6.30 bps/笔人话: > “相关 pair 出现 2σ 偏离就做回归” 这件事,在 recent 5m perp 上几乎是全军覆没。
1m 上也不是普遍有效,但 pocket 开始出现1m baseline 同样大多为负:
ETH/BTC:370 笔,平均 -11.08 bps/笔SOL/AVAX:378 笔,平均 -9.92 bps/笔LINK/UNI:399 笔,平均 -6.95 bps/笔APT/SEI:383 笔,平均 -6.80 bps/笔但 ARB/OP 明显是例外中的例外:
ARB/OP 1m baseline:403 笔,平均 -1.42 bps/笔,胜率 66.3%这说明: > 不是整条 alpha 完全死掉,而是 baseline 阈值太松,只有某些“强替代关系” pair 还保留了 pocket。
ARB/OP 在更严格的 3σ 触发下,已经能转成小幅正值我对 ARB/OP 1m 做了参数快扫。最有信息量的 pocket 是:
20 bars|z| >= 3.0|z| <= 0.530 bars12 bps结果:
205+1.73 bps/笔62.0%+3.55%(样本期约 7d)这不是“已经 production-ready 印钞”,但已经足够说明:
5m 口径里,连最好的 pair 也还只是接近成本线同样对 ARB/OP 5m 做参数快扫,最好的几组也仍是负的:
-0.49 bps/笔,190 笔,胜率 64.2%这说明一个很关键的 desk 结论: > 这条 correlation-ranked spread fade 目前更像 1m pocket,不像 5m 主战 alpha。
1m / 3m / 5m / 15m 的关系ARB/OP 这种替代关系强、消息与流动性经常联动的 pair,已经看到 pocket。1m 更抗噪,比 5m 更不容易让回归走完。因为它直接扩充的是 raw alpha 素材池,而且补的是当前 desk 仍然需要的 pairs / stat-arb / relative-value 母板:
ratio extreme → mean reversion;最小 production shell 建议:
N 根 return correlation 做 pair admission;|z| >= entry_thresholdspread_vol / level 没有突然跳变至少并行保留三种退出:
|z| 回到 0 ~ 0.5;10~30 bars 还不回,就强平;不要做 1:1 名义金额无脑对冲,建议:
这条线最容易被忽略、也最容易死在这里:
1m pocket 对 stale quote 特别敏感;所以所有回测都要至少输出:
优先加三层:
ARB/OP 这种强替代关系);ARB/OP 1m,别急着横向铺太多 pair下一轮最小实验建议直接围绕:
ARB/OP1m signal / 1m execution / 3m aggregationlookback 20~40entry 2.5σ ~ 3.5σexit 0.0 / 0.25 / 0.5max_hold 10 / 20 / 30 barstrade_count / avg_net_bps / time-of-day / side asymmetry / fill sensitivity最值得组合的不是另一个 pairs 指标,而是:
这轮最该记住的一句不是“pairs 失效了”,而是: > plain correlation-first z-score fade 基线大多已经成本后不过线,但替代关系更强的 pair(当前最像 ARB/OP)在 1m 高频口径里,仍可能留下只有极端偏离才值得做的 pocket。
1m,必须做滚动窗和分段验证;ARB/OP 的 edge 可能强依赖当下叙事联动,不能假设长期稳态存在;Repo URL: <https://github.com/ApexQuant-Dev/binance-correlation-stat-arb>
correlation_bot.py: <https://raw.githubusercontent.com/ApexQuant-Dev/binance-correlation-stat-arb/main/correlation_bot.py>phase1_data_fetch_correlation.py: <https://raw.githubusercontent.com/ApexQuant-Dev/binance-correlation-stat-arb/main/phase1_data_fetch_correlation.py>