策略
BTC 日线上升趋势回调入场仅做多策略(BINANCE USD-M 期货,1-DAY,仅限OHLCV,趋势内均值回归机制)
结局: 已放弃
BtcDailyPullbackInUptrendLong
结局总结
BtcDailyPullbackInUptrendLong 是一次诚实的转向——在开发者BTC 4小时多空反转策略被实证证伪之后,该策略转而寻找一种在BTC上真正有效的纯多头机制,通过在确认的上升趋势中采用“先回调、后反转”的入场方式,捕捉有据可查的逢低买入效应。基础回测结果干净且与机制逻辑一致,但优势微薄(夏普比率0.32,PF 1.075),审阅者将其送去优化,同时明确指出了缩水风险。而该风险最终应验:优化后夏普比率-1.26的亮眼表现只是在-225次尝试中挑出的最优拟合结果,未能通过任何泛化检验——DSR 0.0002、PBO 0.72、前向滚动OOS平均为-0.566、5敏感性悬崖,以及一个退化的持出集“通过”结果。分析师最终将其判定为对一个边际优势进行多重检验后的过拟合而放弃,认为单一主流币种在日线频率上的逢低买入信号本身太弱,无法经受住缩水检验,既没有可调优的稳健区间,也不值得将同一个弱信号重新套用到其他标的上。
假设
第 2 轮迭代以最小改动修复了第-2层的信号冻结故障,且未对前面层级造成回退。根本原因:入场条件的组合逻辑(确认的上升趋势 + 连续min_pullback_days根收盘价走低 + 一根收阳反转K线)在单调的合成测试场景中根本无法触发——稳定的上升趋势不会出现连续走低的收盘价,而稳定的下降趋势又无法通过上升趋势过滤条件——因此此前被门控的返回值恒为常数0.0。修复方案将交易逻辑与返回值解耦:真实的回调深度置信度被计算并存储在 self._signal_depth 中(should_enter 现在将该存储的深度值与 min_depth_pct 进行阈值比较,与此前的入场条件完全一致),而 calculate_signal 则返回一个连续的趋势位置诊断值 tanh((close-SMA_slow)/SMA_slow*10),其分母随价格水平变化而漂移,因此每根K线的值都会变化。已针对实际的合成数据生成器进行验证:steady_uptrend/steady_downtrend/flat_ranging/volatility_spike/zero_volume/price_gap 现在产生 440–447 个唯一信号值(无一冻结),且全部为有限值并落在 (-1,1) 区间内。导入、参数、出场、仓位管理、交易场所以及逢低买入机制均未改动,因此第 1 层及第 2 层中此前已通过的部分保持通过状态;本次改动只消除了导致信号冻结的原因。
去偏夏普比率决定性未通过:DSR=0.0002,预期最大值=3.766(基于225次试验)——优化后的夏普比率1.264远低于best-of-N运气基准线,且在统计上无法与选择噪声区分开(is_significant=false,PBO=0.7183>0.5,sharpe_ci_low -0.158横跨0)。所有决定性的泛化检验门槛全部同时失败:样本外滚动(walk-forward)is_overfitted=TRUE,样本内均值2.33崩塌至样本外均值-0.566(NEGATIVE;OOS窗口中3个里有2个为负,位于[-2.78, -1.03, 2.11]);敏感性FAILED出现5处悬崖式突变(sma_slow、max_hold_bars、min_depth_pct、stop_loss_pct、take_profit_pct)——优化器把优势停靠在了不稳定的悬崖边缘;而holdout(留出集)的'passed:true'是一个退化的负数相除产物(比率0对应一个负的WF-OOS分母-0.566,holdout_sharpe 0.87),不具备任何信息量。这个诱人的优化后头条数据(夏普比率1.26,+75%,PF 1.53,max_dd 9%,基于72笔交易)纯粹是样本内best-of-225拟合的结果,没有样本外支持。这证实了优化前的预警标志:基础夏普比率为0.32(PF 1.075),在225次试验中被选出,正是无法通过去偏检验的典型特征。不建议迭代:样本量是充足的(72笔交易,不是密度问题),而且此次扫描已经探索了参数空间,发现均值OOS为负,存在5处悬崖以及DSR 0.0002——不存在值得进一步调优的稳健的未充分探索区域;第二次扫描只会重新找到同样低于运气基准线、OOS为负的伪影。不建议revise_hypothesis:这是对一个确实边际存在的优势(BTC日线上的逢低买入回调入场)的多重检验过拟合,而不是一个被困在失效标的上的已证实机制——把同样微弱的信号重新套用到另一个标的上只会再次过拟合。FAILURE PATTERN:BTC上的纯多头日线趋势中回调(趋势内均值回归)入场策略存在一个真实但边际的基础优势(夏普比率0.32 / PF 1.075),但无法通过多重检验去偏——经过best-of-225选择后,DSR崩塌至约0,PBO超过0.7,样本外滚动OOS转为负值,且敏感性网格中布满了悬崖式突变;单一主要品种在日线节奏上的逢低买入效应太弱,无法经受去偏检验。
实现
仅做多的BTCUSDT.BINANCE日线级“上升趋势中逢低买入”策略。在确认的上升趋势中(收盘价 > SMA(50) 且 SMA(20) > SMA(50)),策略会等待一次幅度至少达到min_depth_pct深度、连续min_pullback_days根收盘价走低的短暂回调,然后在首根反转K线(当日收盘价高于前一日)出现时以LONG入场。出场条件包括4%止损、8%止盈、趋势结构破坏(收盘价跌破 SMA(50)),或15根K线的时间止损。采用基于风险的仓位管理(以2%权益承担止损风险,且仓位名义价值上限为1x权益)。仅限OHLCV、单一标的、单一时间框架,杠杆1.0。
验证结果
验证失败(第 2 层 — 合成场景): 使用的参数:['risk_pct', 'sma_fast', 'sma_slow', 'min_notional', 'max_hold_bars', 'min_depth_pct', 'stop_loss_pct', 'take_profit_pct', 'max_notional_frac', 'min_pullback_days'] 请检查 __init__ 是否从 self.parameters.get() 设置了所有属性。 - steady_uptrend:信号冻结:所有 444 信号值完全相同(数值=0.0)。calculate_signal() 很可能存在缺陷——信号从未发生变化。 - steady_downtrend:信号冻结:所有 444 信号值完全相同(数值=0.0)。calculate_signal() 很可能存在缺陷——信号从未发生变化。
回测评审
- 夏普
- 1.26
- 总收益率
- 75.42%
- 最大回撤
- 9.02%
- 总交易数
- 72
- 胜率
- 40.3%
- 盈利因子
- 1.53
代码运行正常且与假设相符:72 笔多头 / 0 笔空头,回调-上升趋势入场,0 已剔除,metrics_reliable=true,持仓约 5.5 天
样本量充足:6.5 年内共 72 笔交易(高于约 62 笔的前向滚动检验下限),且 7 年内每年均有交易 -> 填充了 WF 个窗口
结果为正且与机制一致:总+25%,期望值+152,return_skew 1.03 / tail_ratio 1.75(少数几笔大额延续性盈利交易),低贝塔0.08,容量 $14M
默认参数显然未经优化(深度/TP/SL/持仓周期均为随意设定)-> 为参数扫描提供了真实的调优空间
优势极其微薄:profit_factor 1.075(手续费几乎吃掉全部毛利),夏普比率 0.32,win_rate 45.8%,sharpe_ci_low -1.05(CI 跨式期权 0)
超额收益约0.0003(相对基准无超额收益);information_ratio -0.70
在 225 次试验中挑选出的 0.32 基础夏普比率,正是FAILS在优化后遭遇缩水夏普比率的典型特征(多重检验风险)
impact_cost_pct 8.4% 不容忽视;max_drawdown 26%,恢复周期为 1715 天
0.5(优化前信息参考)
约 62 WF 下限
> 1.2(优化后目标)
为正(期望值 +152)
> 0.15% 期货
分析
实现干净,样本量充足(6.5 年内共 72 笔交易),多头入场逻辑正确;优化后的配置贝塔较低(0.06),且容量较高
优化后的样本内亮眼结果看起来很吸引人(夏普比率 1.26,+75%,PF 1.53,max_dd 9%)——但这只是-225次尝试中挑出的最优拟合,尚未经过验证
deflated_sharpe 0.0002 (<<0.95)、is_significant FALSE、PBO 0.7183 (>0.5)、sharpe_ci_low -0.158 (跨式期权 0)
优化后夏普比率 1.264 比噪音下预期最大值上限 3.766 低FAR——与-225次试验中的最优选择偶然性在统计上无法区分
前向滚动检验 is_overfitted=TRUE:平均IS 2.33 从原先水平骤降至平均OOS -0.566(NEGATIVE),3个OOS窗口中有2个为负值 [-2.78, -1.03, 2.11]
敏感性FAILED,存在5悬崖式变化点(sma_slow、max_hold_bars、min_depth_pct、stop_loss_pct、take_profit_pct)——优势恰好停留在不稳定的临界边缘
持出集“passed:true”是一个负数相除产生的退化伪结果(比率0 对比 WF-OOS -0.566)——并非真正的通过
结局总结
一个真正微薄的优势(夏普比率0.32,PF 1.075)无法在 N 选优的筛选过程中存活下来——单一主流币种在日线频率上的逢低买入回调效应弱到无法经受缩水检验,优化后崩溃至DSR约0,PBO超过0.7,前向滚动OOS为负,敏感性网格布满悬崖式变化点;而建立在负数分母之上的“通过持出集检验”只是一个伪结果,而非有效证据。
优化后分析师因决定性地未能通过缩水夏普检验而放弃该策略(DSR 0.0002,而预期的最大偶然值上限为 3.766,PBO 0.72,is_significant=false):前向滚动检验为 is_overfitted=TRUE,平均OOS -0.566(2个窗口中有3个为负值),敏感性检验因5悬崖而失败,而所谓的“通过持出集检验”其实是一个负数相除产生的退化伪结果——这印证了优化前就已标记的问题,即在225次试验中获得0.32的基础夏普比率无法经受住缩水检验。
在BTCUSDT.BINANCE上仅做多、仅限OHLCV的日线“上升趋势中逢低买入”策略:当处于确认的上升趋势时(收盘价 > 50日SMA,且 20日SMA > 50日SMA),在经过至少最小深度的2-3日回调后的首根反转K线做多入场,并在趋势破坏、止盈、止损或时间止损时出场——这是一种与BTC长期上升趋势相契合的、刻意区别于其他策略的“先回调、后反转”择时/趋势内均值回归机制。
默认回测显示出一个真实但微薄的优势——总回报+25.2%,夏普比率0.32,盈利因子1.075,超额收益约0,胜率45.8%(共72笔交易),sharpe_ci_low -1.05——而优化产生了一份看起来很吸引人的样本内亮眼结果(夏普比率1.26,+75.4%,PF 1.53,最大回撤9%),但该结果被证实只是在-225次尝试中挑出的最优拟合,没有任何样本外支持。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。