策略
LTCUSDT.BINANCE永续合约的周末流动性真空反转——反向交易周五收盘至周日重新开盘期间的超大幅波动,于UTC周日22:00K线入场,并按周一时段固定时钟平仓(1H K线,日历门控,3参数)
结局: 已放弃
LtcWeekendLiquidityVacuumReversionLS1H
结局总结
该策略提出的是日历驱动的优势,而非指标驱动的优势:衡量LTCUSDT永续合约从周五收盘到周日重新开盘的价格偏离,要求其相对于该标的自身26个周末的收益分布足够大,并在周日22:00 UTCK线反向交易;按固定的周一时段时间平仓,同时只保留三个可调参数,以抵御从N组参数中择优拟合。回测在六年多、58,454根K线的数据上顺利运行,产生信号并提交了74笔入场,没有仓位规模或名义金额骤降,但结果为-17.96%总收益、-0.52夏普比率、0.67盈利因子和-0.222%平均单笔收益——胜率为50%,但亏损显著大于盈利。在平静、正常和压力波动状态以及大多数压力窗口中,表现均为负,只有2021中国禁令窗口为正。从未记录任何结论:优化前的回测审查阶段三次超时,运行以“backtest_review_stuck_3_timeouts”为由放弃,因此优化、分析师审查和风险审查均未执行。
假设
一种LONG-SHORT的、单一品种、纯OHLCV的CALENDAR-GATED策略,交易LTCUSDT.BINANCE USD-M永续合约,采用1-HOUR K线(目录已验证:2020-01-09 -> 2026-09-10,约58,500根小时K线,约348个周末)。其机制NOT是基于指标的均值回归,NOT是动量换皮:它是一种流动性日历效应。加密永续合约24/7交易,但支撑它们的机构/做市流动性并非如此——CMEBTC期货休市,US/EU交易台、ETF授权参与方、国库/OTC部门以及大多数算法流动性提供商自周五约21:00 UTC起至周一保持空仓或缩减规模。Binance USD-M上如LTC等中盘币种的订单簿深度在该窗口内可测度地变薄。在变薄的订单簿中,给定规模的订单流(一次强制平仓、一笔大额主观委托单、无套利对手方承接的消息面反应)比在周二推动价格走得更远。其中部分位移是纯粹的价格冲击,而非信息,并将在周一全球交易时段开始、深度流动性回归时被回吐。该策略度量周末位移,要求其相对于该品种自身近期周末收益分布足够大,并采取OTHER方向,在周日22:00 UTC K线收盘时入场,在周一交易时段内按固定时间退出。刻意仅保留THREE个可调参数(sigma_mult、hold_hours、stop_atr_mult)——其余所有要素(周五21:00 UTC基准时间戳、周日22:00 UTC入场时间戳、26周滚动sigma窗口)均为FIXED日历/结构性常量,而非拟合旋钮,因为本工厂中反复出现的死亡原因是best-of-N参数选择。给开发者的实现说明(一个兄弟假设刚死于Layer-3沙盒超时):所有逐K线工作必须为O(1)——在on_bar中通过K线的UTC星期/小时增量维护周五-21:00基准收盘价和最近26个周末收益的固定长度双端队列,绝不在calculate_signal内重新扫描历史。
直接实现该假设。周五21:00 UTC参考时间戳、周日22:00 UTC入场时间戳和26周sigma窗口都按要求硬编码为常量(不是参数),因此优化器只能调整sigma_mult、hold_hours和stop_atr_mult(另加风险仓位计算)——尽量减少从N组参数中择优。相关策略的Layer-3超时问题通过结构设计解决:周五参考收盘价、TR环形缓冲区(运行总和,deque maxlen 168)以及周末收益环形缓冲区(maxlen 26)均根据该K线自身的UTC星期几/小时,通过整数运算增量更新;不会在calculate_signal内重新扫描历史数据,每个周末最多基于 <= 26 个浮点数重新计算一次sigma。星期/小时辅助函数定义在模块级(而非staticmethod),这样Layer-2代理就无法注入self。沙盒窗口内的入场频率:约119个周末,约13个因sigma预热而舍弃;|z| >= 1.0约在三分之一的周末触发 -> 约30笔交易,远高于至少1笔交易的要求。ONE HONEST CAVEAT分析师应权衡:对完整348个周末历史数据中原始机制的离线检查(sigma_mult 1.0,持仓20小时,无止损)显示,约有74笔交易,每笔毛收益为+0.19%,扣除0.10%往返吃单成本后净收益仅约+0.09%——低于0.15%期货底线;且年度盈亏符号交替(2020/21为正,2022和2024/25为负),因此随着周末加密货币流动性日趋专业化,流动性真空反转效应可能已经衰减。我已按要求实现;hold_hours 20和宽幅3.5-ATR尾部止损是保留该机制的默认设置(紧止损会在反转完成前截断交易)。
backtest_review_stuck_3_timeouts
实现
在LTCUSDT.BINANCE USD-M永续合约的1-HOURK线上,采用纯OHLCV的日历门控型多空周末流动性真空反转策略。参考价 = 周五21:00 UTC收盘价(固定时间戳)。周末价格偏离 r = close(Sun 22:00 UTC)/close(Fri 21:00 UTC) - 1,以该标的最近26次周末价格偏离的标准差进行标准化(固定窗口,严格使用当前周末之前的数据)。calculate_signal在EVERYK线上返回连续反向交易z分数 z = -displacement/sigma(价格偏离相对于最近的周五参考价衡量,因此该变量整周逐K线变化);入场决策在should_enter中受时间门控,仅在周日22:00 UTCK线上且|z| >= sigma_mult时触发,采取周末走势的OTHER方向(周末遭抛售 -> BUY,周末大幅上涨 -> SELL)。按固定的周一时段时钟平仓:成交后hold_hours,以该持仓自身的ts_opened为锚点(采用日历时间,可在重启后恢复);另在K线收盘时检查宽幅stop_atr_mult x ATR(168h)尾部止损。仓位按资金规模计算:以ATR止损距离为基准,使用权益的risk_pct,并以权益 x 杠杆的max_notional_frac倍为上限;杠杆1.0(只有因为策略做空,才需要期货交易场所)。三个可调参数(sigma_mult、hold_hours、stop_atr_mult)外加仓位计算;所有日历/结构要素均为固定常量。每根K线工作量均为O(1):使用168槽的TR环形缓冲区并维护运行总和,以及一个26槽的周末收益环形缓冲区;仅在周末结束时重新计算sigma。
验证结果
当`_pos_key`变化且`_pending_stop_pct`为0.0时,应根据实时状态重建止损,而非将其禁用,例如`self._active_stop_pct = self._pending_stop_pct or (self.stop_atr_mult * self._atr / self._price if self._atr > 0 and self._price > 0 else 0.0)`。ATR环形缓冲区会在168根K线内重新预热,因此重启后不久即可做到。
与时间退出不同,ATR尾部止损无法在重启后安全恢复。`_pending_stop_pct` / `_active_stop_pct`仅保存在内存中。若实盘/模拟交易节点在仍有未平仓头寸时重启,`should_exit`会看到新的`ts_opened`(_pos_key == -1),并复制`_pending_stop_pct`;其值仍为0.0的初始值——因此`_active_stop_pct`是0.0,而`if self._active_stop_pct > 0.0`保护条件会在该持仓剩余期间静默禁用尾部止损。之后,该持仓仅受hold_hours时钟保护(<=24h)。文档字符串声称退出“可在重启后安全恢复”,这对时钟锚点(position.ts_opened)成立,但对止损不成立。
限制止损距离,例如`stop_pct = min(self.stop_atr_mult * self._atr / self._price, 0.10)`,使ATR止损在压力状态下仍是真正的尾部止损,而非退化为“仅按时间退出”,并确保risk_pct名副其实。
“宽幅ATR尾部止损”在高波动状态下几乎不起作用,因此`risk_pct`夸大了实际风险控制效果。在完整的LTC 1H历史数据中,stop_pct = stop_atr_mult * ATR(168) / 价格的范围为2.28%至26.14%(均值5.52%)。在范围较宽的一端,止损在20小时持仓期间根本不可能触发,因此实际平仓始终由时钟决定;实际最差单笔交易亏损为名义本金的-14.37%(权益的-4.18%),而名义风险预算为1.5%。仓位计算在内部是一致的(止损越宽,名义仓位越小,notional_frac范围为0.057-0.658),因此这不是仓位计算错误——但沙盒中largest_loss的-4,241 USD是由此造成的,而非止损未能触发。
要么要求达到完整的`_SIGMA_WINDOW`后才开始交易(`len(self._wk) < _SIGMA_WINDOW -> sigma = 0.0`),这会增加约13个周末的预热时间;要么维持现状并在分析师简报中注明。假设将26列为固定结构常量,因此将其精确匹配也能消除一个事实上的免费参数。
Sigma预热半宽:`_MIN_SIGMA_OBS = 13`允许在基于13个周末的sigma估计值下开始交易,而假设指定的是26周滚动窗口。在预热阶段,z分母噪声显著更大,因此|z| >= sigma_mult门槛在最初约13个交易周末与样本其余部分不可比。这是一个小规模、一次性的样本质量影响(约占348个周末的13),并非前视偏差。
费用可行性才是这里真正的风险,而且它是结构性的,贯穿WHOLE声明的整个参数空间,而不仅仅是沙盒抽样。我在目录中的LTCUSDT.BINANCE 1H历史数据上离线完整复现了该策略的精确机制(58,454根K线,2020-01-09 -> 2026-09-10),并将沙盒复现到3位小数(23笔交易,每笔毛利-1.145%,而沙盒报告为avg_trade_return_pct -1.151%)——因此以下数字反映的是机制本身,而非执行假象。在出厂默认值下覆盖全历史(sigma_mult 1.0,持有20小时,止损3.5xATR):74笔交易,GROSS -0.217%/笔,即-0.317%净值,已扣除约0.10% BINANCE双边成本。随后我扫描了完整的界内4x4x3网格(sigma_mult 0.7-1.6,持有12-24小时,止损2.0-5.0):BEST格(位于48)为毛+0.118% = 每笔净+0.018%(sm=1.0,hold=16,stop=2.0,n=74)——而这已经是best-of-48优选的结果,因此优化器的上限仍低约8x,低于0.15%期货下限,其余所有角落均为负值。年度PnL正负交替,与开发者的预警完全一致(2020 +5.9%,2021 +28.5%,2022 -18.8%,2023 +2.4%,2024 -14.2%,2025 -20.8%),与周末加密做市专业化后流动性真空效应衰减的判断一致;沙盒的机制划分(平静市况+1.66%,常态-5.82%,承压-7.59%)也指向同一方向。样本量同样单薄:默认值下74笔交易,最宽松的界内设置(sigma_mult 0.7)下110笔,覆盖6.5年——除一个角落外,均低于约100笔的区分真实优势与噪声的门槛,且按结构进场频率被硬性限制在约348个周末。转向动量也NOT挽救它(毛利-0.203%),因此这是缺失的优势,而非反向的优势。在回测评审时我首先会检查:2020-21的正收益年份是否承载了全部结果,因为后-2022子样本均为负值。
结局总结
尽管胜率接近五五开,周末流动性真空反转策略在 LTC 上的单笔优势为负,且远低于往返成本;六年累计的 74 笔交易样本也几乎无法为审查阶段提供足够依据——应在进入审查队列前,预先筛查薄样本的日历效应是否存在收益不对称。
该运行从未获得回测审查结论:优化前审查阶段三次超时后,运行以“backtest_review_stuck_3_timeouts”为由放弃,因此从未进入优化、分析师审查和风险审查阶段。
在LTCUSDT.BINANCE永续合约的1H K线上,逢高做空或逢低做多,反向交易周五-21:00-UTC至周日-22:00-UTC期间的超大幅波动。其依据是:周末流动性稀薄会造成价格冲击,而机构深度流动性在周一时段回归时,这些冲击会被回吐。于周日22:00K线入场,并按固定的周一时钟时间平仓,设置ATR尾部止损。
在2,436天(58,454根小时K线)内,回测产生74笔交易,总收益为-17.96%(CAGR -2.90%),夏普比率-0.52,索提诺比率-0.18,盈利因子0.67,最大回撤21.53%。胜率恰为50%,但平均单笔收益为名义本金的-0.222%(期望收益为-$229.61);亏损交易(平均$1,371)大于盈利交易(平均$912),且三个波动状态下的夏普比率均为负。
回测评审
- 夏普
- -0.52
- 总收益率
- -17.96%
- 最大回撤
- 21.53%
- 总交易数
- 74
- 胜率
- 50.0%
- 盈利因子
- 0.67
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。