源文件:research/quant_digests/2026-03-19_1034_stolgo-consolidation-breakout-asymmetry-gate.md
这轮主看 stockalgo/stolgo 的 Breakout 实现(lib/stolgo/breakout.py),它把“先盘整再突破”写成非常明确的布尔规则:
is_consolidating: 过去 N 根收盘价是否压在一个窄区间内;is_breaking_out / is_breaking_down: 先满足盘整,再由最后一根收盘价穿越前窗极值。我额外做了一个 15m 快检(Binance 公共 K 线,BTC/ETH 各 1500 根)来确认它在我们 desk 三条收口线里更像哪种角色。
stolgo 这套“先盘整后突破”更像 入场许可层(admission gate),而且在 15m 上呈现明显多空不对称——更适合当 long-continuation admission,不适合裸用作 short-continuation。min_close_N > max_close_N * (1 - pct)(默认 N=13, pct=2%)consolidating(t-1) && close_t > max(close_{t-N..t-1})consolidating(t-1) && close_t < min(close_{t-N..t-1})win=44.5%, avg=-6.13bps,到 cons(2%) 后 win=46.8%, avg=-2.87bps;n=94, win=53.2%, avg=+3.23bps(交易数下降但质量改善);win=48.2%, avg=-1.86bps,cons(2%) 后 win=51.8%, avg=+6.37bps。cons short 在这次快检里平均 bps 多数更差(例如 BTC -11.94bps),说明它更像 short-veto 提示器,而不是 short 放大器。consolidation breakdown 在当前快检并不天然更优,优先当 veto。consolidating 作为 Fib 回踩前置条件(先确认市场在“压缩→释放”语境),减少把随机波动误判成“回踩守住”。consolidation gate 负责是否放行,形成 shared admission layer,先提升成本后存活率。/api/v3/klines,公开可得)180d IS + 60d OOS保持三条主策略触发不变,仅新增 consolidation gate:
gate_on = min_close_N > max_close_N*(1-pct),N∈{13,21},pct∈{0.8,1.0,1.2,1.5,2.0}signal@close_t -> trade@open_{t+1},no-overlap,成本 6/10/15 bps per side优先看三项:
post_cost_expectancytrade_count_retentioncontinuation_fail_ratio(入场后 3~4 根内失效)首轮过线建议(相对 A 组):
post_cost_expectancy 提升且 trade_count_retention ≥ 45%stolgo 的代码是规则骨架,不包含完整交易成本、撮合与资金管理模块;N=13,pct=2% 只是默认值,不是最优参数;trend.py 里的 is_giant_uptrend/downtrend(连续同色且单调 close)在 15m 上非常稀疏,不宜直接拿来做主过滤。lib/stolgo/breakout.pylib/stolgo/trend.py