策略
BTC USD-M 波动率压缩突破策略,多空双向(单一标的 BINANCE 永续合约,1 小时 K 线,仅交易统计上罕见的低波动收敛后的扩张行情,经成交量确认,使用吊灯式移动止损,参数较少)
结局: 已放弃
BtcVolCompressionBreakoutLS
结局总结
该策略押注波动率聚集——仅当 BTC 的已实现波动率收敛至罕见低位时才进入待触发状态,随后沿经成交量确认的扩张行情做多或做空;其设计有意避开工厂此前的失效模式(单一交易场所、单一标的、BTC、1 小时 K 线、参数较少)。代码完全按预期运行,在历时 6.5 年期间,以仅约 19% 的敞口完成了 482 笔均衡交易,但策略前提没有方向性优势:盈利因子 0.963,夏普比率 -0.195,总回报 -4.7%,最大回撤 50%,且结果分散于各市场状态,佣金吞噬了毛收益的 12.21%。由于基准策略是净亏损,而不只是表现平平,回测审查者在优化前就放弃了它,认为 best-of-N 搜索只会让一个没有优势的配置过拟合。记录供未来参考的结论是:若再次探索压缩思路,就需要采用实质上不同、频率更低的构造,并先建立优势为正的基准策略——这是对前提的重新构想,而非参数微调。
假设
一种 LONG-SHORT、SINGLE-INSTRUMENT 的日内策略,交易 BTCUSDT.BINANCE(USD-M 永续合约,1-HOUR K线),利用 VOLATILITY CLUSTERING——即异常LOW的已实现波动率时期之后往往会出现波动率EXPANSION这一统计特性——而非收益延续性。该策略刻意与工厂中已晋升的趋势/动量同类策略 ORTHOGONAL 区分开来(BTC/ETH/SOL上的 TS-动量日方向信号、冲击K线 1H):那些策略以近期收益的 DIRECTION 为条件;本策略则以近期 VOLATILITY 的 MAGNITUDE/状态为条件,大部分时间处于休眠状态,仅在波动率收缩至统计上罕见的低位时才ONLY启动。当低波动盘整以成交量确认的方向性突破结束时,策略沿突破方向建仓并跟随波动扩张。它也不同于只做多的唐奇安突破同类策略(ADA/DOGE/BNB):它在一个主流币上做多-AND-做空,而且关键在于它NOT对每一次通道突破都进行交易——它要求此前满足波动率压缩条件,以过滤掉导致朴素突破系统失效的震荡假突破。SINGLE-VENUE,SINGLE-INSTRUMENT(无跨交易所手续费/基差陷阱,无跨账户权益汇总伪影,无多标的轮动核算错误——这些都是明确记录过的既往失效模式),在 BTC 上交易(这是最不易受新闻跳空影响的主流币,避免曾击垮 XRP 日频组合的单一山寨币事件暴雷),采用 1H K线,使 ATR 止损在K线内生效,而非仅在日收盘时生效。使用纯 OHLCV(加成交量)、充足的 Binance 历史数据进行稳健的滚动前推/留出验证,并采用少量参数,以抵御工厂中反复出现的过拟合。
修复 Iteration-2 中 Layer-2 TypeError 的方案:`_atr_at() takes 5 positional arguments but 6 were given`。该方法原本是 `@staticmethod`,但 Layer-2 策略代理会将其作为绑定方法调用,在前面加上 `self`,导致向一个接受 5 个参数的签名传入 6 个参数。修复方法:将 `_atr_at` 改为普通实例方法(`def _atr_at(self, highs, lows, closes, end, length)`),并移除 `@staticmethod` 装饰器。调用位置无需改动(`self._atr_at(highs, lows, closes, end, self.atr_len)`),因此无论测试框架是否遵循 staticmethod 语义,这种方式都能正常工作。未改动其他逻辑、导入项、参数或信号行为——Layer 1 仍然通过,波动率收敛/突破信号保持不变。
不值得优化:基准策略从根本上没有优势,而不只是表现平平。历时 6.5 年 / 共 56,856 根 1 小时 K 线,涵盖牛市、熊市和震荡市,策略净亏损——profit_factor 0.963(<1.0,毛盈利不足以弥补毛亏损),夏普比率 -0.195(CI [-1.50, +0.90]),期望收益为负(-$22.6/笔交易),total_return -4.7%,max_drawdown 50%——且结果分散于各市场状态(2022 -19.5% 和 2023 -24.7% 均深度为负)。1 小时交易周期带来严重的成本拖累(佣金占毛收益的 12.21%;impact_cost_pct 448% 且容量约为 $5k,这些都是毛优势几乎消失的表现,证实没有足够的手续费空间)。代码正确实现了策略假设(482 笔多空均衡交易,敞口约为 19%,并选择性地等待波动率压缩后启动),因此没有具体的改进方向可供迭代——波动率压缩突破这一前提在 BTC 1 小时周期上就是没有方向性优势。通过 best-of-N 优化亏损的突破策略基准,只会对一个无法通过去膨胀夏普检验的配置过拟合,而非发现真实优势,并浪费 2 小时预算。如果以后继续探索压缩思路,就需要采用实质上不同、频率更低的构造,并先建立真正具有正优势的基准策略——这是对前提的重新构想,而非参数微调。
实现
基于 BTCUSDT.BINANCE USD-M 永续合约、1H K线的多空波动率压缩突破策略。仅当当前 ATR 位于过去 coil_lookback 窗口的最低 vol_pct 分位数时才启动(这是一种统计上罕见的低波动率蓄势)。启动后 AND 最新一根K线的成交量超过其移动平均值的 volume_mult 倍时,策略跟随唐奇安通道突破的方向(收盘价突破 breakout_lookback 高点/低点,并按 breakout_k 缩放)。通过吊灯式跟踪止损 (chand_mult * ATR,以持仓期间的运行高点/低点为基准) 跟随波动扩张。仓位规模相对于资本计算,采用 ATR 风险(每 ATR 止损距离风险为权益的 risk_pct),并受杠杆感知型名义仓位上限约束。
验证结果
验证失败(Layer 2 — 合成场景): 使用的参数:['atr_len', 'vol_pct', 'risk_pct', 'breakout_k', 'chand_mult', 'vol_ma_len', 'volume_mult', 'min_notional', 'coil_lookback', 'breakout_lookback', 'notional_cap_frac'] 请检查 __init__ 是否设置了 self.parameters.get() 中的所有属性。 - steady_uptrend: TypeError: BtcVolCompressionBreakoutLS._atr_at() 接受 5 个位置参数,但实际传入了 6 个(K 线时间戳:1735698180000) - steady_downtrend: TypeError: BtcVolCompressionBreakoutLS._atr_at() 接受 5 个位置参数,但实际传入了 6 个(K 线时间戳:1735698180000) - flat_ranging: TypeError: BtcVolCompressionBreakoutLS._atr_at() 接受 5 个位置参数,但实际传入了 6 个(K 线时间戳:1735698180000) - volatility_spike: TypeError: BtcVolCompressionBreakoutLS._atr_at() 接受 5 个位置参数,但实际传入了 6 个(K 线时间戳:1735698180000) - zero_volume: TypeError: BtcVolCompressionBreakoutLS._atr_at() 接受 5 个位置参数,但实际传入了 6 个(K 线时间戳:1735698180000) - price_gap: TypeError: BtcVolCompressionBreakoutLS._atr_at() 接受 5 个位置参数,但实际传入了 6 个(K 线时间戳:1735698180000)
回测评审
- 夏普
- -0.19
- 总收益率
- -4.70%
- 最大回撤
- 50.06%
- 总交易数
- 482
- 胜率
- 31.3%
- 盈利因子
- 0.96
策略功能符合策略假设:482 笔多空均衡交易,敞口仅为 18.9%(恰当地处于休眠状态,只在罕见的低波动收敛时选择性启动),单一标的 BTC——没有代码错误,是对波动率压缩门控突破策略的忠实实现。
样本丰富(56,856 根 1 小时 K 线,历时 6.5 年),涵盖多种市场状态,且策略前提真正具有正交性(根据波动率幅度,而非收益方向进行条件判断)。
基准策略没有优势:profit_factor 0.963(<1.0),夏普比率 -0.195(CI [-1.50, +0.90] 跨越 0),期望收益为负(-$22.6/笔交易),total_return -4.7%,历时 6.5 年,max_drawdown 50%。
结果分散于各市场状态且净亏损:2020/2024/2026 表现强劲,但 2022(-19.5%)和 2023(-24.7%)深度为负——各市场状态下均无持续优势。
1 小时交易周期的成本拖累严重:佣金占毛收益的 12.21%;impact_cost_pct 448% 和约 $5k 的容量(毛优势几乎为零的表现)证实没有足够的手续费空间来挽回。
低胜率(31%)的突破型策略,其大额盈利不足以弥补大量小额亏损——即使优化前,收益结构也已经很薄弱。
结局总结
即使策略前提经过忠实实现且与其他策略正交,优化前仍需有优势为正的基准策略;波动率压缩突破策略在 BTC 1 小时周期上没有方向性优势,其低胜率收益结构和该周期下高昂的佣金拖累也无法通过调参变得盈利——需要重新构想为更低频的策略,而不是进行参数搜索。
该策略在优化前的 BACKTEST_REVIEW 关卡被放弃——审查者在任何优化运行之前就判定“放弃”——因为基准策略从根本上没有优势(盈利因子 <1.0、期望收益为负、结果分散于各市场状态,且 2022 -19.5% 和 2023 -24.7% 均深度为负),同时 1 小时周期的成本拖累严重,也没有足够的手续费空间来挽回。
一种在 BTCUSDT.BINANCE 1H 永续合约上的单品种多空日内策略,利用了波动率聚集效应——保持休眠状态,直至已实现波动率 (ATR) 收敛至统计上罕见的低位,然后在该压缩行情出现经成交量确认的方向性突破时入场交易,并以吊灯式跟踪止损出场。
历时 6.5 年 / 共 56,856 根 1 小时 K 线,策略进行了 482 笔多空均衡交易(多头 259 笔,空头 223 笔),但敞口仅约为 18.9%,且没有优势:夏普比率 -0.195(CI [-1.50, +0.90]),盈利因子 0.963,期望收益为负(-$22.6/笔交易),总回报 -4.7%,胜率 31%,最大回撤 50%,佣金吞噬了毛收益的 12.21%。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。