策略
SPY 牛市回调逆势策略(忠实移植 Farrell Aultman 的 pinkfish「ac-countertrend」)——仅做多、全仓,DAILY 根柱,SPY.USEQ
结局: 已放弃
SpyAcCountertrendPullback
结局总结
SpyAcCountertrendPullback 将 pinkfish「ac-countertrend」牛市回调买入策略移植到日线 SPY.USEQ,保留源代码的规则、默认值和回调计算中的反常之处。它经过 3 次迭代,并多次遭遇第 3 层沙盒超时(超过 300 秒限制)。最后一个版本已采用每根柱 O(1) 更新,开发者指出耗时似乎发生在策略代码之外。在验证循环中,团队放弃了该策略;运行未生成任何回测指标,因此该假设从未得到检验。
假设
第 3 次迭代修复了第二次 Layer-3 sandbox_timeout 超时问题。规则、指标和参数均未改变,信号输出与 v2 数值完全一致(在 3,000 根测试柱上的最大相对差异约为 3e-15)。经验教训 155(c) 的诊断:v2 的每根柱工作量已是 O(1)。窗口仅包含约 1,650 根日线柱,即使主机负载约为 50,策略代码的运行时间也不到 1 秒。因此,墙钟时间很可能耗在策略之外的目录/引擎工作中(与 Eth/Bnb v3 超时诊断结果相同)。尽管如此,每根柱的工作量现在进一步减少:收益的滚动标准差和退出 SMA 使用滚动求和,而不再逐柱复制列表并重新求和。滚动 20 收盘价最大值扫描固定的 20 槽双端队列;EMA 只初始化一次,之后递归更新。如果再次超时,原因将是沙盒运行环境或主机负载,而非策略代码。
verification_loop:sandbox_timeout:验证失败(第 3 层——沙盒回测):冒烟测试在约 20000 根柱的窗口(SPY.USEQ-1-DAY-LAST-EXTERNAL 的 2400 天)上超过了 300 秒的墙钟时间限制。这几乎总是意味着每根柱的工作量会随历史长度增加,例如反复扫描完整的资金费率/补充序列,或在每根柱的 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算已排序的时间戳数组 ONCE 并使用 bisect,或按时间戳缓存查找结果,使每根柱的开销为 O(log n) 而非 O(n)。
实现
Stratmill 忠实移植 pinkfish「ac-countertrend」(Farrell Aultman,MIT),使用 SPY.USEQ 日线。在牛市状态下(TA-Lib 风格、以 EMA40 为种子的 SMA > EMA80),当回撤 =(含当前值的 20 日最高收盘价 - 收盘价)/ 40 根 K 线的 pct_change 样本标准差 >= 3.0 时全仓买入(整股,杠杆 1;保留源公式中金额与无量纲值混用的问题)。牛市状态反转、收盘价 > SMA20、收盘价 < 入场价*(1-0.15) 或持有 20 根 K 线时退出。
验证结果
sandbox_timeout:验证失败(第 3 层——沙盒回测):冒烟测试在约 20000 根柱的窗口(SPY.USEQ-1-DAY-LAST-EXTERNAL 的 2400 天)上超过了 300 秒的墙钟时间限制。这几乎总是意味着每根柱的工作量会随历史长度增加,例如反复扫描完整的资金费率/补充序列,或在每根柱的 calculate_signal()/on_bar() 内重建列表并调用 min()/sorted()。在 __init__ 中预先计算已排序的时间戳数组 ONCE 并使用 bisect,或按时间戳缓存查找结果,使每根柱的开销为 O(log n) 而非 O(n)。
结局总结
开发者已将每根柱的工作量降至 O(1),采用滚动求和和固定大小的双端队列;其记录指出耗时发生在策略代码之外(主机负载下的目录/引擎工作),因此对 USEQ 根日线柱反复发生的沙盒超时,应作为基础设施问题排查,而不应继续改写代码。
经过 3 次迭代后,该策略在验证循环中被放弃。决定性故障是第 3 层沙盒回测在约 20,000 根柱(2,400 天)的 SPY.USEQ 日线窗口上超过了 300 秒的墙钟时间限制。回测审查、优化、分析师审查和风险审查均未进行。
Farrell Aultman 的 pinkfish「ac-countertrend」策略忠实移植版,应用于日线 SPY.USEQ:仅做多、全仓;当 EMA(40) > EMA(80) 时,在收盘价低于 20 日最高收盘价处买入;收盘价高于 SMA(20)、触及 15% 止损、市场状态反转或持有 20 根柱后退出。源代码中以美元距离除以收益标准差的反常「pullback」计算方式有意保留。
没有任何绩效数据:回测报告为空,没有优化报告,也从未生成收益率、夏普比率或交易次数。
分析
ac-countertrend
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。