源文件:research/quant_digests/2026-04-24_2015_bollinger-rsi-voltarget-meanrev-shell.md
这次看的是 zwmjj (2026), kuant-strategies 这个新 repo 里的 strategies/mean_reversion_crypto.py。
虽然仓库本身是个“25+ 策略大礼包”,但这轮真正值得单独拆出来的,不是整个框架,而是其中这条非常明确的 crypto mean-reversion 壳:
20 窗口 Bollinger band14 周期 RSItarget_vol / realized_vol 的波动率缩放对当前 desk 来说,这比继续写一篇“泛 pairs 教程”更值得:它是 可独立复现、可直接压到 5m/15m、而且 entry/exit/sizing 都写得很白 的 raw alpha 壳。
这篇东西的 base alpha 很清楚:
短周期价格过度偏离后的均值回归。
不是 overlay,不是纯 risk module,也不是“用 RSI 做解释”。 真正的 alpha 本体是:
所以这条线属于很标准的: single-asset / mean-reversion / oscillator-confirmed fade。
源码里的关键信号定义非常直白:
close <= lower_band 且 RSI < 30close >= upper_band 且 RSI > 70也就是说,作者没有把“碰下轨就多、碰上轨就空”写成裸信号,而是多加了一层 RSI 共振确认,尽量过滤掉“刚开始趋势扩张”的假反转。
源码不是只输出 +1 / -1,而是先算:
abs(close - mid) / (upper - lower)
也就是:离中轨越远,信号越强。然后把强度截断在 [0, 1],避免极端值把仓位炸穿。
接着它又算一层 realized vol:
vol_scale = target_vol / realized_vol
默认:
vol_window = 20target_vol = 0.50max_vol_scale = 2.0于是最终信号是:
final_signal = raw_signal * vol_scale
翻成人话就是:
2x默认是三大高流动性币:
BTC/USDETH/USDSOL/USD这点很重要:它不是拿一堆 illiquid 小币硬凑回测,而是从最容易落地的 liquid majors 起步。
最近几篇 digest 已经连续覆盖了:
所以这轮更需要补的是:一个和这些主线互补、但仍然是 raw alpha 的单资产 mean reversion 壳。
这条 repo 线的价值主要在 4 点:
这里已经明确写了:
backtest_mean_reversion(data_dict, **kwargs)所以这不是一段只能拿来做灵感摘录的伪代码,而是可以直接映射到 desk pipeline 的完整策略骨架。
15m 主信号Bollinger + RSI 这类信号,最怕被噪声淹没;但放在 15m 做主信号,再让 5m 做 child execution,通常比直接在 1m 裸跑更接近可交易形态。
也就是说,它很适合做成 和趋势 sleeve 互补的短周期 mean-reversion sleeve。
单看 RSI 极值,很容易在强趋势里连着抄底抄到手断; 而这里至少加了两层约束:
这至少让它从“教科书指标信号”更接近“可跑的策略壳”。
15m 生成信号,5m 执行进出与滑点控制这条线最值得抄的,不是“布林带 + RSI”这四个字,而是它的 三段式结构:
这三步合起来,其实就是一个很适合短周期 crypto 的思路:
先找 overshoot,再确认不是普通噪声,最后避免在最危险的时候下最大仓。
这比很多“只要碰 band 就反手”的老派写法成熟得多。
在 Binance/Bybit 等 liquid perp 上,15m 级别的 Bollinger 极端偏离,如果再叠加 RSI 共振与 realized-vol 缩仓,是否能形成 fee 后仍存活的单资产 mean-reversion 壳。
BTCUSDT / ETHUSDT / SOLUSDT perp15m5mbb_window = 20bb_std = 2.0rsi_period = 14rsi_oversold = 30rsi_overbought = 70vol_window = 20target_vol = 0.50max_vol_scale = 2.0close <= lower 且 RSI < 30 → 下一根开多close >= upper 且 RSI > 70 → 下一根开空45~55)就平N 根 time-stop 平仓2 / 4 / 6 / 10 bps friction ladder不要一上来加太多 regime 条件。
这样才能看出 edge 到底来自哪一层,不会把全部功劳都算到一个大杂烩上。
这类策略最大的敌人不是普通噪声,而是单边趋势扩张。要单独切分:
N 根单边净涨跌绝对值高 vs 低看它是不是只在 range regime 里活。
BTC/ETH/SOL 各自可能风格很不一样。先看单币是否存活,再决定要不要合成 equal-weight 或 inverse-vol basket。
15m 可活,再往 5m 压缩;如果 5m turnover 爆炸,就停在 15m signal + 5m execution。5m/15m 时,持仓时长、触发频率和手续费压力都要重新核对,不能直接照搬结果口径。这份 2026 repo 最值得 desk 吸收的,不是“布林带和 RSI 又双叒叕能交易”,而是把“极端偏离后的回归”写成了一个 entry/confirmation/sizing 都很完整、且能直接压到 15m/5m 做最小实验的 mean-reversion raw alpha 壳。
mean_reversion_crypto.py inside kuant-strategies