源文件:research/quant_digests/2026-04-06_0940_quality-weighted-squeeze-release-alpha.md
README.md + run_backtest.py + strategy/technical.py + strategy/signal_generator.py + core/backtester.py + results/params_library.csv)squeeze duration × volume × momentum 写成入场与仓位评分,再配 ATR stop / ATR target / trailing stop 做成完整 continuation 壳这轮主看 jicheolha (2026) 的 GitHub repo keltrader。它不是那种只给几张 equity curve、却不肯把规则写清楚的仓库;相反,源码里已经把下面几层都写出来了:
BB inside KC 压缩结束;volume_ratio 和 RSI veto;squeeze duration × volume × momentum 组合成 signal quality,再映射到仓位;ATR stop / ATR target / 1R 后 trailing stop / 连亏后降仓。README 给的 headline 回测也足够具体:
DOGE / ETH / SOL / XRP2021-01-01 到 2025-12-28+177% return、158 笔、58% 胜率、1.75 profit factor、20% max drawdown我不会直接信这个收益,但它至少说明:这不是“只会画图的 squeeze 指标仓库”,而是一个已经把完整策略骨架写出来的 repo。
一句话翻成人话: > 市场先收窄、再放大时,第一段放大量并不一定立刻结束;如果这次 release 伴随更长压缩、更高成交量、更强方向动量,那么顺着 release 方向跟一小段,往往比把所有 squeeze 都一视同仁更有交易价值。
这里最关键的是: repo 真正值钱的不是“TTM Squeeze 有效”这句老话,而是它把“哪种 squeeze 值得做大、哪种只配轻仓”写成了一个可执行评分器。
这轮仍然值得写,原因不是“我们又发现了一个 breakout 形态”,而是它补了一个当前素材池里还不够扎实的空位:
最近我们已经收过不少 raw alpha,但很多还停在“信号像不像有用”。这份 repo 往前多走了一步:把 admission、sizing、risk、execution 都写成代码了。
那篇更像在问:压缩突破本体有没有 alpha? 这份 repo 更像在问:同样是压缩释放,哪些应该重仓,哪些应该轻仓甚至跳过?
1m / 3m / 5m / 15m 非常友好。因为所需输入只有公开 OHLCV,不依赖 funding、L2、链上或私有特征;最小实验可以非常快地在 Binance / Hyperliquid / Coinbase 公共 bar 数据上重做。
strategy/technical.py 里,压缩的定义非常标准:
BB(20, 2.0)KC(20, 1.5 × ATR)BB_Lower > KC_Lower 且 BB_Upper < KC_Upper 时记作 Squeeze = True真正触发 setup 的条件不是“正在 squeeze”,而是:
min_squeeze_bars。默认 min_squeeze_bars = 3。这点很重要,因为它明确避免了把“仍在压缩里的噪声震荡”误当成可交易 breakout。
detect_breakout() 的顺序是:
close > BB_Upper → longclose < BB_Lower → shortMomentum_Norm 的符号其中:
Momentum = close - BB_Mid.shift(momentum_period)Momentum_Norm = Momentum / ATRmomentum_period = 12也就是说,它不是纯粹“上轨外就是做多”,而是给了一个 band break > normalized momentum 的双层方向判定。
默认 admission 参数:
min_volume_ratio = 1.2RSI overbought = 75RSI oversold = 25翻译一下:
这对 short-cycle 很实用,因为它把最常见的两个假突破来源——无量 release 和 极端末端追价——先挡掉一层。
strategy/signal_generator.py 里最有意思的是这个 signal quality:
40% 权重给 squeeze 持续时间35% 权重给 volume ratio25% 权重给 normalized momentum而且不是线性打分,而是 exponential diminishing returns:
base_position=10% 映射到 max_position=30%。另外它还有一条很 desk-friendly 的规则:
0.85 ^ losses这就把“压缩释放后容易连错几次”的现实,直接写进了仓位退火逻辑。
run_backtest.py 与 core/backtester.py 给了几条关键细节:
trade timeframe = 1minsignal timeframe = 2hcommission = 5 bpsslippage = 2 bpsATR stop = 2.0ATR target = 3.0trail_trigger_r = 1.0,即走出 1R 后才启动 trailing而 trailing 也不是胡乱追:
1R 才激活;所以这不是“看到突破,凭感觉拿一拿”的系统,而是已经把 收益目标、止损、持仓续拿、成本 一起写清了。
repo 默认是:
2h 信号1m 执行这对我们不是问题,因为真正可迁移的不是交易所,而是策略结构。
建议先做一个最像 desk 的版本:
BTC / ETH / SOL / XRP 或 top liquid majors15m1m3 / 6 / 91.1 / 1.3 / 1.51.5 / 2.0 / 2.5 ATR vs 2.0 / 3.0 / 3.5 ATR最关键的 ablation 不是“band 该不该用 2.0”,而是:
1R trailing5m 版本可以更激进,但建议只保留一套轻量 admission:
squeeze releasevolume_ratio否则很容易把它做成“信号本体弱,只能靠很多 filter 才勉强存活”的伪 raw alpha。
1m / 3m 更适合做:
不建议一开始就把 alpha body 下沉到 1m,因为 squeeze release 在这个尺度上更容易被纯 microstructure 噪声打碎。
这轮最值得马上跑的,不是全资产大优化,而是一个 三步最小实验:
在 15m 上测试:
prev squeeze = 1, curr squeeze = 0, squeeze_bars >= k, volume_ratio >= v2 ATR stop / 3 ATR target4~6 bps + 1 tick slippage先看:
3/6/12 根的 path drift在实验 A 通过后,只比较两件事:
equal-risk fixed sizequality-weighted size如果 quality sizing 只是把回撤放大,却没提高 net PF / Sharpe / skew,那它就该降级成 overlay,而不是策略核心。
再做三路对照:
SL/TPSL/TP + 1R trailing这个实验会直接告诉我们: 这条 alpha 是赚在第一段脉冲,还是赚在后续延续。
我的判断是:
那个结果很可能包含样本期 / 参数搜索 / 资产选择偏差。
尤其是:
1R 后再 trailing换句话说,就算这条 raw alpha 本体最后不够强,squeeze duration × volume × momentum 这套 admission / sizing 评分器,仍可能服务别的 breakout / trend 线。
按优先级我会建议:
15m signal + 1m execution 的单币 majors 版本这是最接近当前 desk 的主战场,也最容易诚实计成本。
重点比较:
volume_ratio gate1R trailing15m 成立,再下沉到 5m不要反过来;否则很容易在更高噪声里误判 alpha 死活。
5m 也成立,再把 1m / 3m 留给 execution layer不要把 1m 直接神化成 alpha 主体。
这条线的数据要求很简单:
1m / 5m / 15mopen/high/low/close/volume这点非常适合当前 intake:
也因此,它是一个很好的 快复现、快打分、快淘汰 原型。
keltrader2026-03-05, updated 2026-04-01