策略
SOL USD-M 日内 VWAP-回归,多空策略(单一标的 BINANCE 永续合约,15m K 线,对滚动 VWAP 的 MODERATE 偏离进行反向交易,采用 OFF 趋势状态门控,高频触发,低参数数量)
结局: 已放弃
SolIntradayVwapReversionLS
回测门控: - 指标不可靠:不一致:夏普比率 0.37 与 total_return -88.82% 符号不一致——夏普比率根据 mtm_equity_curve 序列计算,而收益来自权益曲线。应以权益曲线为准。
假设
[RESTORED 2026-07-10] 原始假设文本在测试载具清理期间因级联删除而丢失(HL 填充测试载具共用此假设)。在 SOL USD-M 15m 上,对滚动 VWAP 的中等 z 分数偏离进行反向交易;完整策略逻辑见实验配置中的理由说明。
直接实现假设:在 SOL USD-M 15m 上,对滚动日内 VWAP 的 MODERATE 偏离进行反向交易,做多和做空,采用 OFF 趋势状态门控,参数较少。迭代 4 是一次干净重启,只做正确性修订,不改变已通过前几层验证的信号或入场逻辑:(1) 时间止损的 K 线间隔现在根据连续 K 线时间戳(以 bar_seconds 为种子)测量,而非使用硬编码的 15 分钟纳秒常数,因此无论配置何种 K 线类型,max_hold_bars 都确实表示 K 线数量;(2) 删除了围绕时间止损的宽泛 try/except——bar.ts_event 和 position.ts_opened 保证为整数,因此异常处理只能掩盖真正的缺陷;(3) 参数现在为构造函数所强制执行的 stop_rr 限幅声明 _param_bounds(min(stop_rr, 0.9)),并包含其他启用的参数,因此优化器不会报告被代码悄然改写的最优值。由于策略会做空,交易场所仍为 BINANCE USD-M;杠杆仍为 1.0,且仓位规模除恒等乘数外不引用杠杆,因此不存在 leverage_set_but_unused 风险。
在可靠且具有决定性的 3313 笔交易 / 6 年样本上,期望收益为负:avg_trade_return_pct -0.0798%(低于 ZERO),profit_factor 0.68,total_return -87.1%,夏普比率 -0.40,每笔交易期望收益 -$26.35。VWAP 均值回归反向交易在 EVERY 个日历年和 EVERY 个波动率状态下均亏损(平静 -100%、正常 -40.6%、高压 -42.9%),因此均值回归前提在可测量意义上并不存在——这是对入场/方向的判断,IS 该假设,而非参数悬崖。所称的收益风险比约为 1.43,但并未实现(avg_loss 179.97 > avg_win 103.57);经典的收盘价止损超调特征此前已被标记为 QA,如今在完整历史数据上得到确认。手续费仅占毛收益的 15.5%,因此这不是手续费脆弱性问题——信号的毛收益为负,且这 5 个可优化参数无法扭转 PF-0.68 反向交易。与 L55 相符(单一标的反向交易,PF < 1.15,收益为负 → 放弃)。QA 对策略优势的担忧得到证实。不值得花 2 小时优化。
实现
SOL USD-M 永续合约上的日内 VWAP 均值回归,使用 15 分钟 K 线,做多和做空。每根 K 线都会计算收盘价偏离 32 根 K 线(约 8h)成交量加权平均价的连续 z 分数,并以围绕该锚点的收盘价离散程度 RMS 进行缩放。当偏离过大(|z| > 2.2)时,策略预期其回归至 VWAP 并进行反向交易——高于时做空,低于时做多——但绝对偏离还必须超过 1.2% 手续费门槛,并且宽松的 24h 趋势门控(|24h 涨跌幅| < 6%)判定市场处于震荡而非趋势状态。出场依据同一偏离推导:止盈目标 = capture_frac * 入场偏离(capture_frac = (entry_z - exit_z)/entry_z ~ 0.86),止损 = 该目标的 0.7x 倍(上限为 1.5%),另有 z 值回归至区间内出场-0.3和 24 根 K 线(约 6h)的时间止损。仓位规模为账户权益的 15%,按 1 倍杠杆计算名义价值。
验证结果
验证 FactoryStrategy 是否使用子类的 min_bars_required() 进行预热门控;如果没有,应明确防护对 -(trend_window+1) 的访问。
min_bars_required() 重写了框架方法(静态分析给出 base_shadow 警告)。这是有意为之——它将预热期提高至 max(vwap_window, trend_window)+2 = 98 根 K 线,从而确保 trend_window 回看索引 -(trend_window+1) 始终在有效范围内——但请确认基础模板在预热门控中遵循该重写值,而非使用自身的值,否则在累积 98 根 K 线之前就可能触发入场。
如果假设中的收益风险比依赖止损在 K 线内持续有效,应在入场时将止损设为括号/stop_market订单,而不是采用收盘价逻辑;否则应说明实际止损仅在收盘时生效。
硬止损(pnl_pct <= -stop_pct,约为名义价值的 0.73%)仅在 should_exit() 中于 K 线收盘时评估。在 15m K 线上,单根 K 线的盘中波动可能远超止损位,这解释了为何 largest_loss -527 与 largest_win 284,且 avg_loss > avg_win,尽管设计的收益风险比为 1.43。这是符合实际的回测行为,不是缺陷,但所述风险几何关系并未在盘中得到真正执行。
沙盒结果在可靠的 227 笔交易 / 205 天样本上显著为负:total_return -8.34%,夏普比率 -5.07(CI [-7.56,-2.81]),profit_factor 0.61,avg_trade_return_pct -0.104%(低于零,约等于往返手续费),手续费占毛收益的 25.4%,且所有波动率三分位组均为负(平静/正常/高压状态下均亏损)。关键在于,所称的收益几何关系(收益风险比约 1.43)并未实现:NOT,avg_loss 179.9 > avg_win 118.2,即亏损大于盈利。这与以下情况一致:(a) 止损仅在收盘时检查,因此 15m K 线会在止损触发前超出推导出的约 0.73% 止损位;(b) z 值回到区间内出场和 24 根 K 线的时间止损使大多数交易在达到约 1.04% 目标前平仓——因此 VWAP 均值回归优势在 SOL 15m 上无法覆盖成本。这并非正确性结论(这是一次未经优化的单次抽样),但分析师应在完整历史数据上验证捕获的偏离是否确实超过约 0.10% 往返成本,以及是否需要盘中/括号止损,才能让所述收益风险比真正实现,再投入时间优化。
回测评审
- 夏普
- -0.40
- 总收益率
- -87.10%
- 最大回撤
- 87.17%
- 总交易数
- 3313
- 胜率
- 54.2%
- 盈利因子
- 0.68
结构完善、频繁触发的策略,样本量大且具有统计决定性(约 6 年内 3313 笔交易)
交易正确实现了假设(对滚动 VWAP 的偏离进行反向交易,多头 1638 笔 / 空头 1675 笔,数量均衡),因此这是对 VWAP 均值回归前提的公平检验
期望收益为负:avg_trade_return_pct -0.0798%(BELOW ZERO,约为往返成本 0.10%),profit_factor 0.68,每笔交易期望收益 -$26.35,total_return -87.1%
夏普比率 -0.40(CI [-1.30, +0.45]),索提诺比率 -0.45,相对买入并持有 information_ratio -1.33
前提全面证伪:每个日历年都亏损(2020 至 2026),每种波动率状态也都亏损(平静/正常/高压均为负),因此这不是状态选择或悬崖问题
收益几何关系倒置:所称的收益风险比约为 1.43,但并未实现(avg_loss 179.97 > avg_win 103.57)——亏损大于盈利,与 15m K 线上收盘价止损超调的情况一致
手续费仅占毛收益的 15.48%,因此这NOT是手续费脆弱性问题——原始反向交易信号的毛收益为负;没有正向优势可供调整手续费/阈值来挽救
分析
回测门控: - 指标不可靠:不一致:夏普比率 0.37 与 total_return -88.82% 符号不一致——夏普比率根据 mtm_equity_curve 序列计算,而收益来自权益曲线。应以权益曲线为准。
迭代历史
验证失败(第 4 层 — QA 审核): - FEE-VIABILITY FAILURE(检查清单 #7):VWAP-反转机制无法覆盖往返交易成本。在决定性的 1660 笔交易 / 363 天的沙盒样本中,已实现的 avg_trade_return_pct 为 -0.016% —— 净负值,且较 ~0.10% BINANCE USD-M 往返吃单成本及 0.15% 期货下限低一个数量级。换手率 297x, avg_holding 2 小时 22 分钟。exit_z=0.3 的反转带仅锁定低于手续费的微小反转,而 1.5% 止损任由亏损扩大,导致 INVERTED 的盈亏比,尽管胜率为 58%:avg_win $75.81 对比 avg_loss $156.52(~2x)。结果:total_return -36.1%, PF 0.67, 夏普比率 -2.19(CI [-4.07, -0.64] 完全低于零)。原理中关于「~0.4-0.6% 反转覆盖往返成本」的主张被数据反驳 —— exit_z 的快速锁定远在此之前就已触发。饱和的单一名义 VWAP-反转类别(零存活;参见 9158-交易 SOL VWAP 反转于 -88%)。 - 信号极性与逻辑 CORRECT,忠实实现假设(z>entry_z -> SELL;z<-entry_z -> BUY;趋势关闭闸门;止损/TP/exit_z/时间止损退出;相对资金规模)。在此注明,以免开发者追查虚幻的代码错误 —— 失败源于经济层面,而非代码缺陷。
验证失败(第 4 层 — QA 审查): - FEE/EDGE FAILURE PERSISTS(清单 #7,L6)——本轮迭代-2费用可行性修复并未NOT创造优势。在一个 DECISIVE 755 笔交易 / 363 天的样本中,已实现的 avg_trade_return_pct 为 -0.064%(仍为净亏损,且低于 0.15% 期货底线),total_return -21.9%,profit_factor 0.61,夏普比率为 -2.45,其 CI [-4.14, -0.85] ENTIRELY 低于零(probabilistic_sharpe 0.001)。min_dev_pct=0.6% 的底线降低了换手率(297x -> 143x),并使交易笔数减半(1660 -> 755),但单一标的的 VWAP 均值回归策略扣除成本后没有方向性优势——这正是开发者自己在说明中承认“可能根本不存在”的、已饱和且幸存者为零的类别。 - INVERTED REWARD:RISK IS BUILT INTO THE PARAMETERS。均值回归目标捕获约(entry_z-exit_z)/entry_z =(2.2-0.5)/2.2 = 0.77x 的入场偏离(在 0.6% 底线处约为 0.46%)。止损 = min(stop_mult*偏离, stop_loss_pct) = 1.2*0.6% = 0.72%,比 0.46% 目标更LARGER -> 盈亏比约为 0.64,盈亏平衡胜率约为 61%,而实际胜率为 53%。理由中所说的“承担约 1.2x 的风险以换取均值回归的价值”是数学错误:均值回归价值仅为偏离的 0.77x,因此 stop_mult=1.2 承担的风险约为回报的 1.56x——这就是为什么 avg_loss $159.66 仍约为 1.86x avg_win $85.70。要实现有利的回报结构,必须stop_mult高于BELOW捕获比例(约 0.77),而非低于它。 - 信号极性和机制CORRECT,并忠实实现了假设和第 -2 轮迭代的变更(z>entry_z -> SELL, z<-entry_z -> BUY;min_dev_pct 百分比门槛;偏离锁定止损;趋势关闭门槛;退出阶梯;相对于资本的仓位规模)。NO L17 代码缺陷特征(win_rate 0.53,|夏普比率| 2.45 < 5,PF 0.61)。特此说明,以免开发者追查并不存在的编码错误——问题出在经济效益,而非代码错误。
验证失败(层级 4 — QA 审查): - MECHANISM HAS NO EDGE——如今已通过修正收益几何关系得到 DECISIVELY 的证明。迭代 3 正确实现了所需修复(计算 _capture_frac,目标 = capture_frac x entry_deviation,stop_rr=0.7 限制为 <1,min_dev_pct 从 0.6 提高至 1.2%),实际收益风险比有所改善(avg_win $121 对比 avg_loss $167,比率 1.38,高于迭代 -2 的 0.54)。但在 DECISIVE 的 499 笔交易样本中,结果仍明显亏损:avg_trade_return_pct -0.089%(低于 0.15% 下限),total_return -16.2%,PF 0.63,win_rate 0.467,夏普比率 -2.69,其 CI [-4.54, -1.01] ENTIRELY 低于零(probabilistic_sharpe 0.0011)。1.2% 偏离下限筛选出更多极端但呈趋势而非回归的偏离,使胜率降至 46.7%——低于实际收益几何关系所隐含的约 58% 盈亏平衡胜率。修正收益几何关系并未创造优势,因为计入成本后该回归信号没有优势。 - 开发者预先登记的 OWN 放弃条件已经满足。理由说明原文为:“如果下一次回测仍显示每笔交易期望收益为负,同时收益风险比有利,且样本约为 150-300 笔交易,那么这就说明问题出在机制本身,应放弃策略而非重新调参。”回测结果正是如此:设计上的收益风险比有利,样本为 499 笔交易,期望收益为负(-0.089%)。 - 代码 CORRECT,并忠实实现了迭代 -3 的修复(capture_frac 来自 entry_z/exit_z;target_pct = capture_frac * 锁定的偏离;stop_pct = min(stop_rr*target_pct, stop_loss_pct),stop_rr 限制为 <=0.9;在目标位止盈;信号极性/趋势门控/锁定/仓位规模均保持不变)。NO L17 代码缺陷特征(胜率 0.467,|夏普比率| 2.69 < 5,PF 0.63)。特别说明此点,以免开发者追查并不存在的代码错误——几何关系修正已生效,机制本身没有优势。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。