跳至正文
全部策略

策略

宏观 3 资产动量轮动:持有趋势最强的宏观仓位——{US 股票、长期国债、黄金}——并采用绝对动量现金退出机制(SPY/TLT/GLD.USEQ,日线,月度再平衡,3 参数)

结局: 已放弃

MacroThreeAssetMomentumRotationCashEscape

结局总结

该策略提出在 SPY、TLT 和 GLD 之间进行经典的双重动量宏观轮动,并设置现金避险选项,目标是覆盖语料中代表性不足、拥有约 21 年干净日线历史数据的股票市场。其初始回测轻松超过了该市场的经济门槛(平均每笔交易 1.77%,盈利因子 1.80),并获得“优化”判定,但基础指标较弱(夏普比率 0.27,43% 回撤),与假设所称的“回撤减半”相矛盾。优化揭示了真正的问题:三个窗口中的样本内滚动前推夏普比率 0.91,在样本外均反转为 -0.60,且 PBO 0.66、DSR 0.0,并未通过计划级 FDR。多个硬性有效性关卡未通过,回看期参数呈悬崖式变化,且两个几乎相同的衍生策略已被放弃;因此分析师认定该优势只是对噪声的拟合,并在一次迭代后放弃了该策略。

假设

一项LONG-ONLY、SINGLE-SLEEVE-AT-A-TIME的宏观REGIMEROTATION,配置于三个高流动性、结构性低相关的USETF:SPY(US股票贝塔)、TLT(长久期国债)、GLD(黄金)。策略每月按滚动总回报动量对三者排序,持有最强子策略的100%,并配有ABSOLUTE-动量过滤器:当领涨者的滚动回报为负时轮动至现金(短期国债代理 / 持平)。这是对已撞车创意家族的刻意DEPARTURE:它NOT一个加密货币比价对、NOT美元中性、NOTSOL/ETH、NOT单一永续合约上的趋势/回归机制、NOT资金费率/OI/溢价/清算/成交tick、NOT期权、NOT次小时级高频交易者,以及NOT截面分散度筛选板块组合(该类策略刚在27年USEQ历史数据上失效——该机制在单一资产类别内对MANY个相关标的排序后净值趋于噪声;而本策略在THREE个深度低相关的宏观子策略间排序,其风格在多季度周期上轮动)。其优势在于有据可查的宏观动量 + 防御性退出结构(Antonacci 风格双重动量):资本在风险偏好股票周期、久期避险周期、通胀/实物资产周期之间持续轮动,持有当前向上趋势的子策略——当无任何资产向上趋势时则果断退出至现金——历史上有助于提升风险调整后收益,并将回撤相对于买入持有股票约减半。它填补了严重欠缺的EQUITY领域(非加密、非BTC——语料库为62%BTC),该机制为低频、低参数,拥有DECADES的干净日级复权历史(自2004以来GLD → 约21年),可进行真正具备统计功效的前推测试,且与工厂的偏多加密动量存续策略不相关。

严格按假设实现:三个不相关的宏观仓位(SPY/TLT/GLD.USEQ)、日线数据、以日历为锚的月度再平衡、通过相对动量选择仓位,以及采用 Antonacci 式绝对动量实现现金退出,模型参数恰为三个(lookback_days、skip_days、abs_threshold),另加一个仓位规模比例。交易场所按声明设定为 USEQ——仅做多、杠杆 1.0、按整股确定规模(USEQ 仓位精度 0),因此没有申请也没有使用保证金。每年只有少数几次换仓,约有 0.02-0.05% 的往返 USEQ 成本,且持仓期为数月,因此单笔交易优势比手续费底线高出几个数量级。默认回看期下的预热期为 128 个交易日,仅占 500 根 bar 的合成情景数据和约 1650 个交易日的日线沙盒窗口的一小部分,因此在验证期间,月度网格会触发数十次。多腿执行使用基础模板的 _submit_entry_instrument/_submit_exit_position,并设有全局挂单门控,因为不同工具不会相互净额结算。需要说明的一点是,这是要求中明确提出并照此实现的:“轮换至现金”建模为空仓(现金回报为零),而不是短期国库券代理资产,因此与真实的 BIL/SHY 仓位相比,回测略微低估了防御状态的回报。

过拟合,样本外泛化能力为负。滚动前推测试 IS 0.91 -> OOS -0.604,且 is_overfitted=true,三个窗口的 OOS 夏普均为 NEGATIVE(-1.44/-0.29/-0.07)——宏观轮动优势在未见数据上反转,并非只是减弱。夏普比率去膨胀检验未通过,定量确认了这一点:DSR=0.0,预期最大值=1.43,共 225 次试验(有效试验数为 38),PBO=0.66>0.5,is_significant=false,且未能通过项目级 FDR(保留 274 项中的 4 项)。三个 HARD 有效性门槛均未通过(OOS<=0、is_overfitted、PBO>0.5),因此不可能晋级,也不能豁免。敏感性分析显示 lookback_days 是一道断崖(跨越 +-20% 时从 0.79 变为 0.21),因此不存在可继续迭代优化的稳健参数区域——结果只是拟合了噪声,在参数空间中并不存在。问题不在手续费(单笔交易的 2.05% 表现良好),也不是可通过修复代码解决的问题。这是反复出现的 SPY/TLT/GLD 双动量轮动家族,已在语料库中失败两次(相对动量 SPY/TLT/GLD 因过拟合放弃,模拟 0.84;QQQ/GLD/TLT 双动量现金退出策略因模拟 0.78 的 risk_reject 而放弃)。该机制在文献中有理论依据,但在这个交易场所上反复对同一段三仓位宏观历史过拟合,因此改用另一组工具只会再次过拟合,并不能修复前提缺陷。过拟合 -> 放弃。

实现

仅做多、单臂的宏观风格轮动,基于USEQ日K线,跨SPY(US股票)、TLT(长期国债)与GLD(黄金)。在每个日历月的首个交易日,按lookback_days个交易日的滚动总回报(截至skip_days个交易日前)对三个子策略排序,并将95%的权益以整股方式投入领涨者。绝对动量过滤器可覆盖该排名:即便领涨者的滚动回报仍未突破abs_threshold,账户整体轮动至CASH(持平),直至下次月度决策。任意时点仅持有一个子策略;先平掉上一子策略,新开仓延迟至后续K线以便卖单资金结算为购买力。calculate_signal每根K线返回领涨者的滚动动量(一个连续决策变量),再平衡网格以K线自身的(年, 月)为键,故在重启/回测/模拟环境下完全一致,且不采用杠杆或做空。

验证结果

确认预期的预热门槛;_momentum 中冗余的内部 None 防护意味着任何不匹配都会安全失败(不交易),因此严格来说无需修复。

min_bars_required() 覆盖了基础框架方法。基础框架以该方法作为主信号路径的门控(第480行:len(self._bars) < _need)。覆盖方法返回 lookback_days+skip_days+2,与内部 _momentum 守卫(每个缓冲区的 lookback+skip+1)一致,故历史数据不足时不会触发任何信号。行为安全,但影子测试结果值得关注。

可选:以确定性方式持久化/推导最近一次决策的月份(例如,如果当前月份等于当前持仓入场所在的月份,就跳过重新决策),确保重启不会触发偏离网格的再平衡。

进程重启时,_last_month_key 会重置为 None(内存状态),因此重启后的首个主 bar 会根据当前动量重新决定目标,而不是等到日历月边界。由于目标是动量的确定性函数,且只有在持仓 != 目标时才会执行交易,仓位正确的组合不会频繁交易;月中重启可能导致再平衡略早于纯月度网格。相较于 check-20 反模式,这没有问题(计划以 bar 时间戳 IS 为锚,而非以 bar 计数器为锚),但会略微削弱严格的日历一致性。

回测评审

夏普
0.27
总收益率
175.86%
最大回撤
43.07%
总交易数
77
胜率
51.9%
盈利因子
1.80

合法、有据可查的机制(Antonacci 风格双重动量 / GEM),NOT单一标的动量克隆以及NOT刚失效的分散度筛选板块组合——它在THREE个结构性低相关的宏观子策略(SPY/TLT/GLD)间轮动,并设有现金退出机制。

经济效益以较大余量通过领域下限:avg_trade_return_pct 1.765%(USEQ下限0.05%,优先>0.10%),profit_factor 1.80,正期望,手续费0%毛收益——这NOT一个依赖费率优势的案例。

数值上可行的样本:约 21 年内发生 77 次轮动(GLD 列出 2004),按假设要求仅做多(0 做空),交易符合单仓位轮动机制。entry_diag 显示 0,只是因为所有交易腿都是通过 _submit_entry_instrument 手动驱动的(基础路径计数器不会跟踪它);77 笔交易和 175% 回报证实策略确实触发。

针对约 21 年拆股调整日线历史数据,仅有三个干净且范围明确的参数(lookback_days、skip_days、abs_threshold)——可以进行真正具有统计效力的滚动前推测试,并填补代表性严重不足的非加密货币 EQUITY 交易场所。

稀疏的 daily_returns 展示中看起来不合理的条目(例如 +49% Nov-2025)是交易日期之间抽样得到的累计回报,NOT 单日 MTM 跳变——通过对 5217 个日线观测值进行 annualized_volatility 14.3% 后即可解释;这不是伪影。

默认参数下的基础指标较弱:夏普比率 0.27(CI [-0.05, 0.61] 跨越约 0),max_drawdown 43%——这直接 CONTRADICTS 假设的核心主张“最大回撤大致减半”。

相对于等权 3-ETF 组合,alpha 为负(-0.0032),且 information_ratio -0.24(benchmark_meaningful=true):在默认参数下,与直接将三个仓位等权配置相比,该轮动策略几乎没有增加价值。

abs_threshold 默认值为 0.0,因此“现金退出”几乎从不触发——exposure_pct 95%——这意味着在调参之前,策略优势所依赖的防御结构实际上未经检验。

CAGR 4.76% 偏低;风格归因显示该优势集中于平稳三分位,而在压力三分位中则较为薄弱。

分析

这是在代表性不足的股票交易场所上采用的合理且有充分文献记录的机制(Antonacci 双动量 / GEM);不是单一名称克隆策略。

单笔交易经济效益轻松通过近零USEQ费率下限(avg_trade_return_pct 2.05%),故这NOT一个费率失败案例。

除回看期外,敏感性大多平坦;profit_factor 1.91 和 win_rate 0.57 在样本内看起来合理。

结论明确:OVERFIT:滚动前推 IS 0.91 -> OOS -0.604,三个 OOS 窗口均为负值(-1.44、-0.29、-0.07)。该优势在样本外 REVERSES,并非只是衰减。

PBO 0.66 > 0.5 且 DSR 0.0 / is_significant=false / 未通过方案 FDR(保留 274 中的 4):所选 Sharpe 在 225 次试验中与 N 中最优噪声无法区分(期望最大值 1.43 >> 所选 0.32)。

lookback_days 是一个悬崖式参数(夏普比率在 +-20% 网格上从 0.79 跳至 0.21),因此不存在可供朝其调优的稳健区间。

最大回撤 34.3% 超过了假设中预先登记的 18% 上限;预先登记的 min_oos_sharpe 0.8 未能达到,结果为 -0.60。

几乎相同的姊妹策略已经失败:SPY/TLT/GLD 相对动量轮动策略(因过拟合放弃,模拟 0.84)以及 QQQ/GLD/TLT 双动量现金退出策略(risk_reject 放弃,模拟 0.78)。

对 274 个项目候选策略按 q=0.10 进行 Benjamini-Hochberg 检验后,保留 4。即使某个候选策略的单项统计数据看起来很好,若未能通过此检验,也无法与项目自身的噪声区分开来。

结局总结

一种在文献中理论成立的机制,仍可能反复对同一段有限的宏观历史过拟合(这个 SPY/TLT/GLD 家族此前已经失败两次);因此,对于低频、低样本量的轮动策略,唯一真正的样本外检验是前向模拟交易,而不是经过调参的回测统计数据。

分析师在优化后认定策略明显过拟合并放弃:三个硬性有效性门槛均未通过(OOS 夏普 <= 0,is_overfitted=true,PBO 0.66 > 0.5),去膨胀夏普为 0.0,且在 225 次试验中不显著;策略未能通过项目级 FDR,而且 lookback_days 是一道断崖式参数(从 0.79 变为 0.21),没有可继续迭代优化的稳健区域。

一种仅做多、每次只持有一个仓位的 Antonacci 式双动量轮动策略,每月持有 SPY、TLT 或 GLD(三个结构性不相关的宏观仓位)中趋势最强的一个;即使领先者也未呈现上行趋势时则转为现金。该策略旨在填补代表性不足的非加密货币股票交易场所。

默认参数下,回测总回报为 175.86%(CAGR 4.76%),覆盖约 21 年,共 77 笔交易,盈利因子为 1.80,平均单笔交易回报为 1.77%;但夏普比率仅为 0.27(CI [-0.05, 0.61]),最大回撤为 43%。优化后,样本外表现进一步恶化,滚动前推测试的样本内夏普比率 0.91 反转为 OOS -0.60(三个窗口均为负值:-1.44/-0.29/-0.07)。

Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。