源文件:research/quant_digests/2026-04-11_2238_microprice-obi-coint-perp-pairs-alpha.md
README.md + analyzer.py + optimizer.py + fix_strategies.py + strategies.json + main.cpp)+ Binance USDⓈ-M 公共 1m portability probe这次看的是 SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model。表面上它最显眼的是:
!bookTicker 实时流~42us 内部决策、4~7ms 网络 RTT 这类工程指标但对我们 desk 真正更值钱的,不是“又一个低延迟引擎”,而是它把一条 crypto perp pairs raw alpha 写成了比较完整的研究到执行链:
data_loader.py:抓 Binance USDⓈ-M top-50 liquid assets 的 1m K 线;analyzer.py:先做相关性筛选,再做 OLS hedge ratio + ADF,找协整 pair;optimizer.py:对 rolling window / entry z / exit z / stop z 做网格;main.cpp:用实时 microprice 和顶级盘口量差,决定是否执行 spread fade。所以这次真正可迁移的主题,不是“C++ 快”,而是:
> cointegrated perp spread mean reversion 这条 raw alpha,能不能在 1m/3m/5m/15m 上,加上一层 honest 的 microprice/OBI confirmation 后,变成更可执行的短周期相对价值壳。
这份 repo 最值得 desk 拿走的,不是 HFT 外壳,而是:
> 用协整筛出来的 perp 对做 spread fade,把 top-of-book microprice 与 OBI 当作 entry confirmation / veto。
这仍然是 raw alpha,不是 filter 伪装成 alpha:
我们最近已经补了不少 pairs / stat-arb 线,但这份 repo 多了一层 short-cycle 可执行性:
!bookTicker 里的 microprice 和 盘口失衡 接到 runtime;这点对 1m/3m/5m 尤其重要,因为很多 pair spread 在 candle close 上像会回归,但一到真实盘口就会发现:
这时,top-of-book imbalance 才真的开始有意义。
analyzer.py 的主流程是:
1h 重采样数据上做相关性筛选(MIN_CORRELATION = 0.85)p < 0.05)对 short-cycle desk 来说,最可迁移的不是“协整”三个字,而是它把 pair formation 明确成:
> 先让 pair 至少像一个会回来的东西,再谈入场和执行。
main.cpp 里不是直接拿 last trade price,而是读取 !bookTicker:
p1 / p2 实际用的是 top-of-book microprice proxyobi = (bid_vol - ask_vol) / (bid_vol + ask_vol)runtime 核心就是:
|z| > 2)才考虑动手;这比“只要 z-score 到了就进”诚实得多。对 short-cycle 而言,这个 confirmation 层比再多加一个技术指标更有用,因为它直接碰到 执行时刻的订单簿现实。
repo 的执行是双腿同步下单、固定 notional、实时风控暂停。这意味着它天然服务于:
这正好补我们当前素材池里一块缺口:
> pairs alpha 不缺,缺的是更接近真实盘口的短周期执行确认层。
这份 repo 不能直接照抄上线,至少有 3 个地方必须先拆开看。
analyzer.py 先把数据 resample('1h'),然后算 half-life,并设:
MAX_HALF_LIFE = 240 # Max 4 hours to revert但这里 half-life 是在 小时频率 上算的;240 更像 240 小时,不是 4 小时。它后面只是把结果乘 60 打印成分钟。
也就是说:
这会把 pair universe 放得比 README 读起来宽很多。
optimizer.py 会产出:
window_minutesentry_zexit_zstop_z但 main.cpp 真正运行时是硬编码:
Z_ENTRY = 2.0Z_EXIT = 0.5BET_SIZE = 1000.0并且 runtime 读取 strategies.json 时实际依赖的是:
leg1leg2hedge_ratiomeanstd_dev这也是为什么 repo 额外放了一个 fix_strategies.py:它重新补 mean/std_dev。换句话说:
> research layer 的参数优化,目前并没有被 honest 地带进 live runtime。
所以我们应该把它当成:
当前 main.cpp 里的 OBI 阈值:
OBI_LONG_THRESHOLD = -0.2OBI_SHORT_THRESHOLD = 0.2但实际入场条件更像:
obi1 < 0.2 且 obi2 > -0.2这其实很宽:
对我们 desk 来说,更 honest 的写法应该是:
因为它直接服务于当前阶段更该补的那一类:
1m/3m/5m execution reality 再走一步的那种。如果继续补 funding / basis,我们当然也能找到题;但那条线最近已经比较密。相反,这个 repo 给的是另一块更缺的东西:
> pair spread fade 不只是 formation / z-score / hedge ratio,真正会卡住 short-cycle 的,是“入场那一刻订单簿是否站在你这边”。
这就是它比继续补一个 generic pairs 教材更值得的地方。
|z| 未达阈值不做1m 上有 first verdict 吗?我用 Binance USDⓈ-M 公共 1m K 线,对 repo strategies.json 里几组 pair 做了一个最小快检。
14 天 1mlog(P1) - hedge_ratio * log(P2)z-score:rolling 60m|z| >= 25m / 15m / 60m 的 signed spread-close bpsAXSUSDT 当前 24h quote volume 只有约 7.48M,更像“统计上好看、执行上要小心”的候选。165M / 220M,流动性体感比 AXS/FIL 健康得多。本地 artifact:reports/artifacts/literature/statarb_hft_repo_portability_summary_2026-04-11.csv
对 ADAUSDT/HYPEUSDT:
0.0196784820160|z| >= 2 事件数:247612.28%ADAUSDT ≈ 165.45MHYPEUSDT ≈ 219.88M未来 signed spread-close:
5m: +2.67 bps,胜率 59.6%15m: +5.95 bps,胜率 60.6%60m: +5.48 bps,胜率 59.1%这组数字说明两件事:
1m close-proxy 上,极端 z-score 后未来 15m 的回归倾向仍然存在;AXSUSDT/FILUSDT 在同一份 summary 里,15m mean spread-close 约 +10.48 bps,明显更亮眼;但:
AXSUSDT 当前 24h quote volume 约 7.48M;ADA/HYPE 薄不少;所以更合理的读法不是“最大 close-proxy edge 就是最佳 live candidate”,而是:
> 先用 close-proxy 找可能有回归生命迹象的 pair,再按流动性把它们分成“先上 BBO 回放”和“先放观察名单”。
1m!bookTicker:公开 websocket,可拿准实时 top-of-book> 当 Binance perp pair 的 rolling spread z-score 达到 |z| >= 2,且订单簿 microprice / OBI 不反着均值回归方向时,未来 5m~15m 的 spread-close 更可能为正;若再加 maker/taker 成本后仍为正,这条 raw alpha 才算真正过第一关。
第一轮别贪多,直接做:
ADA/HYPE, DOGE/HYPE, LINK/SOL 开始14d 或 30d 重估 hedge ratio + cointegration60m rolling z-score,先试 1.5 / 2.0 / 2.5OBI <= -0.15OBI >= +0.15|z| <= 0.5、15m/30m time stop、spread stopmaker/maker、maker/taker、taker/taker 三档下一步我不会先扩 universe,而是先做 4 件最值钱的事:
!bookTickerwindow / entry_z / exit_z / stop_z 真正写入 runtimeAXS/FIL 这种 close-proxy 更亮但偏薄的,先放观察名单ADA/HYPE 这种 edge 没那么夸张但更厚的,优先做 executable-BBO 回放如果 ADA/HYPE 这类 pair 在 maker/taker 成本下,15m 仍能保留正的净 spread-close,那这条线就值得进入 clean replication 队列;如果只在 close-proxy 下好看,一上 BBO 就塌,那它更适合降级成 pairs sleeve 的 entry confirmation / veto layer,而不是独立交易壳。
https://github.com/SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Modelhttps://github.com/SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model/blob/main/README.mdhttps://github.com/SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model/blob/main/analyzer.pyhttps://github.com/SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model/blob/main/data_loader.pyhttps://github.com/SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model/blob/main/optimizer.pyhttps://github.com/SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model/blob/main/fix_strategies.pyhttps://github.com/SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model/blob/main/main.cpphttps://github.com/SamarthChaudhary-22/Crypto_Stat-Arb_HFT_Model/blob/main/strategies.json/root/clawd/jerry/momentum/reports/artifacts/literature/statarb_hft_repo_portability_summary_2026-04-11.csv/root/clawd/jerry/momentum/reports/artifacts/literature/statarb_hft_repo_portability_detail_adausdt_hypeusdt_2026-04-11.csv1m klines + 24hr ticker