源文件:research/quant_digests/2026-04-13_0806_allmarket-pairadmission-zscore-fade.md
README.md + main.py + cointegration.py + telegram_message.py + zscore_backtest.py + total_backtest.py + top5_tradingcoin.py + top5_cointegrated_pairs.csv)+ Binance USDⓈ-M 15m/5m public-data portability probez-score 反转;也就是“不是直接赌单币涨跌,而是赌两条强相关腿之间的价差会回归”。> base alpha = cointegrated spread mean reversion(配对价差回归)。
这份 repo 表面上像一个“每小时推送 top5 pair 信号”的 Telegram bot,但真正对我们 desk 有价值的,不是提醒器,而是它背后的 raw alpha 壳:
翻成人话:
ADA 或 SOL 单边要涨还是要跌;所以这不是 filter / overlay,它本体就是一条 可独立交易的 relative-value raw alpha。
reports/artifacts/quant_digests/2026-04-13_janghyuk_pairs_probe.pyreports/artifacts/literature/janghyuk_pairs_portability_probe_2026-04-13.csv> 这份 repo 最值得 desk 接的,不是它给出的某个固定 pair,而是“全市场 pair admission → spread z-score fade”这条可复现 raw alpha 流程;但 hedge-ratio / backtest 数学现在还不够干净,必须先重算。
> 证明不是靠 README 口号,而是靠源码拆解 + Binance 公共 15m/5m 数据快检:我们能看见 admission、entry、exit 的规则骨架,也能看到当前 pair 的 spread 振荡密度足够做 first verdict,但现成导出的 hedge ratio 与当前样本 OLS 结果存在明显漂移。
这轮值得写,不是因为“pairs 又来一篇”,而是因为它补的是当前素材池里很需要的一层:
这对 momentum 项目很重要,因为它把“alpha 本体”和“admission 层”分开了。
15m / 5m 的 spread shell,就能很快给出 first verdict;这份 repo 最值钱的,不是任何一个单独参数,而是这个 3 段式流程:
main.py 取 Binance USDT perpetual universe;1h / 200 bars 上做 cointegration check。cointegration.py 用 coint() 做协整检验;zero_crossings 与最新 z-score。z > 2:short 第一腿 / long 第二腿;z < -2:long 第一腿 / short 第二腿;|z| < 0.5:exit。这就已经够构成一条 最小可运行 pairs raw alpha shell。
但如果把它当“可直接上线策略”,现在还不行:
zscore_backtest.py 里引用了并不存在的 calculate_spread;total_backtest.py 甚至是本地随机数 mock,不是严肃实盘前回测口径。所以对我们来说,正确读法不是“抄 top5 csv”,而是:
> 抄它的流程,不抄它的结果。
15m/5m?我用 repo 给出的 3 个样例 pair(ADA/SOL、DASH/AVAX、BAT/SUSHI)在 Binance USDⓈ-M 上做了一个很轻的 90d probe,先不宣称收益,只检查:
|z| > 2 这种触发在 15m/5m 上会不会稀到没法做。#### ADAUSDT / SOLUSDT
15m 相关性:0.969615m |z| > 2 触发:242 次 / 90d`101.4h这说明:
#### DASHUSDT / AVAXUSDT
15m 相关性:0.930715m |z| > 2 触发:277 次 / 90d`32.4h这是三组里更像 first test lane 的一组:
ADA/SOL 更接近可交易的短周期配对壳;15m 执行层验证,比盲扫全市场更省时间。#### BATUSDT / SUSHIUSDT
15m 相关性:0.951915m |z| > 2 触发:274 次 / 90d`110.7h它的问题和 ADA/SOL 类似:
有个很关键的红旗:
repo_hedge_ratio,和我们用当前 90d 公共数据重算的 ols_hedge_ratio,有明显偏差;DASH/AVAX、BAT/SUSHI 这种差得很离谱。这说明两件事:
|z| > 4 stop;2×half-life time stop;双腿 round-trip 成本统一计入这里不要先做“大而全配对平台”,直接做一个最小但干净的实验:
研究假设
30~50 liquid universe 中,若先在 1h 上做 pair admission,再在 15m 上执行 spread z-score fade,则一小部分 pair 能在双腿成本后保留正的 mean trade edge。可计算定义
4h 重做一次 admission:corr > 0.85p < 0.05< 48h>= N15m:|z| > 2 entry,|z| < 0.5 exit|z| > 4 stoptime stop = 2 × half-life最小回测切口
1h,execution 15m,必要时用 5m 细化 exit180dDASH/AVAX 开始,再扩到全市场 top 30~50最该先看的 2 个指标
如果这两个先不过线,就别急着上复杂 ML 或动态 portfolio。
这条线值得进研究池,但优先级应放在:
更具体地说:
> 可以抄它的“admission → spread → z-score”骨架,但不能抄它现成 CSV 和回测结论。
URL: <https://github.com/JanghyukChoi/binance-statistical-arbitrage-bot>
DOI: <https://doi.org/10.2307/1913236> Readable URL: <https://www.jstor.org/stable/1913236>
Klines endpoint: <https://developers.binance.com/docs/derivatives/usds-margined-futures/market-data/rest-api/Kline-Candlestick-Data>