策略
BTC 每日广度确认做多(3-of-4 加密主要品种上升趋势门控)
结局: 已放弃
BtcDailyBreadthConfirmedLong3of4
结局总结
BtcDailyBreadthConfirmedLong3of4 使用跨主要品种广度门控(4 个主要品种中≥3 个高于其 50-SMA)来切换单一 BTC 多头的开/关,旨在规避同步加密熊市。其基础回测在总回报上看起来不错,但质量薄弱——夏普 0.516,CI 穿越零线,53.3% 最大回撤,相对等权组合的负 IR,且标题指标几乎全部来自持仓未实现 MTM 加上少数异常日。该策略进入优化阶段,尽管敏感度曲面在 0 悬崖处干净、前向验证无过拟合,但未通过通胀调整夏普检验(0.15 对比 0.95,优化后 0.4555 低于 0.91 根K线的运气栏,PBO 0.94),且前向样本外表现深度为负(-4.36)。在第 4 次迭代、第 1 次尝试(共 2 次)中,分析师放弃了该策略——结论是该广度门控产生了高beta、由异常值驱动、MTM 膨胀的 BTC 敞口,主动边际为负,低于运气栏的平坦平台无稳健区域可调优,且其旨在规避的熊市论点未能实现。
假设
一种仅做多策略,交易 EXCLUSIVELY BTCUSDT.BINANCE 永续期货日线,并由一个基于四种主要加密资产(BTC、ETH、SOL、BNB)计算的 MARKET-BREADTH 信号进行门控。其机制是:每根日线统计四种主要资产中收盘价高于 50 日 SMA 的数量(即处于各自已确认的上升趋势中)。当广度计数 >= 3(总计 4)时,持有 BTC 多头;当 < 3 时,持有现金。这是多标的 SIGNAL(观察 4 个标的),但单标的 TRADE(仅 BTC)。其机制与现有所有流水线条目均有区别:(a) 轮动策略会在资产之间切换 SWITCH——该策略只是开启/关闭 BTC;(b) 篮子策略会持有 ALL 个符合条件的资产——该策略则是在广泛市场状态满足条件时持有 ONE 个特定资产(BTC);(c) 单资产趋势跟踪策略只使用其自身资产的趋势——该策略使用 ANOTHER 个资产的集体趋势(即“广泛市场状态”)作为门控。其投资组合作用:在确认广泛看涨的市场状态下捕捉 BTC 的贝塔,同时避开同步熊市(此时所有主要资产的广度同时萎缩,例如 2022 Q2-Q3,当 BTC + ETH + SOL 在数周内先后跌破趋势时)。它区别于轮动系列(BTCETHRelativeStrengthRotationLong、BTCETHSOLThreeWayRotationLong,以及由开发者生成的 ADABNBXRPThreeWayRotationLong),因为轮动试图 PICK THE BEST 资产;广度门控只确认 BROAD-MARKET HEALTH 后,才专门持有 BTC。它使用 ONLY 条已确认可用的日线数据(BtcSpotDrawdownAccumulationLong 验证了 BTC 日线,EthDailyGoldenCrossMomentumLong 验证了 ETH 日线,SolDailyEmaTrendContinuationLong 验证了 SOL 日线,BnbFourHourVolumeBreakoutLong 验证了 BNB 个标的可访问日线数据)。不依赖跨交易场所,直接规避 Layer-3-audit_stale 故障模式。
第 4 次迭代修复了唯一的 Layer-2 阻碍:`_above_sma() takes 2 positional arguments but 3 were given`。验证代理会用 types.MethodType(func, wrapper) 将 dir(instance) 中的每个可调用对象重新包装,这可能会向辅助函数注入一个多余的 `self`,导致其参数数量不匹配。与其继续通过模块级辅助函数对抗重新绑定,本次迭代REMOVES了该辅助函数,并直接在 calculate_signal 内联计算每个资产的 SMA/广度。由于完全没有任何 SMA 辅助函数,代理就无从重新绑定或错误调用,因此 TypeError 不会再出现。所有已经通过的内容均逐字节保留:导入项(干净,仅 Decimal + nautilus + base)、六个参数及其 __init__ 读取、连续且随柱变化的信号混合(均值 SMA-偏差 + ROC,因此冻结信号检测仍能通过)、广度门控的 should_enter/should_exit,以及相对于权益的 position_size。这是修复 Layer 2、同时保持 Layer 1 通过且交易逻辑不变的最小改动。
实现
纯多头 BTCUSDT.BINANCE 日线策略,由 4 个主要资产的市场广度信号进行门控。每根日线 bar 都统计 {BTC, ETH, SOL, BNB} 中有多少个收盘价高于 50 日 SMA;当广度 >= entry_breadth(3 个中的 4 个)时持有 BTC 多头,广度 < exit_breadth 时退出并转为现金。多品种 SIGNAL(观察 4 个主要资产),单品种 TRADE(仅 BTC)。在确认的全面牛市阶段捕捉 BTC beta,并避开同步熊市。
验证结果
验证失败(Layer 2——合成情景): 使用的参数:['sma_period', 'exit_breadth', 'min_notional', 'position_pct', 'entry_breadth', 'hard_stop_pct'] 请检查 __init__ 是否通过 self.parameters.get() 设置了所有属性。 - steady_uptrend: TypeError: BtcDailyBreadthConfirmedLong3of4._above_sma() 接受 2 个位置参数,但收到了 3 个(bar 时间戳:1735692660000) - steady_downtrend: TypeError: BtcDailyBreadthConfirmedLong3of4._above_sma() 接受 2 个位置参数,但收到了 3 个(bar 时间戳:1735692660000) - flat_ranging: TypeError: BtcDailyBreadthConfirmedLong3of4._above_sma() 接受 2 个位置参数,但收到了 3 个(bar 时间戳:1735692660000) - volatility_spike: TypeError: BtcDailyBreadthConfirmedLong3of4._above_sma() 接受 2 个位置参数,但收到了 3 个(bar 时间戳:1735692660000) - zero_volume: TypeError: BtcDailyBreadthConfirmedLong3of4._above_sma() 接受 2 个位置参数,但收到了 3 个(bar 时间戳:1735692660000) - price_gap: TypeError: BtcDailyBreadthConfirmedLong3of4._above_sma() 接受 2 个位置参数,但收到了 3 个(bar 时间戳:1735692660000)
回测评审
- 夏普
- 0.52
- 总收益率
- 330.61%
- 最大回撤
- 53.29%
- 总交易数
- 71
- 胜率
- 29.6%
- 盈利因子
- 1.53
已对照明细文件验证交易:正当的多头 BTC 持仓(杠杆 ~1.0-1.2,pnl_pct 15-91% 合理),忠实实现了广度门控机制
71 笔交易、跨越 6.5 年,对于日线级别的状态开关策略而言样本量足够(约 11/年,符合预期交易频率)
相对等权组合基准,alpha 为正(+0.067)且 beta 较低(0.28)——该门控确实避开了一些同步熊市阶段(广度崩塌时转为现金)
流动性承载能力强(约 $195M),市场冲击可忽略(占毛额 2.3%)
风险调整后的优势幅度有限且不显著:Sharpe 0.516,其 CI [-0.55, +1.07] 跨越零;相对组合的 information_ratio -0.545
大幅回撤特征:max_drawdown 53.3%,max_consecutive_losses 13,win_rate 29.6%——收益集中在少数几笔大额持仓中(不均匀,右尾肥厚)
分布统计量(偏度 16.5、峰度 335、tail_ratio 0.017)受到日收益归因方式的扭曲:多月已实现盈亏会在平仓日入账——这不是程序错误,但会使尾部指标不可靠;应以交易级别指标及 Sharpe/Sortino 进行评估
回测结束时,头条收益中约 30% 的 total_return 仍是未平仓未实现收益;对于纯多头、约为 1x 的策略,多月期货持仓承受较大的资金费拖累(每笔交易达数万美元)
分析
干净的敏感度曲面:0 悬崖参数,前向验证 is_overfitted=false
低且可行的费用拖累(commission_pct_of_gross ~3-5%);机制合理的多品种信号/单品种交易设计(无跨交易所滞后腿风险)
样本内相对组合的 alpha 为正但幅度较小(0.067)
决定性地未通过通胀调整夏普检验:DSR=0.1516 对比 0.95 根K线;优化后夏普 0.4555 BELOW 225 次试验的预期最大运气栏 0.9116
PBO=0.9378——该选择很可能是 94% 过拟合;sharpe_ci_low=-1.1329 跨越 0(不显著)
前向 HOLDOUT FAILED 且为 NEGATIVE:holdout_sharpe=-4.364,比率=-4.459——未经触碰的近期窗口出现亏损
相对等权组合的 information_ratio 为负(-0.545):广度门控是在择时捕捉 beta(beta 0.28),而非 alpha
假设未满足:NOT是否规避了同步性熊市(2022 -44.6%,2026 -19.9%,max_drawdown 53.3%)
收益由异常值驱动且被 MTM 放大:win_rate 29.6%,峰度 334,偏度 16.4,tail_ratio 0.017,end_unrealized_pct 97.9%(头条收益大部分来自尚未平仓的持仓)
敏感性平坦平台始终低于运气门槛——没有可供调优的稳健区域
现在NOT进行优化——回测中包含一个物理上不可能的结果,必须先进行诊断。(1) SIZING/BOOKING:在2021-05-17出现了一个+85.68%的单日组合收益率,而那天是一个主要的BTC CRASH日;一个纯多头、杠杆-1.0、position_pct=0.90的BTC头寸不可能在一天内获得85%的收益,本应亏损。结合avg_position_pct=113.25%(在1x杠杆下超过0.90目标),这强烈暗示策略是PYRAMIDING——should_enter在每个breadth>=3的K线上返回OrderSide.BUY,如果基础模板在已经持多头的情况下向现有头寸加仓,而不是将其视为无操作,那么名义金额会远超权益的90%。添加一个明确的防护条件:只在空仓时提交入场(在should_enter中检查_open_position() is None),这与假设的'打开/关闭BTC'设计相匹配。重新运行并确认avg_position_pct <= ~90%,且没有不可能的单日收益后再继续。(2) DRAWDOWN CONTROL:breadth gate的全部理由是规避同步熊市,但它产生了53%的最大回撤和2022中的-44.6%。考虑更快的出场(exit_breadth=4,即任何主要标的突破趋势时立即出场)或非对称入场/出场(在3入场,在<2出场,对比当前的对称3/3),这样该门控才能真正起到保护作用。(3) 一旦仓位规模修正且收益变得合理,重新评估:如果修正后的实际Sharpe比率仍约为0.5,且回撤达40%+,这是一个边际BTC-beta叠加策略,应重新考虑而非优化。当前的概要数据(97.9% open MTM,峰度334,一个不可能的+85%天)不能作为优化基准来信赖。
结局总结
敏感性网格平滑、无断崖,且前向滚动分析未标记为过拟合,这些衡量的是一致性,而非显著性——它们无法挽救这样一个变体:其整个参数平台都低于最佳-225运气门槛(PBO 0.94),前向留出集深度亏损,且广度门控带来负信息比率。它是在进行 BTC-beta 择时,而非创造 alpha;并未实现其声称的躲避同步熊市的论点(2022 -44.6%,2026 -19.9%)。
分析师在优化后放弃了该策略,因为它未通过 Deflated Sharpe 检验(DSR 0.1516 对比 0.95,优化后的 Sharpe 0.4555 低于 0.9116 运气门槛,PBO 0.9378,sharpe_ci_low -1.13),未经触碰的留出集深度亏损(holdout_sharpe -4.364,比率 -4.459),且信息比率为负——尽管前向滚动分析未标记为过拟合,敏感性也没有 0 断崖。
一种只交易 BTCUSDT.BINANCE 日线、但由四种主要资产的市场广度信号(BTC/ETH/SOL/BNB)进行门控的纯多头策略——当 4 中至少有 3 个收盘价高于其 50 日 SMA 时持有 BTC,广度崩塌时转为现金;目标是在全面牛市阶段捕捉 BTC beta,同时避开同步熊市。
基础回测进行了 71 笔多头交易(0 笔空头交易),总回报头条数据高达 330.6,但 Sharpe 仅为 0.516(sharpe_ci_low -0.554),盈利因子为 1.53,胜率为 29.6%,最大回撤为 53.3%,相对等权组合的信息比率为负(-0.545);尾部指标严重失真(峰度 335,偏度 16.5),且回测结束时头条收益中约 97.9% 仍为未实现收益;优化后重新拟合的 Sharpe 降至 0.4555。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。