跳至正文
全部策略

策略

BTC 单一资产宏观趋势状态多空策略 BINANCE 日线(50日/200日 MA 交叉,数月持仓,宏观周期)

结局: 已放弃

BtcDailyMacroTrendRegime50200CrossLS

结局总结

该策略将教科书式的 50/200-日宏观交叉应用于 BTC 多空双向交易,旨在通过多周期堆叠来填补几乎空白的数月持仓周期配额。先前的一次迭代在 Layer-2 因 staticmethod 描述符问题而崩溃;iter-2 修复(模块级 SMA 辅助函数)使其运行,在 6.4 年内产生了 12 笔状态交易。但慢速交叉在 BTC 的状态转换中反复震荡:盈利因子 0.66,负期望值,42% 回撤,以及约 -30% 的实现收益记录被未平仓头寸的 MTM 所掩盖,使标题数字虚高至 -1.4%。分析师在优化前放弃了它,认为它既无优势又过于稀疏(约 2 笔/年),无法验证——单一资产宏观交叉根本无法产生足够的状态周期来提取或检验优势。

假设

在 BTCUSDT.BINANCE 上的单一资产宏观趋势状态策略,使用经典的 50-日 / 200-日 移动平均交叉——这是金融文献中记录最多且最简单的宏观状态分类器之一。LONG:当 50d_MA > 200d_MA 且 AND 价差正在扩大时(确认的牛市状态);SHORT:当 50d_MA < 200d_MA 且 AND 价差在下方扩大时(确认的熊市状态);FLAT:在状态转换期间(无确认的交叉事件)。这是 Antonacci 2014「双重动量」框架的 SINGLE-ASSET 应用,简化为仅时间序列。持仓期为 MONTHS(在 BTC 中,状态周期持续 3-12 个月),填补 SEVERELY UNDER-REPRESENTED macro_1w_plus 周期配额(当前为 0.5%——在 1135 实验中几乎未被触及)。该机制来自我正在研发中的 TSM 系列(基于 t 统计量的快速移动信号,周度换手)的 FUNDAMENTALLY DIFFERENT,以及 RSI MR 系列(极端反转的短周期信号):宏观状态捕获了 BTC 日线数据中可用的最慢移动的趋势持续性。单一资产范围意味着不存在多资产翻译难题。BTCUSDT.BINANCE 1D 位于系统的明确安全列表上。有助于方向配额(90.0% 仅多头——增加多头/空头/持平头寸)。填补宏观周期配额(0.5% 与对较慢周期策略以平衡 48.8% mid_long_4h_12h 集中度的隐含需求相比)。在同一工具上,TSM(周)+ RSI MR(日)+ MACRO REGIME(月)的组合创建了一个多周期策略堆叠。

迭代-2:针对 Layer-2 TypeError(_sma() 接受 2 个位置参数,但实际给出了 3 个)的最小修复。根本原因与已知的代理绑定陷阱相同:_sma 被声明为 @staticmethod,但 Layer-2 的 _StrategyProxy 会将类可调用对象重新绑定到替身实例上,从而丢弃 staticmethod 描述符,并将代理实例作为注入的第一个位置参数传入,因此这个 2 参数辅助函数实际收到 3 个参数。修复方法是将 _sma 移至模块级自由函数(不会绑定到实例,因此不会注入 self),并更新两个调用点;模块函数完全绕过描述符协议。其他内容均未更改:导入保持干净(Layer 1 通过),合成测试框架所覆盖的 50/200 价差 / regime 确认 / 入场 / 交叉退出 / 仓位规模逻辑与原先逐字节一致。交易场所仍为 BINANCE USD-M 期货(多空交易需要保证金),杠杆为 1.0(没有放大,因此不会触发 leverage_set_but_unused 门槛)。该策略以单资产且适合迁移的 regime 分类器,填补了代表不足的数月持仓宏观周期空白。

BTC 50/200 宏观状态多空策略具有负的实现期望值,且过于稀疏,无法验证。profit_factor 0.664,期望值 -$2,513/笔,夏普 -0.066,max_drawdown 42%,其中 -1.4% 标题数字具有误导性:end_unrealized_pct 28.7 超过 total_return,因此已实现平仓记录约为 -30%(标题数字是当前上涨 28.7% 的未平仓头寸按市值计价的数值)。在单一资产上,50/200 交叉出现反复震荡(虚假黄金/死亡交叉),在 6 年中有 3 年亏损(2021 -36%、2022 -13%、2025 -28%),其中 avg_loss > avg_win,峰度 397。该策略是一个月度持仓的宏观状态策略,在 6.4 年内仅触发 12 笔交易(约 2/年),数量太少,无法支持前向走步(3 个窗口每个约 4 笔交易,样本外约 0 笔)或任何有意义的优化。代码正确,且交易行为与设计完全一致,因此这是一个被反驳的前提加上结构性稀疏性,而非代码错误——迭代无法提供帮助,优化 12 笔净亏损交易将拟合噪声。不值得花 2 小时。FAILURE PATTERN:在 BTC 日线上,单一资产宏观 50/200 MA-交叉多空策略产生稀疏(约 2/年)、净亏损的实现记录(PF 0.66,负期望值,约 -30% 的实现收益被未平仓头寸的 MTM 所掩盖),并出现 42% 回撤——慢速交叉在单一资产的多/空转换中反复震荡,而月度持仓的宏观状态策略无法生成足够的交易来验证;经典的趋势交叉状态信号需要广泛的横截面或许多状态周期来提取优势,而单一 BTC 工具在 6 年内既未提供广泛的横截面,也未提供多个状态周期。

实现

在 BTCUSDT.BINANCE USD-M 期货上进行多空 BTC 宏观趋势状态交易,采用 DAILY 根 K 线,纯粹使用 OHLCV 单一数据源。采用 50/200 日 SMA 交叉,并以价差扩大确认:当 50d > 200d 且标准化价差比 5 根 K 线之前更宽时 LONG(确认牛市),当 50d < 200d 且价差在下行方向扩大时 SHORT(确认熊市),在未经确认的状态转换期间 FLAT。顺应整个数月状态周期,在出现反向交叉或触发 25% 灾难性止损时退出。信号是连续的标准化 50/200 价差(每根 K 线都会变化);离散的状态方向决定是否入场。杠杆 1.0。

验证结果

验证失败(Layer 2 — 合成情景): 使用的参数:['fast_period', 'slow_period', 'min_notional', 'position_pct', 'stop_loss_pct', 'confirm_lookback'] 请检查 __init__ 是否通过 self.parameters.get() 设置了所有属性。 - steady_uptrend:TypeError:BtcDailyMacroTrendRegime50200CrossLS._sma() 接受 2 个位置参数,但实际给出了 3 个(K线时间戳:1735701960000) - steady_downtrend:TypeError:BtcDailyMacroTrendRegime50200CrossLS._sma() 接受 2 个位置参数,但实际给出了 3 个(K线时间戳:1735701960000) - flat_ranging:TypeError:BtcDailyMacroTrendRegime50200CrossLS._sma() 接受 2 个位置参数,但实际给出了 3 个(K线时间戳:1735701960000) - volatility_spike:TypeError:BtcDailyMacroTrendRegime50200CrossLS._sma() 接受 2 个位置参数,但实际给出了 3 个(K线时间戳:1735701960000) - zero_volume:TypeError:BtcDailyMacroTrendRegime50200CrossLS._sma() 接受 2 个位置参数,但实际给出了 3 个(K线时间戳:1735701960000) - price_gap:TypeError:BtcDailyMacroTrendRegime50200CrossLS._sma() 接受 2 个位置参数,但实际给出了 3 个(K线时间戳:1735701960000)

回测评审

夏普
-0.07
总收益率
-1.43%
最大回撤
42.02%
总交易数
12
胜率
41.7%
盈利因子
0.66

实现正确且交易符合规格:12 笔宏观 regime 入场(6 笔多头 / 6 笔空头),丢弃 0 笔,持仓数月——没有代码错误;填补宏观周期缺口

表面成绩掩盖了巨额实际亏损:end_unrealized_pct 28.7 超过 total_return -1.4,因此已平仓交易的实际回报约为 -30%(-1.4% 是未平仓头寸按市值计价的结果)

没有实际优势:profit_factor 0.664,期望收益为 -$2,513/笔交易,夏普比率 -0.066(CI -1.17 至 0.53),欧米伽比率 0.90,max_drawdown 42%;avg_loss > avg_win,峰度 397

交易过于稀疏,无法优化/验证:6.4 年间仅有 12 笔交易(约每年 2 笔,平均持仓 154 天)——滚动前向验证窗口约有 4 笔交易,留出集约有 0 笔

50/200 均线交叉在 BTC 上反复产生假信号:6 年中有 3 年亏损(2021 -36%,2022 -13%,2025 -28%),largest_loss -$24,940

结局总结

缓慢的 50/200 MA 均线交叉 regime 信号需要广泛的横截面或多个 regime 周期才能提取优势——单一 BTC 工具在 6 年内两者皆不具备——因此它会因假金叉/死叉而反复遭遇亏损,产生净亏损且每年约 2 笔交易的记录,并被未平仓头寸按市值计价的结果掩盖,结构上无法验证。

分析师在回测审查时放弃了该策略,结论是前提被证伪并存在结构性稀疏问题,而非代码错误——代码完全按设计进行交易,但 50/200 均线交叉在单一资产的牛熊转换中反复产生假信号(平均亏损大于平均盈利,实际期望收益为负),且每年约 2 笔交易,远不足以支持滚动前向验证(3 个窗口各约有 4 笔交易)或留出集验证,因此优化只会拟合噪声。

一种在 BTCUSDT 日线永续合约(纯 OHLCV)上的多空单一资产宏观趋势状态策略,使用经典的 50/200-日 SMA 交叉——在确认的扩大牛市区间做多(50日 > 200日),在确认的扩大熊市区间做空,在转换期间持平,并以灾难性的 25% 止损持有整个多月状态周期,以填补代表性不足的宏观周期。

在 6.4 年内,它仅执行了 12 笔交易(6 笔多头,6 笔空头,约 2/年,平均持仓约 154 天,无任何被剔除),且没有实现优势:盈利因子 0.664,期望值 -$2,513/笔,夏普 -0.066(CI -1.17 至 0.53),42% 最大回撤,峰度 397;-1.4% 标题数字具有误导性,因为期末未实现 28.7% 超过了它,使已实现平仓回报约为 -30%,并且它在 6 年中有 3 年亏损(2021 -36%、2022 -13%、2025 -28%)。

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