源文件:research/quant_digests/2026-04-14_1638_hyperliquid-linkedmarket-spreadfade-shell.md
README.md + src/arb/signals/spreads.py + notebooks/03_spread_reversion.py + src/arb/backtest/engine.py + src/arb/backtest/metrics.py + tests/test_signals.py)+ Hyperliquid public allMids live probelong cheap leg + short rich leg 的 z-score fade,赚的是相对错位回归,而不是押单边方向。> base alpha = economically linked market pair spread mean reversion。
这份新 repo 真正值得 desk 先收下来的,不是“它同时研究 lead-lag、funding、execution”这么泛,而是它把其中最贴 short-cycle raw alpha 的那条支线写得很清楚:
翻成人话: 不是赌 SPX、BNB 或 gold proxy 下一根涨跌, 而是赌 两条本来应该跟得更近的市场腿,暂时错位后会回归。
所以这不是 filter,也不是 overlay;它本体就是一条 relative-value / stat-arb / spread-fade raw alpha。
prabhathcnatu2026-04-14T06:30:38Z2026-04-14T07:42:05ZHIP-3 cross-venue basis and lead-lag validation program for HyperliquidREADME.mdsrc/arb/signals/spreads.pynotebooks/03_spread_reversion.pysrc/arb/backtest/engine.pysrc/arb/backtest/metrics.pytests/test_signals.pyreports/artifacts/quant_digests/2026-04-14_hyperliquid_linked_market_spread_probe.pyreports/artifacts/quant_digests/hyperliquid_linked_market_spread_probe_2026-04-14_raw.csvreports/artifacts/quant_digests/hyperliquid_linked_market_spread_probe_2026-04-14_summary.csv> 这份 repo 最值得 desk 先吸收的,是 linked-market spread z-score fade 这条 raw alpha 壳;但 live public probe 先暴露出的第一瓶颈不是 z-score 阈值,而是 HIP-3 / deployer 腿在短窗口里经常明显 stale,所以下一层 admission 应先做“freshness / update-rate gate”,再谈 1m/3m/5m 真正迁移。
> 证明来自两层:源码里 spreads.py 已把 OLS beta、z-entry/z-exit、half-life、post-cost edge 写成可复现规则;而我用 Hyperliquid public allMids 做 120 秒 live probe 后看到,XAUT0/GLD、SPY/QQQ、BNB/BNB1 这些 linked pair 的两条腿更新频率极不对称,最典型的是 XAUT0 17 次 vs GLD 0 次、BNB 68 次 vs BNB1 2 次,说明短周期 first verdict 必须先做 stale-leg veto。
这轮仍值得单独写,原因有三层:
已有很多 digest 在测 cointegration / pair admission / spread fade,但大多还是传统 coin-vs-coin、spot-vs-perp、cross-venue futures basis。这份 repo 把目标市场换成了 Hyperliquid 原生 perp + HIP-3/deployer token + 外部 reference 的混合 linked-market 宇宙,结构上更接近一条新数据面。
这轮不是再讲 breakout、trend filter 或执行 veto,而是明确补一条 relative-value / stat-arb / pairs / spread MR 思路,而且能落到 1s/1m/3m/5m/15m 的最小实验。
README 明说四类假设要逐条验证,不是假定 edge 一定成立;这很适合 desk intake,因为我们要的是 first verdict 素材池,不是漂亮故事。
README 里把四条假设分成:
其中对本轮最重要的是 Hypothesis B = structural edge。 这等于 repo 作者自己已经帮我们把层级划好了:
所以这轮完全可以不被 README 的“大而全”带偏,直接盯住 B。
spreads.py 已经把最关键的 raw alpha 骨架写清楚了src/arb/signals/spreads.py 的价值非常直接:
hedge_ratio():rolling OLS,且是 no-intercept 口径;spread_series():price_a - beta * price_b;z_score_series():spread 相对 rolling mean/std 的标准化偏离;half_life():用 AR(1) 近似估回归半衰期;signal():z < -z_entry → long_a_short_bz > z_entry → short_a_long_b|z| < z_exit → exitcompute_stats():把 avg_edge_bp、post_cost_edge_bp、ADF stationarity 一起吐出来。默认阈值也很清楚:
z_entry = 2.0z_exit = 0.5翻成人话就是: > 先别谈 fancy feature,先问 linked pair 的 spread 有没有“偏离够大再回去”的基本形状。
这正是 raw alpha 最该先回答的问题。
03_spread_reversion.py 说明它不是停在公式层notebooks/03_spread_reversion.py 进一步把研究口径写死了:
1s);calm vs stress 的 breakdown test;post_cost_edge_bp <= 0 且 is_stationary == False,那这不是 edge,只是噪音。这句话很重要,因为它把 raw alpha intake 的录取线说得非常清楚。
虽然本轮不打算把它吹成“马上能上实盘的完整策略”,但 repo 的 backtest/metrics 层确实比很多新仓库认真:
engine.py 是 event-driven 回放,不是简单 candle 回测;slippage_multiplier、fee_multiplier、latency_ms;所以更准确的定位不是: > “这就是一条已经验证完成的策略。”
而是: > 这是一条 raw alpha 候选 + 一套很像 desk intake 流程的验证壳。
本轮 public probe 很轻,但足够说明问题:
/info type=allMids120 秒、1s 一次,共 120 个 snapshotXAUT0 vs GLDSPY vs QQQBNB perp vs BNB1 spotbeta / spread_std / current_z / half_life / return corr;XAUT0 动了 17 次,但 GLD 在 120 秒里是 0 次更新XAUT0 abs move ≈ 8.66 bpsGLD abs move = 0stale_leg_detected这说明什么? 不是 gold proxy 这条线一定没 alpha, 而是 当一条腿在动、另一条腿基本不动时,短周期 z-score 更像 stale-quote 计数器,而不是可执行的 spread MR。
SPY/QQQ 两条腿在 120 秒里都是 0 次更新spread_std = 0stale_leg_detected;zero_spread_variance这基本等于直接提醒我们: > 不能因为 pair 在 registry 里存在,就默认它适合做 1m/3m/5m first verdict。
BNB perp 动了 68 次,但 BNB1 只有 2 次更新BNB abs move ≈ 21.51 bpsBNB1 abs move ≈ 502.31 bpshedge_ratio ≈ 1.003spread_std ≈ 1.414current_z ≈ 0.088leg_return_corr ≈ 0.169这一组更有代表性: 一条腿连续小步动,另一条腿长时间静止、偶尔跳一下, 最后看起来“也不是完全不相关”,但 它的时间结构根本不像持续、顺滑、可按 spread fade 做管理的 pair。
XAUT0/GLD 的表面 half-life 约 9.3 samples,不该被误读成“已经证明可做”因为 GLD 这条腿根本没更新, 所以这个 half-life 更可能反映的是 单腿在对一条冻结锚点做回摆, 而不是双腿共同构成的 live MR。
这也是本轮最重要的坑: > 如果不先做 freshness gate,半衰期、z-score、甚至 stationarity 都可能被 stale quotes 污染。
这一点很明确:
所以从题材分类上,它就是 raw alpha / stat-arb / relative-value。
我给“是否可直接落地完整策略”打 否,原因不是 base alpha 不清楚, 而是:
换句话说: > 不是 alpha 没定义好,而是 live admissibility 这一步还没补齐。
因为它补了一个很有价值的研究问题:
> 在 Hyperliquid 的原生 perp + HIP-3 / deployer token 混合宇宙里,短周期 relative-value 到底应该先看“价差”,还是先看“报价是否还活着”?
这对 desk 很有价值:
我会把下一步拆成 4 个最小实验,而不是继续空谈“等更多数据”:
对每个候选 pair 先打 3 个 admission 指标:
both_leg_updates_per_5mstale_gap_p95_s:两条腿最近一次更新时间差的 p95active_overlap_ratio:两腿都在最近 N 秒内有更新的样本占比只有满足例如:
both_leg_updates_per_5m >= 10stale_gap_p95_s <= 3active_overlap_ratio >= 0.6才允许进入真正的 spread MR 回测。
先不要做太大而全的组合,直接做:
1s mids → 聚合成 1m / 3m / 5m30m / 2h / 6hbeta|z| >= 2 开仓|z| < 0.5 平仓max_hold = 5 / 15 / 30 bars3s 未更新,则不许开仓对每个 pair 先跑:
2 / 4 / 8 / 12 bps round-trip这样能先回答: > 这条线的 alpha 本体到底有多厚,以及它到底是被成本杀死,还是被 stale-leg 假信号污染。
下一轮别铺太宽,先盯 3 类:
例如类似 BNB perp vs BNB1 spot 这种“有真实共底层映射可能性”的 pair。
例如 XAUT0 vs GLD,但前提是 deployer 腿更新率先过 freshness gate。
例如 SPX / SPY / QQQ / QQQM,不是默认做 pair,而是先判断哪两条腿真的在 live window 里同时动。
我的判断很明确:
> natu 这份 repo 这轮最该被吸收的不是“Hyperliquid 有很多奇怪 token”,而是它把 linked-market spread MR 作为独立 raw alpha 假设写得很清楚;但 public first verdict 也很明确:先别急着测收益,第一步先做 stale-leg / freshness admission,否则很多看起来漂亮的 z-score 只是报价冻结造成的幻觉。
如果只用一句更短的话收束:
> base alpha 是对的;第一道门不是 beta,也不是 ADF,而是两条腿到底有没有在同一个时间里活着。
prabhathc (2026), natu. GitHub repo.spreads.py: <https://raw.githubusercontent.com/prabhathc/natu/master/src/arb/signals/spreads.py>03_spread_reversion.py: <https://raw.githubusercontent.com/prabhathc/natu/master/notebooks/03_spread_reversion.py>engine.py: <https://raw.githubusercontent.com/prabhathc/natu/master/src/arb/backtest/engine.py>metrics.py: <https://raw.githubusercontent.com/prabhathc/natu/master/src/arb/backtest/metrics.py>tests/test_signals.py: <https://raw.githubusercontent.com/prabhathc/natu/master/tests/test_signals.py>/info type=allMidsreports/artifacts/quant_digests/2026-04-14_hyperliquid_linked_market_spread_probe.pyreports/artifacts/quant_digests/hyperliquid_linked_market_spread_probe_2026-04-14_raw.csvreports/artifacts/quant_digests/hyperliquid_linked_market_spread_probe_2026-04-14_summary.csv