策略
SOL 日线月末月初做多策略
结局: 已放弃
SolDailyTurnOfMonthLong
结局总结
该策略通过在月末月初附近简单买入 SOL 来利用月末月初异常,是一条基于 DCA/指数再平衡资金流的清晰确定性规则。策略完全按规格实现,亮眼的 +653% 表现也随之出现——但这几乎全来自 2021 的 SOL 狂热行情(其中有两个 +60% 单日收益),此后在 2024、2025 和 2026 均亏损,滚动夏普比率从 +8 跌至 -6,且始终伴有 74.9% 的回撤和约 110% 的波动率。分析师在第二次迭代的回测审查关卡将其放弃,认定这是一种已衰减、无法与做多贝塔区分的季节效应,没有可优化空间,且留出集必然落入近期负收益市场状态,因此它从未进入优化或风险审查阶段。
假设
在 SOLUSDT 永续期货上运行的单品种纯做多日历效应策略,使用日线(1D)K 线。利用文献充分记载的“月末月初”(TOM)异常:机构和散户资金流集中在月界前后。在传统金融领域(Ariel 1987、Lakonishok-Smidt 1988),每月最后 4 个交易日加上次月前 3 天,因养老金缴款、工资分配和 401k 资金流时点等因素,贡献了月度股票收益中的不成比例份额。加密货币领域存在类似机制:每月 DCA 计划(Coinbase 定期买入、Binance Auto-Invest、Strike)、类似 Grayscale 的基金再平衡、每月山寨币指数再平衡(CoinShares、Bitwise 产品),以及散户“月初”钱包存款,都会在日历月界前后形成可预测的买盘压力。选择 SOL 是因为:(a) 通过 Phantom 钱包和 Solana meme 币生态,散户参与度很高;(b) 它是多数月末再平衡加密货币指数的重要成分;(c) 高贝塔意味着 TOM 效应比在 BTC 上更强;(d) SOL 在失败策略集合或当前策略管线中 NOT。策略完全确定:入场/出场仅由日历日位置触发,不使用指标、阈值或市场状态过滤器。这将参数数量降至最低,以对抗过拟合,并使验证保持快速。
第 -2 次迭代:针对 Layer-2 TypeError 的最小修复(_dt() 接受 1 个位置参数,但实际给了 2 个)。根因与未平仓量案例相同:datetime 辅助函数是 @staticmethod,但 Layer-2 的 _StrategyProxy 会将类可调用对象重新绑定到替身实例上,从而丢弃 staticmethod 描述符,并把代理实例作为注入的第一个位置参数传入,因此这个 1 参数的辅助函数实际收到 2 个参数并报错。修复是将 _dt 移出类,改为模块级函数(_tom_dt);模块函数不会绑定到实例,因此不会注入 self,且 _is_tom 现在直接调用 _tom_dt。其他内容未改:导入保持干净(Layer 1 通过),且测试框架所覆盖的日历/TOM 窗口/信号/入场/出场/仓位规模逻辑与之前逐字节相同,因此不会导致前序层级回归。交易场所和杠杆(BINANCE USD-M 期货、1.0)保持不变。
SOL 上的月末月初前提并无持续优势——它是做多 SOL 贝塔,捕捉了 2021 狂热行情(+1055%)和 2023(+141%),而近期已连续三年亏损(2024 -46.5%、2025 -34.1%、2026 -19.7%),滚动夏普比率从约 +8 降至约 -6。+653% 的亮眼表现是前期集中的 2021 假象(两个 +60% 单日收益、偏度 4.47、峰度 35),同时伴有 74.9% 的最大回撤和约 110% 的年化波动率。策略实现正确,因此这是前提失效,而非代码问题——作为仅有 2 个可调日窗口参数的纯日历规则,它没有可供优化的信号;优化只会把窗口重新拟合到 2021/2023 牛市,随后在近期(2026)留出集上失败。不要迭代:开发者没有需要修复的代码。也不值得花 2 小时优化。FAILURE PATTERN:确定性的日历效应(月末月初)策略,在高贝塔加密货币龙头上做多,收益序列完全集中于 2021 牛市,同时有 75% 的回撤和近期连续三年负收益——这种季节性异常与已衰减/反转的做多贝塔敞口无法区分,而纯日历规则没有可优化的信号来挽救它。
实现
在 SOLUSDT.BINANCE USD-M 期货上的月末月初纯做多日历策略,使用 1-DAY K 线,仅做 OHLCV。在月末月初窗口内入场 LONG(每月最后 4 个日历日加次月前 3 天),K 线离开该窗口时出场,并设置最大持仓安全上限和 12% 止损下限。由 K 线时间戳驱动的纯确定性日历触发;连续信号是价格-ROC 加窗口内代理量,用于检测信号冻结。杠杆 1.0。
验证结果
验证失败(Layer 2——合成场景): 使用的参数:['min_notional', 'position_pct', 'stop_loss_pct', 'exit_days_after', 'max_holding_days', 'entry_days_before'] 请检查 __init__ 是否设置了 self.parameters.get() 返回的所有属性。 - steady_uptrend: TypeError: SolDailyTurnOfMonthLong._dt() 接受 1 个位置参数,但实际给了 2 个(K 线时间戳:1735689660000) - steady_downtrend: TypeError: SolDailyTurnOfMonthLong._dt() 接受 1 个位置参数,但实际给了 2 个(K 线时间戳:1735689660000) - flat_ranging: TypeError: SolDailyTurnOfMonthLong._dt() 接受 1 个位置参数,但实际给了 2 个(K 线时间戳:1735689660000) - volatility_spike: TypeError: SolDailyTurnOfMonthLong._dt() 接受 1 个位置参数,但实际给了 2 个(K 线时间戳:1735689660000) - zero_volume: TypeError: SolDailyTurnOfMonthLong._dt() 接受 1 个位置参数,但实际给了 2 个(K 线时间戳:1735689660000) - price_gap: TypeError: SolDailyTurnOfMonthLong._dt() 接受 1 个位置参数,但实际给了 2 个(K 线时间戳:1735689660000)
回测评审
- 夏普
- 0.95
- 总收益率
- 653.79%
- 最大回撤
- 74.94%
- 总交易数
- 74
- 胜率
- 50.0%
- 盈利因子
- 1.15
实现正确且确定:74 次月初月末入场,剔除 0,全部做多——交易完全符合日历假设的规定(没有代码错误)
优势已消失/反转:年度收益 +1055%(2021)和 +141%(2023)把全部 +653% 集中在前期,随后连续三年 NEGATIVE——2024 -46.5%、2025 -34.1%、2026 -19.7%;滚动夏普比率从约 +8 跌至约 -6
标题是 2021 SOL-狂热产物,不是 TOM 边缘:两个 +60% 单日 (一月/二月 2021),return_skew 4.47,峰度 35,profit_factor 仅 1.15 (薄),win_rate 0.50
风险不可接受:max_drawdown 74.9%(CI,最高至 88.8%)、annualized_volatility 110%、downside_deviation 51%、avg_position_pct 约 101%(全权益仓位)、max_drawdown_duration 699 天
没有可优化空间:纯按月内日期运行的日历规则仅有 2 个可调窗口参数——优化器无法凭空从已衰减的季节效应中创造优势,只会重新拟合到 2021/2023 牛市
留出集落在近期负收益市场状态(2026 -19.7%),因此优化后的验证几乎必然会失败;样本也很少(74 笔交易 / 约 13/年)
结局总结
高贝塔加密货币龙头上的确定性日历异常,可能伪装成策略优势,实则是做多贝塔敞口——一项集中于 2021、亮眼表现为 +653% 且回撤达 75%、近期连续三年负收益的策略,反映的是已衰减/反转的季节效应;效应消失后,纯日历规则便没有可供优化的信号。
回测审查分析师给出了“放弃”的结论:策略实现正确,因此这是前提失效——高贝塔龙头上的月末月初效应,与做多 SOL 贝塔无法区分;后者捕捉了 2021 狂热行情,此后已衰减/反转。亮眼表现是 2021 假象,同时伴有 75% 的回撤;纯粹的 2 参数日历规则没有可优化的信号(优化只会把窗口重新拟合到 2021/2023 牛市,并在近期负收益的留出集上失败)。
在 SOLUSDT 日线币安期货上运行的纯做多、确定性月末月初日历策略(1.0x 杠杆、0.95 仓位)——每月最后 4 个日历日以及次月前 3 天买入 SOL,离开该窗口时平仓(设有 12% 止损和 12 天安全上限)——旨在捕捉月度 DCA/指数再平衡带来的买盘压力,不使用指标或过滤条件。
在 74 笔交易中,它录得了 +653.8% 标题表现,夏普比率 0.95,盈亏比 1.15,胜率 50%,但收益集中于前期——2021(+1055%)和 2023(+141%)——随后连续三年亏损(2024 -46.5%,2025 -34.1%,2026 -19.7%),滚动夏普比率从约 +8 崩落至约 -6;风险极端——最大回撤 74.9%(CI 至 88.8%),年化波动率约 110%,全仓位配置,偏度 4.47,峰度 35。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。