策略
SOL周末流动性超调回归策略,多空双向(单一标的SOLUSDT.BINANCE USD-M永续合约,1小时K线,仅OHLCV,在机构流动性恢复的周一UTC开盘时反向操作SIGNIFICANT的周五→周一周末行情,持仓约2天,每周一笔交易,3参数)
结局: 已放弃
SolWeekendOvershootReversalLS
结局总结
SolWeekendOvershootReversalLS试图利用周末薄流动性效应,在周一UTC开盘时对每一次显著的周五→周一行情波动进行反向操作,预期错位会部分回归。交易结果与设计相符(每周一次的周一反向交易,55多头/68空头,持仓约20小时,低换手率),因此-30.3%的结果为该前提提供了明确的验证结论:夏普比率-0.48,盈亏比0.80,单笔交易期望值为负-$238,avg_win $2,003在约49%的胜率下低于avg_loss $2,372。分析师在回测评审关口放弃了该策略,判定周末行情不会回归,且调整这三个参数无法扭转七年中有六年为负的期望值;该策略从未进入优化、风险评审或模拟交易阶段。
假设
一个LONG-SHORT、单一标的、CALENDAR/季节性策略,标的为SOLUSDT.BINANCE(USD-M永续合约,仅OHLCV——无补充数据源,是4%中表现最好的现存标签系列)。该Edge是一种有据可查的周末微观结构效应,在此投资组合中几乎缺失(每周交易频率的分类桶为0.5%):由于做市商和机构交易台在周五至周日期间减少库存,加密货币周末订单流由薄弱的散户流动性主导。这种薄弱性使周末价格OVERSHOOT其公允区间;当周一UTC交易时段更深的流动性恢复时,该错位会部分回归。机制:在周一00:00 UTC时,测算经波动率标准化的周五→周一周末回报;如果这是一次SIGNIFICANT的错位(|z| >阈值),则朝OPPOSITE方向入场,并随着流动性恢复正常而收获均值回归收益,持仓约2天。该设计刻意避开任何已失效的类别:NOT突破策略、NOT主动方成交量/OI/强平数据流策略(这些因数据或手续费问题而失效)、NOT资金费率套利(L33)、NOT截面轮动(L32),以及NOT常驻型VWAP反向交易——NOT它每周至多触发一次(约52笔交易/年,约300,涵盖约6年的SOL历史数据),因此手续费拖累极小,且每笔交易目标是相对于约0.15%期货门槛有较大空间的多百分点级周末错位。仅有3个参数(周末行情z值阈值、持仓天数、ATR止损倍数);该阈值是经波动率标准化的,而非调优后的固定百分比,以抵御248式的过拟合失败。填补了代表性不足的long_short(13.8%)以及几乎空白的每周季节性周期。
第3轮迭代针对第-4层QA中两处阻塞性问题进行修改,未触碰已通过第1-3层验证的信号逻辑(本地验证:静态检查通过,全部六个合成场景均通过)。(1)单笔交易Edge低于手续费(QA提出的主要经济性质疑):此前对称的2.5-ATR止损 == 2.5-ATR TP触及止损的频率与获利的频率大致相当(avg_win ~= avg_loss,净0.04%)。现在的出场方式变为非对称且与机制一致:止盈现在是一个REVERSION TARGET,设定为按周末前参考价格计算的周末错位幅度的reversion_frac(0.6),因此获利目标会随假设所依赖的多个百分点的超调幅度而变化(例如约4%的周末行情会产生约2.4%的目标,~16x高于0.15%期货门槛,且远高于约0.10%的来回手续费成本),同时ATR止损仍作为保护性出场——策略现在更倾向于锁定回归收益,而非在对称边界上进行抛硬币式的赌博。(2)结构性不可测量问题:entry_z从1.0下调至0.6,因此每周一开盘的触发条件现在是|z|>0.6(约55%的周数,约28笔交易/年),而非|z|>1.0(约30%的周数,约15/年)。在约6年的SOL历史数据中,这将实际交易数量从约90提升到约170,达到用于区分Edge与噪声所需的100笔交易门槛,同时仍保留真实的显著性过滤条件(在51小时窗口内0.6个标准差仍代表多个百分点的错位)。(3)QA提到的轻微51-bar偏移锚点漂移问题维持原样(QA已标注为非阻塞性问题),以保持改动最小化。仅entry_z、atr_tp_mult(已移除)->reversion_frac(新增),以及should_exit止盈分支发生了变化;导入、每周一次的触发条件、连续型z信号、仓位规模及杠杆使用均未变化。
周末超调回归前提已被证伪。反向操作显著的周五->周一行情在7年中有6年亏损(仅2024年勉强为正+2.8%),最终以total_return -30.3%收尾,夏普比率为-0.48(CI [-1.10, 0.20]),索提诺比率为-0.25,profit_factor 0.80,PSR 0.08。在123笔交易中,avg_trade_return_pct为-0.325%(为负,低于手续费门槛),每笔交易期望值为-$238。收益结构是倒挂的:在约49%的胜率下,avg_win $2,003小于avg_loss $2,372——回归目标TP锁定的是部分盈利,而2.5-ATR止损吸收的是更大的亏损。周末的价格错位在周一流动性恢复后并未部分回归,因此逆势入场系统性地站在了错误的一方;如果有变化的话,该行情反而持续延伸。调整entry_z/hold_days/atr_stop_mult无法扭转每年都存在、胜率接近抛硬币水平的负期望值。不适合迭代(代码正确实现了该前提),也不适合revise_hypothesis(被测试的机制本身已失效;转为周末动能策略将是一个不同的、投机性的假设,而非重新表述)。根据负avg_trade_return_pct下限及PF < 1.0的标准予以放弃。
实现
基于SOLUSDT.BINANCE USD-M永续合约、仅使用1小时OHLCV的多空周末超调回归策略。每周一次,在周一UTC交易时段的第一根K线时,测算经波动率标准化的周五(21:00)->周一(00:00)周末对数回报(周末行情除以该约51小时窗口内的已实现波动率预期,得到z分数)。如果|z| > entry_z,则对该错位进行反向操作:周末上涨后做SHORT,周末下跌后做LONG。现在的出场方式为ASYMMETRIC,以收获回归收益:一个回归目标止盈,捕获周末错位幅度(入场价格减去周末前参考价格)的reversion_frac(默认0.6),一个保护性ATR止损(atr_stop_mult x ATR),以及一个hold_days时间止损。仓位规模按ATR止损处风险敞口占净值的risk_per_trade计算,上限为净值x杠杆(2x)。
验证结果
验证失败(第4层——QA评审): - 结构性不可测量问题。策略每周至多触发一次(周一开盘触发),仅在|z| > entry_z(1.0)时触发AND。|z|>1的周末行情约出现在30%的周数中,因此实际交易频率约为15笔/年——沙盒结果确认在363天内共有11笔交易。假设中'约52笔/年,约6年内共300笔'的说法忽略了z值门槛,而该门槛将每周交易频率削减了约70%。即便涵盖约6年的完整历史数据,交易数量也远低于100笔——低于区分Edge与噪声所需的下限。沙盒夏普比率为0.13,CI区间为[-1.41, +1.78],跨越零值,PSR 0.56:与随机结果在统计上无法区分。将此送入优化环节将重蹈L16/L26式的资源浪费。 - 单笔实际Edge低于手续费。沙盒avg_trade_return_pct 0.04%(净值)低于0.15%期货门槛,且仅略高于约0.10%的来回手续费成本。原因是结构性的:出场采用对称的2.5-ATR止损和2.5-ATR TP(atr_stop_mult == atr_tp_mult),因此该反向交易触及止损的频率与获利的频率大致相当(avg_win $2458 对比 avg_loss $2515,win_rate 0.55,PF 1.17),而非如假设所称优先收获回归收益。 - 周末参考点为固定的51-bar偏移。如果周一00:00 bar缺失,触发条件会在第1/2小时触发,51小时窗口相对于周五21:00 -> 周一00:00锚点会偏移1-2小时。对于一个多百分点级别的信号来说,这属于次要问题。
分析师需在约6年的SOL完整历史数据上进行评估(按每周交易频率约130-170笔交易)。注意:这属于单一标的反转/反向交易类别,本次会话中该类别已反复失败。
沙盒回测在 SMALL 22 笔交易 / 363 天的样本中总体为亏损:total_return -11.8%,夏普比率 -0.80(CI [-2.32, 0.88] 跨越零轴),profit_factor 0.66,avg_trade_return_pct -0.645%(为负,低于手续费下限),win_rate 0.36。未发现代码缺陷特征(win_rate != 0.0,|Sharpe| < 5,profit_factor != 0.0),因此这是实现层面的优势失效,而非程序错误;且 22 笔交易(峰度 18,偏度 -1.6)样本过少,不足以区分是真实优势还是噪声。对 backtest_review 的分析师而言,这不构成 QA 级别的阻断项。
可选项:仅在提交入场时锁定该周,或确认该语义。目前保持现状即可接受。
每当看到第一个符合条件的周一bar时,无论是否触发入场,每周门控都会在calculate_signal中设置_last_trigger_week。如果前一周约2天的持仓在周一仍未平仓,则不会调用should_enter,但该周会被'消耗',从而静默跳过该周一。这与'每周至多一次'的设计意图一致;不构成阻塞项。
回测评审
- 夏普
- -0.48
- 总收益率
- -30.26%
- 最大回撤
- 35.78%
- 总交易数
- 123
- 胜率
- 48.8%
- 盈利因子
- 0.80
简洁的单一标的OHLCV-only设计,每周一次的合理交易频率,手续费拖累较低(换手率16);交易结果与假设相符(每周一次的周一开盘反向交易,55多头/68空头,持仓约20小时)
max_drawdown 35.8%低于强制放弃线——这是Edge失败,而非爆仓
7年中有6年为负收益;total_return -30.3%,无盈利区间
夏普比率-0.48(CI [-1.10, 0.20]),索提诺比率-0.25,profit_factor 0.80,PSR 0.08——无统计学意义上的Edge
avg_trade_return_pct -0.325%(为负,低于手续费门槛),每笔交易期望值为-$238
风险回报比倒挂:avg_win $2,003 < avg_loss $2,372,胜率约为49%——回归目标TP锁定小额盈利,而ATR止损承受更大亏损;周末行情并未回归(前提已被证伪)
迭代历史
验证失败(第2层——合成场景): 使用的参数:['entry_z', 'hold_days', 'atr_period', 'atr_tp_mult', 'min_notional', 'vol_lookback', 'atr_stop_mult', 'weekend_hours', 'risk_per_trade', 'trigger_window_hours'] 检查__init__是否已从self.parameters.get()设置所有属性。 - steady_uptrend:TypeError:FactoryStrategy._bar_ts()接受1个位置参数,但传入了2个(bar时间戳:1735700100000) - steady_downtrend:TypeError:FactoryStrategy._bar_ts()接受1个位置参数,但传入了2个(bar时间戳:1735700100000) - flat_ranging:TypeError:FactoryStrategy._bar_ts()接受1个位置参数,但传入了2个(bar时间戳:1735700100000) - volatility_spike:TypeError:FactoryStrategy._bar_ts()接受1个位置参数,但传入了2个(bar时间戳:1735700100000) - zero_volume:TypeError:FactoryStrategy._bar_ts()接受1个位置参数,但传入了2个(bar时间戳:1735700100000) - price_gap:TypeError:FactoryStrategy._bar_ts()接受1个位置参数,但传入了2个(bar时间戳:1735700100000)
结局总结
有据可查的微观结构效应并不能保证均值回归可交易——SOL周末超调在周一流动性恢复后并未均值回归(如果有变化的话,反而持续延伸),因此'回归目标TP/ATR-止损'的收益结构会锁定小额盈利,同时承受更大的亏损。
该策略在优化前的回测评审关口被放弃,判定为前提被证伪的Edge失败(而非爆仓):周末的价格错位在周一并未回归,因此逆势入场系统性地站在了错误的一方,且每一年都存在的负期望值(胜率接近抛硬币水平)无法通过调参来扭转。
这是一个基于SOLUSDT USD-M永续合约(1小时K线,仅OHLCV)的多空单一标的日历/季节性策略,每周一次,在周一UTC开盘时反向操作一个经波动率标准化后的显著周五→周一周末行情波动,押注在机构流动性恢复后,这种薄流动性下的周末超调会部分回归,持仓约2天,采用回归目标TP、ATR止损和时间止损。
在123笔交易的样本中,7年中有6年为负收益,总回报为-30.3%,夏普比率为-0.48(CI [-1.10, 0.20]),索提诺比率为-0.25,盈亏比为0.80,概率夏普比率为0.08,最大回撤为35.8%。单笔交易期望值为-$238(avg_trade_return_pct -0.325%,低于手续费门槛),风险回报比出现倒挂:avg_win $2,003在约49%的胜率下低于avg_loss $2,372。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。