源文件:research/quant_digests/2026-03-30_2005_btceth-spread-mr-momentum-veto.md
15m 最小快检15m 口径下只有 gross edge,轻微成本后即转负)先回答 base alpha:这条东西的 base alpha 是 BTC/ETH relative-value spread 的短窗均值回归,不是 portfolio optimization,也不是“两个币各做各的方向预测”。
我这次主看的是 notaconduit/Statistical-Arbitrage-in-Cryptocurrencies 这份 2024 更新的公开 repo。它表面上写的是“stat arb + mean reversion + portfolio optimization”,但源码层真正能为我们 desk 提供价值的,不是 README 里的大词,而是一个更小、更诚实的旁支想法:
15m 上很快复现的 BTC/ETH beta-neutral spread trade。更直白地说:别照抄 repo 那个“把 BTC/ETH 各自的 mean-reversion 和 momentum 平均起来”的写法;真正值得做最小实验的,是把它翻译成“spread MR × momentum veto”的完整 pairs raw alpha。
BTC/ETH spread MR × momentum veto 在当前 15m 口径下 有一点 gross edge,但净边极薄,轻微成本就会被打穿;因此它更适合当 keep-as-control / reject-for-now 的 raw-alpha 对照卡,而不是马上升优先级。mean_reversion + momentum 思路改写成 BTC/ETH 的 beta-neutral spread z-score 策略,在 Binance Futures 公共 15m 数据上做 120 天快检,gross 为正,但从极轻微成本开始就转负。3 个关键数据点(本地快检):
120d、15m、entry |z|>2.0、exit |z|<0.5、max_hold=8 bars,gross +0.58%,Sharpe 0.57,MDD -1.08%。cost_per_turn=0.0001,结果就变成 -0.66%,Sharpe -0.66;若到 0.0003,则是 -3.10%,Sharpe -3.08。cost_per_turn=0.0003 下,不加 veto 时样本内 322 笔入场、总回报 -16.66%;加 veto 后只剩 62 笔入场,亏损缩到 -3.10%,说明 veto 主要作用是压换手与回撤,而不是把薄 edge 变成厚 edge。这不是 filter/overlay 伪装成 alpha;它本身就是一条完整的 raw alpha:
entry / exit / sizing / risk / cost;15m → 5m 的快速 survival check。更重要的是,它满足这轮用户给的“灵活读法”:
spread = log(ETH) - beta * log(BTC);z > +2 做 short spread(short ETH / long BTC);z < -2 做 long spread(long ETH / short BTC);8 bars 动量仍沿入场方向加速,则 跳过这次入场。|z| 回到 0.5 内,或持仓达到 8 bars 强平退出0 / 0.0001 / 0.0002 / 0.0003 四档敏感性源码里至少有三处明显问题:
main.py 调用了 data.get_prices() 与 portfolio.get_positions(),但 repo 当前公开文件里并没有对应可运行定义;portfolio.py 原始文件本身是不完整的,代码在函数内部就截断了;所以这份 repo 不能当成 production-ready skeleton。
真正有价值的是它暴露了一个简单但可测试的问题:
这正是本次 digest 想留下的点。
1m/3m/5m/15m 都可直接拉BTCUSDT、ETHUSDT15m120d96 bars96 bars|z| > 2.0 入场,|z| < 0.5 离场8 bars8 bars 若仍沿入场方向加速,则跳过return / Sharpe / MDD / trades / cost sensitivity5m,但别直接照搬参数:把 beta/zscore/lookback/hold 统一按“自然时间”而不是 bar 数重标,验证 veto 是否还能压换手。ETH funding - beta*BTC funding 是否会把本来就很薄的 gross edge 吃掉,或反而提供额外 carry。UTC 13:00–17:00 与 20:00–24:00 这种 liquidity 更厚的时段启用,看成本后是否能留下正 pocket。spread momentum veto + realized vol ceiling,避免在单边扩散 regime 里一直逆势接刀。cointegration spread × beta-consistent sizing、fixed-threshold pairs MR 卡片并排,确认这条线是否只是另一个“gross 微正、净值不过线”的近亲。reports/artifacts/quant_digests/btc_eth_pair_repo_probe_20260330/summary.jsonreports/artifacts/quant_digests/btc_eth_pair_repo_probe_20260330/cost_sensitivity.csvreports/artifacts/quant_digests/btc_eth_pair_repo_probe_20260330/prices_15m.csv