源文件:research/quant_digests/2026-04-12_2356_hyperstat-fds-gated-bucket-mr-alpha.md
README.md + configs/default.yaml + configs/strategy_stat_arb.yaml + src/hyperstat/strategy/stat_arb.py + src/hyperstat/strategy/funding_divergence_signal.py + src/hyperstat/strategy/regime.py + src/hyperstat/strategy/allocator.py + src/hyperstat/backtest/engine.py + src/hyperstat/backtest/costs.py)+ repo bundled public-data probe(data/candles/*/5m.parquet + data/funding/*/8h.parquet)1h 出现显著相对偏离后,做 short rich / long cheap,赌的是 bucket 内 dispersion 压缩与相对收益回归;funding divergence 只负责 admission / confidence gate,不是 alpha 本体created_at=2026-02-20,pushed_at=2026-02-25这轮最值得 intake 的,不是把 repo 整体照抄成“又一个完整 stat-arb 系统”,而是先把它拆开成两层:
5m 频率下、看过去 12 bars = 1h 的 bucket 内 cross-sectional mean reversion;也就是说,这轮真正值得 desk 先测的不是: > “repo 里整套配置能不能直接搬上线?”
而是: > “bucket dispersion MR 这条 raw alpha 单独站不站得住?以及 funding divergence 能不能把一堆垃圾反转信号筛掉?”
很清楚:
> base alpha = bucket 内过去 1 小时相对强弱偏离过大后的 cross-sectional mean reversion。
翻成人话:
short rich / long cheap,赌偏离回归,而不是追强追弱。funding 在这里不是主信号,只是:
所以本轮主题归类应是:
raw alphastat-arb / relative-value / cross-sectional mean reversionstat_arb.py:核心信号其实很朴素repo 的 StatArbStrategy 并不神秘,本体就是:
timeframe = 5mhorizon_bars = 12 → 看过去 1h 收益1h log return 做 median + MAD 标准化|z| >= 1.5 开始激活,|z| <= 0.5 才允许退出min_hold_minutes = 30max_hold_minutes = 1440也就是: > 过去 1h 明显相对偏离的币,按 contrarian 方向做 fade。
这是标准的 raw alpha 骨架,而且是可直接复现的,不靠私有数据,不靠模型黑箱。
allocator.py / regime.py:真正复杂的是“怎么别把它做烂”repo 真正费力写的不是 alpha 本体,而是:
这恰恰说明一个现实:
> 这条 alpha 的难点不在“有没有想法”,而在“怎样把换手和拥挤过滤掉”。
funding_divergence_signal.py:repo 里最值钱的旁支FDS 不是简单看 funding 高低,而是揉了三件事:
repo 把它设计成:
confidence gate,决定这次是否值得放大或放行。这很符合 desk 用法,因为它回答的是: > 哪些 MR 偏离更像 crowding 失衡,哪些只是趋势里你去逆着接飞刀。
这次我没有停在源码阅读,而是直接用 repo 自带公开数据做最小实验:
data/candles/{symbol}/5m.parquetdata/funding/{symbol}/8h.parquetETH / SOL / AVAX / ARB / OP(bucket 侧)+ BTC(base factor)2026-02-03 12:50 UTC → 2026-02-20 22:05 UTC2026-02-16 11:00 UTC → 2026-02-20 22:05 UTC5m12 bars = 1h 偏离;向前看 12 bars = 1h 的相对回归为什么这口径是合格的:
5m,不用硬降采样;1m/3m/15m 变体测试。我先按 repo 默认参数跑了一轮最小回测(BTC + ETH/SOL/AVAX/ARB/OP,bucket MR + neutralization + funding overlay/FDS + repo 默认成本):
6 bps2 bps8 bps10 bps / 1pct RV1h5,013total_return = -45.70%pnl_gross = +0.92fees = 172.84slippage = 513.57pnl_net = -685.491500这组数的核心意思很简单:
> raw idea 不是完全没回归味道,但默认做法的 gross 基本打平,净值则被换手成本狠狠干穿。
所以这题不能老实巴交写成“可直接落地完整策略”,那样是在骗自己。
我把 alpha 本体拆出来,不走整套 backtest engine,而是直接看 bucket 内结构是否在未来 1h 有压缩:
定义:
1h 回报横截面的 80% quantile - 20% quantile 作为 bucket spread;1h 这个 spread 是扩还是缩。结果:
1h 平均变动:-36.17 bps82.3%9991h spread 变化的相关:-0.58翻成人话:
> bucket dispersion 会压缩,这件事是真的。
但问题也正出在这里:
接着我只看真正会触发交易的事件:
|z| >= 1.51h 的相对收益在 funding 可对齐的样本里:
9571h gross:-3.68 bps45.0%也就是说: > vanilla bucket MR 在这个 pocket 里并不够好。
我把 repo 的 FDS 思路做成最小 batch gate,对 active MR 事件按 gate score 做筛选:
#### 当加权 FDS 分数 > 0
1891h gross:+15.65 bps+13.44 bps56.6%#### 当加权 FDS 分数 > 0.25
501h gross:+24.12 bps+19.82 bps60.0%从单腿事件角度再看也类似:
-5.57 bps,hit 40.4%gate > 0 的 active legs:平均 edge +33.91 bps,hit 52.4%gate > 0.25 的 active legs:平均 edge +37.57 bps,hit 53.6%这组数最关键:
> 不是“funding 自己就是 alpha”,而是“funding divergence 能把原本质量很差的 MR pocket 筛成勉强像样的 pocket”。
我会把这题标成:
raw alphabucket dispersion mean reversionfunding-divergence admission filter不是:
这题最值钱的不是“repo 已经写好了回测引擎”,而是它给了一个更适合 desk 的拆法:
这比直接抄 full-book stat-arb,更接近真钱研究。
1m / 3m / 5m / 15m 的关系5m这是本题当前最自然的第一落点:
5m1h = 12 bars 很直观3m / 1m可以做,但不是马上压过去:
1h 时钟长度保持不变,映射成 20 bars / 60 bars15m更像控制组或低频版:
4 bars ≈ 1h 会太粗这里必须很具体,不然这篇 digest 只有阅读价值,没有研发价值。
直接测这三版:
FDS > 0.1 / 0.25 的 event目标:
15~25 bps / 1h event当前 repo 是:
z_in = 1.5z_out = 0.5min_hold = 30m下一步该测:
30m / 60m clock exitspread shrink x% 就先走当前 repo 默认成本对 short-cycle 太狠,下一步必须拆开:
因为这题现在最像的是: > gross edge 只在精选 pocket 上存在,能不能活下来主要看是否能把执行从“持续滚动 taker”改成“低频 + 更偏 maker”。
若后续想从 repo bundled 数据走向更通用研究,先复现到:
5m klines这题最后我会给一个很明确的结论:
> hyperstat-arb-bot 里真正该 intake 的,不是“默认 full-book stat-arb”,而是“bucket dispersion MR 这条 raw alpha + funding-divergence admission 这层过滤”。
更直接一点:
research/quant_digests/2026-04-12_2356_hyperstat-fds-gated-bucket-mr-alpha.mdsrc/hyperstat/strategy/stat_arb.pysrc/hyperstat/strategy/funding_divergence_signal.pysrc/hyperstat/strategy/regime.pysrc/hyperstat/strategy/allocator.pysrc/hyperstat/backtest/engine.pysrc/hyperstat/backtest/costs.pyconfigs/default.yamlconfigs/strategy_stat_arb.yaml