源文件:research/quant_digests/2026-04-13_1428_tophalf-liquidity-xs-loserbounce-shell.md
README.md + src/crypto_statarb.py + bundled PDF report)+ Binance USDⓈ-M 15m/5m public-data portability probe做空过去 H 根横截面最强币、做多过去 H 根横截面最弱币,赌短周期 cross-sectional loser-bounce / winner-cooldown 会回归;liquidity top-half 只是 admission/filter,不是 alpha 本体这轮主看的是 GitHub 仓库 Jamestilfords / statarb-crypto (2026)。它最表面的读法是:
> “一个 4H Binance spot 上的横截面 momentum vs reversal notebook。”
但真正更适合我们 desk 拿来拆的,不是“它也比较了 momentum”,而是这条更明确、也更可复刻的骨架:
> base alpha = cross-sectional short-horizon reversal。 > > 每个 bar 按最近 H 根累计收益给币做横截面排序,long 最弱的一档、short 最强的一档,赌的是下一段短周期里 loser bounce / winner cooldown 的回归;top-half volume rank 只是降低薄币噪声与执行摩擦的 filter,不是 alpha 本体。
所以这轮它是:
raw alphafilterregimerisk overlay而且它还不是“只给一个信号名词”。repo 里把:
都写成了比较完整的策略壳。
> 这份 repo 确实给出了一条可独立复现、且接近完整策略壳的 cross-sectional reversal raw alpha;但把它压到今天的 Binance USDⓈ-M 15m/5m taker 口径后,gross 虽仍为正,净后却很快被换手吃穿,说明它更像 maker / 低费率 / 降频版本的候选,而不是现成可上线的 taker 主策略。
> repo 自带 4H spot 回测里,H=3 reversal 在 20bps 仍显著为正;我再用 Binance USDⓈ-M 15m/5m 公开 K 线,先对更宽 liquid universe 做 unfiltered stress,再对 12 个 liquid majors 做 top-half-liquidity 版最小实验,看到 gross 上都还有边,但一加 4~8bps 成本几乎全部翻成深负。
src/crypto_statarb.py 里核心定义基本已经把 base alpha 写死了:
reversal_score(rets, H) = -(rets.rolling(H).sum())make_long_short_weights(...):q 分位q 分位backtest_unconstrained(...):1-bar lagturnover * cost_bps 扣成本make_long_short_weights_masked(...):tradable=True 的资产上排名,作为 liquidity filter翻成人话:
> 它不是预测绝对涨跌,而是在赌“横截面上刚刚最弱的会反弹,刚刚最强的会冷却”,然后做一个 equal-weight market-neutral spread。
README / 自带报告里给的 4H spot 结果是:
H ∈ {1,2,3,6}rebalance_every=6)20bpsH=3 (~12h)H=3):20bps:Sharpe 3.596 / CAGR 2.062 / FinalEquity 28.704x40bps:Sharpe 0.159 / CAGR -0.004 / FinalEquity 0.989x60bps:Sharpe -2.910 / CAGR -0.677 / FinalEquity 0.034x这组数最有价值的地方不是“4H spot 真好做”,而是它已经提前告诉我们:
> 这条 alpha 对 turnover / fee 极度敏感。
也就是说,它天然就该被 desk 读成:
这不是再回到单币 breakout / retest / shape-only 内循环;它补的是:
cross-sectionalrelative-valuemarket-neutralshort-horizon mean reversion这正是当前 intake 里要求主动补的家族。
这份 repo 对 short-cycle desk 的价值,不只是“反转因子存在”,而是已经把下面几层拆开了:
xs loser-bounce / winner-cooldownvolume rank top-half所以它不是“一个模糊灵感”,而是一个可以很快进入 first verdict 的完整壳。
很多 short-cycle raw alpha 的死因不是没方向感,而是:
这份 repo 正适合拿来做这种边界判断。
15m/5m 最小 portability probe为了回答“这条壳能不能压到我们 desk 的短周期上”,我把 probe 分成了两步:
A. 先看 unfiltered gross / cost 边界(更宽横截面)
BTC/ETH/SOL/BNB/XRP/ADA/DOGE/LINK/AVAX/LTC/DOT/TRX/BCH/SUI/APT/NEAR/ETC/UNI/ATOM/XLM15m(近 90d)long bottom 20% / short top 20%B. 再看 desk 更关心的 top-half liquidity admission
BTC/ETH/SOL/BNB/XRP/ADA/DOGE/LINK/AVAX/LTC/DOT/TRX15m(近 60d)+ 5m(近 14d)reversal_score = -过去 H 根收益和top-half liquidity(按 quote volume 排前 50%;在 12 币池里等价于约 6 个名字;为避免横截面塌缩,最小可交易资产数放宽到 6)0 / 4 / 8 / 12 / 20 bps这两步合起来,分别回答:
#### A. 更宽横截面的 unfiltered quick stress(20 币、90d、平均 8 个 active names) 先看 alpha 本体,不加 liquidity admission 时,gross 其实是存在的:
H=2:gross +0.71 bps/bar, avg_turnover 1.14H=4:gross +0.68 bps/bar, avg_turnover 0.84H=6:gross +0.62 bps/bar, avg_turnover 0.72但一旦加 taker 成本就迅速翻负:
H=4 @ 8bps:net -6.06 bps/barH=6 @ 8bps:net -5.10 bps/barH=8 @ 8bps:net -4.43 bps/bar所以第一层 verdict 很清楚:
> alpha 本体没死,但 short-cycle taker 直译版已经被 turnover 压穿。
#### B. desk 口径的 top-half liquidity admission(12 币、60d、平均 2 个 active names) 放宽最小资产数后,liquidity filter 不是没用——它在 gross 上甚至更顺:
H=8 @ 0bps:gross +0.69 bps/bar, Sharpe 8.57H=6 @ 0bps:gross +0.66 bps/bar, Sharpe 8.21H=3 @ 0bps:gross +0.55 bps/bar, Sharpe 6.97但问题是 turnover 仍不低:
H=8:avg_turnover 0.85H=6:avg_turnover 0.92H=3:avg_turnover 1.22所以:
H=8 @ 4bps:net -2.72 bps/barH=6 @ 4bps:net -3.01 bps/barH=3 @ 4bps:net -4.34 bps/barH=8 @ 8bps:net -6.13 bps/bar结论:filter 能提高 gross 质量,但远不足以单独救 taker economics。
#### top-half liquidity(约 6 币、平均 2 个 active names) 14d probe 的 gross 结果也不是零:
H=1 @ 0bps:gross +0.255 bps/bar, Sharpe 11.36H=12 @ 0bps:gross +0.135 bps/bar, Sharpe 5.68H=3 @ 0bps:gross +0.117 bps/bar, Sharpe 5.14但 5m 的核心问题更直白:turnover 太大。
H=1:avg_turnover 1.74H=3:avg_turnover 1.25H=12:avg_turnover 0.88因此一到 4bps 就明显不行:
H=1 @ 4bps:net -6.70 bps/barH=12 @ 4bps:net -3.40 bps/barH=12 @ 8bps:net -6.94 bps/bar一句话:5m 比 15m 更像“有 gross、没执行空间”。
这点要先说死:
> base alpha 很清楚,就是 cross-sectional short-horizon reversal。
所以它不是“只适合作为某个别的 alpha 的过滤器”的材料,而是一个:
的 完整 raw alpha shell。
repo 在 4H spot 日度 rebalance 上能活,一个关键原因是 turnover 远低于我们 5m/15m 直译版。
这轮 probe 的核心不是“alpha 完全失效”,而是:
5m/15m taker 版净后:明显不行换句话说,它更像:
maker-first 候选更低 rebalance 频率 候选更宽 alt universe 候选shared cross-sectional rank feature而不是今天就能直接挂到 taker 主 book 上的策略。
这轮一个很有用的副结论是:
> top-half liquidity filter 会提升 gross 质量,但如果同时把横截面压得太窄、而且换手没有同步大幅下降,它救不了成本。
所以后续如果继续做这条线,应该把 liquidity filter 当成:
而不是充分条件。
这轮必须给明确 next step,我建议按下面顺序推进:
xs reversal rank每 2 / 3 / 4 根 bar 才更新一次30~50 个 liquid alts,再重跑 top-half liquidity|rank z| 或 cross-sectional spread percentile 最极端的一档xs reversal rank 的信息量,不强求它单独做 book12 个 liquid majors perpetual,很可能低估 这类策略在更宽 alt universe 上的横截面离散度。5m 只看了近 14d,更像 quick first verdict,不是最终 OOS 认证。4H + 日度 rebalance;把它压成 5m/15m 本来就是主动做高强度 stress,不应把 portability 失败误读成“原始 alpha 不存在”。reports/artifacts/quant_digests/xs_liquidity_reversal_probe_15m_2026-04-13.csvreports/artifacts/quant_digests/xs_liquidity_reversal_probe_5m_2026-04-13.csvreports/artifacts/quant_digests/xs_liquidity_reversal_tophalf6_probe_15m_2026-04-13.csvreports/artifacts/quant_digests/xs_liquidity_reversal_tophalf6_probe_5m_2026-04-13.csvreports/artifacts/quant_digests/xs_liquidity_reversal_probe_summary_2026-04-13.jsonhttps://github.com/Jamestilfords/statarb-cryptohttps://github.com/Jamestilfords/statarb-cryptohttps://raw.githubusercontent.com/Jamestilfords/statarb-crypto/main/README.mdhttps://raw.githubusercontent.com/Jamestilfords/statarb-crypto/main/src/crypto_statarb.pyReport/Statistical Arbitrage in Cryptocurrencies (4H Bars).pdf