源文件:research/quant_digests/2026-04-15_0336_avaxicp-validationranked-spreadfade-shell.md
README.md + config/default.yaml + src/crypto_trader/signals/pairs.py + src/crypto_trader/backtest/pairs_engine.py + src/crypto_trader/analysis/pairs_research.py + src/crypto_trader/backtest/slippage.py + data/processed/pairs/strategy/pairs_comparison_summary.csv + data/processed/costs/strategy_comparison.csv)spread = y - beta*x 做历史滚动 z-score;|z| 偏离够大就做 spread mean reversion,回到均值附近平仓。这次主看的是一个 2026 GitHub research repo:
Rah9742Crypto-Stat-Arb先把 base alpha 说清楚: > 这篇东西的 base alpha 不是“validation 排名”,也不是“成本模型”。它真正的 base alpha 仍然是 cointegrated spread mean reversion。
但这份 repo 值得 intake 的地方在于:它没有停在“找一对协整资产然后画 z-score”,而是把一条更接近 production review 的完整壳补齐了——rolling formation / zscore、状态机 entry-exit、cost-aware sizing、gross exposure cap、train-validation-test 排名、以及最终 cost rerun 全都在同一套框架里。
generate_pair_signal_state() 用的是历史口径状态机:|z| >= entry 开仓,|z| <= exit 平仓,额外还有 stop_zscore 和 max_holding_period_bars。
rank_validation_configurations() 先筛:validation/test 不得爆仓、terminal equity 不能太低、drawdown 不能穿线、validation/test trade 数要够,然后再按 validation_sharpe / test_sharpe / calmar / return / turnover / train-validation gap 的加权分数排序。
build_pair_target_notionals() 会按 expected_move / round-trip cost 和 |z|/entry_threshold 缩放 gross target,不够划算时最小只给 cost_aware_min_scale。
AVAXUSDT/ICPUSDT,而且不是只在 in-sample 好看。pairs_comparison_summary.csv 第一名参数是:
12096 bars2016 bars2.50.2548 bars+39.02%1.87+31.74%1.342347.39 barsstrategy_comparison.csv 里,pairs 最终 rerun(AVAXUSDT/ICPUSDT,15m)结果是:
+38.17%+25.74%1242.89 USDT140.75x1.18-30.31%一句话结论: > 这份 repo 最值得 desk 学的,不是“协整 spread 可以均值回复”这种老话,而是:如何把一条 pairs raw alpha 做成一套带 validation 证据门槛、成本缩放和 gross exposure 约束的完整研究壳。
它主要靠什么证明? > 靠源码里的历史口径实现 + sweep 排名表 + 单独 cost rerun 表,而不是只靠 README 口号。
这份东西和当前 momentum 主线直接相关,因为它补的不是泛解释,而是 可复现、可进素材池、可拆成实盘组件 的 raw alpha 壳:
pairs / stat-arb / relative-value / mean reversionentry / exit / sizing / risk / cost 一整条链更现实一点说,最近 digest 里虽然 pairs 很多,但多数结论都落在:
这次不太一样: > Rah 这份 repo 至少给出了一条成本后仍然为正的 15m 现成 rerun。
当然也要留个心眼:config/default.yaml 顶部还有个 interval: 4h #15m 的旧注释,说明配置说明和最终产物存在过漂移;真正可信的口径,要以 strategy_comparison.csv 里落下来的 bar_frequency=15m 和具体参数表为准。
如果某对 liquid majors/alts 在滚动 formation 窗里仍维持较稳定的 cointegration / hedge ratio,那么 15m spread z-score fade 在加上最基本的 cost-aware sizing 和 gross cap 后,仍可能留下可交易净值曲线。
先不要一上来就做全市场 pair search,直接做 4 步:
15m 复刻 repo 口径84d / 126d 两档14d / 21d2.0 / 2.50.25 / 0.524 / 48 barstrain / validation / test5m 只做 execution translation,不改 alpha 本体保持 pair admission 和 signal state 在 15m 冻结,把执行拆到 5m:
15m 生成 state5m 做被动 close-out / rebalance3m / 1m 只测 exit microstructure,不要重做全套选 pair最先测的不是新 alpha,而是:
1m/3m 是否更适合做 partial exit / passive unwind最少给三档:1 bps / 2 bps / 5 bps,否则 pairs 研究很容易把 gross alpha 误当净 alpha。
按当前 desk 价值排序,我会先测这三件事:
不是为了复制 AVAX/ICP 本身,而是为了回答:这个 ranking + evidence bar 是否真能筛出更稳的 crypto perp pairs。
cost_aware sizing 和 fixed sizing 做 A/B这是 repo 最值得偷的旁支之一。先看:在同一个 raw alpha 上,它到底是实打实改善净收益,还是只是缩了风险同时也缩了机会。
15m signal / 5m execution / 1m unwind 拆层如果这套壳未来真要进实盘,最像 production 的路线不是把 alpha 硬压到 1m,而是让更快频率去服务退出、减仓、冲击控制。
config/default.yamlsrc/crypto_trader/signals/pairs.pysrc/crypto_trader/backtest/pairs_engine.pysrc/crypto_trader/analysis/pairs_research.pysrc/crypto_trader/backtest/slippage.pydata/processed/pairs/strategy/pairs_comparison_summary.csvdata/processed/costs/strategy_comparison.csv