源文件:research/quant_digests/2026-04-25_1736_priceshock-volspike-bounce-shell.md
README.md + src/strategy.py + src/backtester.py + results/backtest_results.csv + results/performance_metrics.json)+ Binance USDⓈ-M public-data portability probe(BTC/ETH/SOL/AVAX,1h parent)price-shock mean reversion / oversold bounce,再配上固定持有期与成本约束。这次不是在讲“volume confirmation”这种纯过滤层,也不是在讲“止损怎么设”这种 overlay。
base alpha 很清楚: > 当某个币在很短时间内出现明显下跌,而且这一下跌不是安静地下去,而是带着明显放大的成交量时,市场更可能处在短时恐慌 / 过度反应状态;后面 8~24 小时更容易出现反弹。
所以它属于 raw alpha / 可落地完整策略壳,不是单纯的 filter。
---
主来源是 GitHub 仓 skylarshi123/crypto-stat-arb。虽然 repo 名字叫 stat-arb,但它真正实现的不是经典 pairs,而是一条很直白的 单币 oversold bounce:
1h return <= -2%当前成交量 >= 过去 24h 平均成交量的 1.5x4 / 8 / 12 / 24h40 bps 扣减(作者写成每边 20 bps)来源信息:
这类 repo 对当前 desk 有价值,不是因为“结果看起来很猛”,而是因为它把一个很常见、但经常只停留在口头的假设,写成了完整可执行壳:
---
24h 持有在成本后还勉强为正,4h/8h/12h 都是负的,所以它更像 1h parent -> 8~24h bounce,而不是可直接下沉成 15m/5m 主信号。5m 抄底,多半会先被噪音和手续费狠狠干掉。---
repo 的信号定义写在 src/strategy.py 里,核心阈值非常朴素:
price_drop_threshold = -0.02volume_ratio_threshold = 1.5volume_lookback_hours = 24也就是:
-2%24h 均量的 1.5x回测器 src/backtester.py 再去测试 4 / 8 / 12 / 24h 固定持有期,并显式扣掉 40 bps round-trip 成本。
repo 自带 results/backtest_results.csv 的结论是:
4h:25 笔,net -12.60%,胜率 24.0%8h:23 笔,net -17.60%,胜率 39.1%12h:23 笔,net -0.38%,胜率 47.8%24h:22 笔,net +34.33%,胜率 72.7%results/performance_metrics.json 进一步把 24h 持有写成:
34.33%1.56%72.7%8.24%2220 个交易日、2,884 个小时数据点repo 想传达的意思很直接: > 不是所有下跌都值得接,但“急跌 + 放量”的那类更像短时过冲;反弹不是马上发生,而更像在 24h 附近才真正长出来。
---
这条线符合本轮最重要的优先级:
更重要的是,它还补了最近研究里的一个缺口:
cross-sectional loser→winner fade、pairs spread fade、OFI microburst;所以这题比继续去绕旧 breakout / 旧 queue 派生方向更值。
---
price-shock mean reversion / oversold bouncevolume spike 其实就是第一层 filter:40 bps---
repo 至少诚实地证明了一件事:
这是很有价值的,因为很多“抄底反弹”直觉会默认:
但 repo 给出的恰好是反过来的图景:
4h/8h 不行12h 接近打平24h 才明显转正但 repo 的证据强度也有限:
20 个交易日;BTC / ETH / SOL / AVAX;所以 repo 更像一个 高信号研究起点,不是可以直接照搬的生产 verdict。
---
我补了一个更诚实的快检: 把 repo 同样的规则,直接映射到 Binance USDⓈ-M 公共 1h K 线上,扩样本看它是不是只是一段短期巧合。
BTCUSDT / ETHUSDT / SOLUSDT / AVAXUSDT2025-12-01 ~ 2026-04-251h1h return <= -2%volume / rolling_24h_avg >= 1.54 / 8 / 12 / 24h40 bps本地快检结果如下:
4h:106 笔,gross -35.19%,net -77.59%,胜率 33.0%8h:100 笔,gross -17.29%,net -57.29%,胜率 41.0%12h:96 笔,gross +6.19%,net -32.21%,胜率 44.8%24h:93 笔,gross +53.90%,net +16.70%,胜率 48.4%对应的直觉解读是:
4h/8h 不是“被成本吃掉”,而是 gross 就已经明显偏负;这比 repo README 那个“72.7% 胜率”更接近 desk 该接受的现实口径。
---
最重要的结论不是“repo 错了”,而是:
> 这条 alpha 存在,但它更像 1h parent shock -> 24h rebound,不太像 15m/5m 直接可交易的主信号。
也就是说,它对当前 short-cycle desk 的正确读法不是:
而是:
15m/5m 能不能做更便宜、更干净的 child execution。”这和我们最近不少 digest 的结论一致:
---
所以这篇 digest 最值得保留到素材池里的,不是“volume spike 证明抄底有效”,而是下面这句:
> 急跌 + 放量 这套逻辑可以保留成 mean-reversion 父级别事件标签,但短周期 desk 应优先研究的是 shock-parent / child-entry 结构。
可直接复用的部分:
-2% in 1h 这种 event 定义volume ratio >= 1.5 这种朴素放量条件24h 左右才显著优于更短持有期的经验不该直接照抄的部分:
5m 抄底主策略---
如果下一轮要真把它推进到 desk 可验证层,我建议做下面这个最小实验:
1h shock parent -> 15m child entry1h return <= -2%1h volume ratio >= 1.5只在父事件出现后的接下来 2~8 根子 bar 里找入场:
time-stop = 8h / 12h / 24h2 / 4 / 6 bps 三档这样做,才能回答 desk 真正关心的问题:
---
下一步最值得直接测这 4 件事:
不是信号出来就立刻接,而是只把 1h shock 当事件标签;真正入场放到 15m/5m。
-2% 阈值做成按币种波动分位数自适应。BTC 的 -2% 跟 AVAX 的 -2% 不是同一件事;更合理的是用 rolling vol / ATR 标准化 shock。
例如加上 funding、OI、CVD、连续大阴线数量,区分这次放量到底更像 capitulation 还是 trend continuation。
对这类 bounce 信号,真正该避免的不是“错过一点利润”,而是接在真正持续崩盘里。先加 regime veto,比盲目调参数更重要。
---
5m/15m 主 alpha;---
reports/artifacts/quant_digests/2026-04-25_meanreversion_volspike_binance_portability_summary.csvreports/artifacts/quant_digests/2026-04-25_meanreversion_volspike_binance_portability_trades.csv如果后面要继续复现,这两个文件已经足够作为下一轮 shock-parent / child-entry 的起点。