策略
US 宏观数据发布时段重新定价延续策略:针对 AAVEUSDT.BINANCE 永续合约的多空 15分钟日内漂移,从 08:30 ET 数据时段至 US 收盘(DST 感知型时间门控、自选择波动率触发器、3 参数)
结局: 已放弃
AaveMacroReleaseHourDriftLS
结局总结
AaveMacroReleaseHourDriftLS 在 AAVEUSDT.BINANCE 15分钟 K 线上检验了一个以时钟为锚的信息到达论点:当 08:30-08:45 ET 宏观数据发布 K 线的波动幅度较大时,沿其走势方向交易,并持有至 16:00 ET US 收盘。经过三轮迭代,代码完全按假设所述运行——在 US 个工作日进行 179 笔 DST 感知型入场,其中 96 笔做多、83 笔做空,平均持仓 4小时42分钟,敞口为 1.64%——但六年测算结果与预测方向相反:总收益 -17.19%,夏普比率 -0.713,盈利因子 0.650,单笔平均收益 -0.237%,而手续费门槛为 +0.15%。问题不在成本、双腿不对称或单一市场状态;在平静、正常和承压波动状态下均出现亏损,且在 7 年中的 5 年亏损,胜率为 38%,盈亏比约为 1.06,表明发布时段的走势会在该交易时段内回撤。分析师在回测审查阶段便放弃该策略,没有继续投入 3 阶段的优化,并指出唯一可调参数已经全部扫过,在任何阈值或持有期限下都未发现漂移。
假设
一个在 AAVEUSDT.BINANCE USD-M 永续合约上运行的 LONG-SHORT、SINGLE-INSTRUMENT、PURE-OHLCV、INTRADAY 策略,使用 15-MINUTE K 线(目录已核实:2020-10-16 -> 2026-09-09,约 207,000 根 K 线,约 1,780 US 个工作日)。其机制是 NOT 价格形态动量,而非 NOT 均值回归反转:这是一个 CLOCK-ANCHORED INFORMATION-ARRIVAL 效应。几乎所有高影响力的预定 US 宏观数据发布(CPI、PPI、NFP、PCE、零售销售、初请失业金人数、GDP)都在美国/New_York时间 08:30 公布。加密货币永续合约是此时唯一具备深厚流动性的交易场所,会立即重新定价;较慢的资金(在 09:30 开盘的 US 交易台、现货-ETF 创建流、CTA/波动率目标再平衡、期权做市商对冲)会在随后数小时内到场,从而在公告后沿初始重新定价方向形成 DRIFT。该策略需要 NO 事件日历和 NO 新闻数据:它只观察 US 个工作日中跨越 08:30-08:45 ET 的单根 15分钟 K 线(通过 zoneinfo America/New_York -> 12:30-12:45 UTC(EDT)以及 13:30-13:45 UTC(EST)实现 DST 感知),并让 VOLATILITY-RELATIVE MAGNITUDE FILTER 自行筛选实际有数据发布的日期。若当天没有数据发布,08:30 K 线就和其他 K 线一样,触发条件不会启动。它有意同时填补三个投资组合空缺:方向 long_short(14.9%,而目标为 >=45%)、期限 short_1m_15m(9.5%),以及一种在该 74-of-767 策略库中此前使用 ZERO 的工具(AAVE)。它NOT复制任何仍有效的机制——逻辑中完全没有趋势/MA/RSI/突破指标;唯一的“信号”是时间戳加上经波动率归一化的走势幅度。
迭代 3 仅修复了 [critical] QA 缺陷,未做其他改动。陈旧的持仓锚点已不复存在:should_exit() 现在从缓存读取实时持仓.positions_open(),并据此推导出入场 ET 序号(来自 position.ts_opened)与已持仓 K 线数(已用秒数 / _bar_interval_secs),仅在 NO 中持有可变的跨 K 线状态。此前 _entry_ordinal/_bars_held 仅在 should_exit() 返回 True 时才会被清除,因此当一根 K 线上出现括号单止损/TP 成交时(基础模板在该 K 线账本已平仓时不会调用 should_exit()),会留下一个陈旧的序号,导致下一个发布日入仓在仅经过 15 分钟 K 线后就被平仓——这正是 QA 所指出的 4h43m 对比约 7h15m 的持仓时长差距。由持仓推导的锚点从结构上也解决了关于状态在平仓/on_stop/热重启后存续的 [warning]。对于薄样本的 [warning],将 entry_z 的上限从 4.0 下调至 2.5(上下界在 _param_bounds 中以同样方式声明),使优化器无法将约 179 笔交易的满样本触发条件削减到低于可测量性的水平。时钟门控、z 分数信号、导入与仓位规模均未改动,因此第 1-3 层仍为绿色。关于建议 [edge_concern] 的诚实说明:开发者在满样本上进行了试运行,测得 post-08:30-ET 漂移,覆盖每个 |z| 阈值 AND 每个持仓时长(包括持有至 -16:00-ET,即本次修复所恢复的情形),在所有位置上都与零无统计差异(|t| <= 1.4),在该配置下为负——因此该修复使回测能够忠实检验假设,但我不预期它会产生正期望收益。
premise_falsified,样本充足且可靠。策略正确实现了该假设——179 笔入场,均在 US 个工作日的 08:30-08:45 ET K 线上发生,处理了 DST,并持有至 16:00 ET 收盘——但测得的公告后漂移为负,而非正:avg_trade_return_pct -0.237%,对比 +0.15% USD-M 手续费门槛;PF 0.650,夏普比率 -0.713,期望收益为每笔 -$96.26,总计 -17.19%。这不是手续费问题(手续费仅占毛收益的 10.18%),不是双腿不对称错误(多头胜率 32.3% / 空头胜率 44.6%,两者均低于盈亏平衡水平),也不是特定市场状态所致(在平静、正常和承压三分位组均为负值,且在 7 个日历年中的 5 年为负值)。承压三分位组——宏观数据发布日所在的组别——为负值,因此信息到达前提恰在理论上应最强的地方失效;38% 的胜率和约 1.06 的盈亏比表明,08:30 重新定价会在 US 交易时段内均值回归,而非继续漂移。优化无济于事:唯一可调参数是 entry_z 和 vol_lookback;开发者自己的全样本试运行已扫过 |z| 0.75-4.0 以及截至 16:00 ET 的所有持有期限,任何地方都没有发现漂移(|t| <= 1.4,每笔 -0.210%)。QA 预先登记的边际担忧得到证实,而非被推翻。并非 revise_hypothesis:该机制已被直接检验,在 6 年样本上的方向错误,而且简单反向交易也不会轻易获利——反转策略需要覆盖同样的 0.15% 往返成本,以及在中型市值山寨币永续合约上按 20% 的权益比例分笔交易时约 $5.7k 的建模冲击成本;因此,任何重新构思都需要比波动率 z 分数强得多的条件变量,以及流动性更好的工具。
实现
在 AAVEUSDT.BINANCE USD-M 永续合约上做多/做空盘中延续策略,使用 15 分钟 K 线。每个 US 交易日,策略仅观察收盘于 08:45 ET 的 15 分钟 K 线(即 08:30 ET 宏观数据发布时段;通过预先计算的 US 转换表(以二分查找解析)实现 DST 感知,因此在 EDT 中为 12:45 UTC,在 EST 中为 13:45 UTC)。信号为该 K 线的对数收益率除以滞后已实现波动率(192 K 线 sigma,不含当前 K 线),并在每根 K 线上连续计算;时钟门控加上 |z| >= entry_z(2.0)会自动筛选出发布确实对永续合约重新定价的交易日。入仓方向为重新定价方向,仓位规模由权益名义上限的 25% 与以 2.5% 止损为基准的单笔权益风险预算的 0.5% 中较紧者决定。出场:交易所托管的括号单(2.5% 止损 / 5% 止盈),加上在 16:00 ET US 现金收盘的时间退出,绝不持仓过夜。
验证结果
将 risk_per_trade 降至约 0.002-0.003,使每笔仓位约占权益的 5-10%;在完整回测中重新检查 impact_cost_pct。
position_size() 在每个 15分钟分笔交易中投入相当于权益 20% 的名义仓位(风险 0.5%/止损 2.5% 约束生效);建模冲击成本约为每笔 $44(约占名义本金的 0.22%),而手续费为 $20,capacity_usd $95,986——仓位已达到建模容量,没有余量。
可通过 src/data/market_calendar.py 排除 XNYS 节假日。
工作日门控仅按星期几判断;未排除 US 市场假日,因此假日上的高 |z| 08:30-ET bar 纯粹是加密货币波动事件,并非所述机制。波动率过滤器可以缓解,但不能完全消除这一情况。
如果回测落在约 ~150 笔交易以下,则将子样本拆分视为描述性的。
完整历史中约有 179 笔入场(约占 US 个工作日的 10%),接近区分边际收益与噪声所需的下限;优化器还可能进一步减少交易数量,使其逼近 entry_z 2.5 上限。
无需更改。
对 min_bars_required() 的静态分析“base_shadow”属于 FALSE POSITIVE——基类方法文档注明“按需覆盖”。
沙盒结果为负(total_return -1.33%,夏普比率 -0.89,15 笔仓位上为 PF 0.99),且在三个波动率三分位上全部亏损,在压力第三分位上最差(-1.16%,夏普比率 -2.19)——这与信息到达驱动的漂移应有的表现相反,因为发布日 ARE 那些高波动率的日子。手续费仅占毛收益的 14.5%,因此成本并非约束,毛漂移才是约束。开发者的满样本试运行亦印证:在 0.75-4.0 中的任何 |z| 下,以及直至 16:00 ET 收盘的任何持仓时长上,均无前向漂移(|t| <= 1.4),n=179 时为 -0.210%/笔。约 6 年内仅有约 179 笔交易。回测审查时的第一项检查:多空腿对称性、仅在最高 |z| 子集上的漂移,以及建模冲击(impact_cost_pct 102%,capacity_usd ~$96k,在 20% 权益裁剪下)。
回测评审
- 夏普
- -0.71
- 总收益率
- -17.19%
- 最大回撤
- 18.93%
- 总交易数
- 179
- 胜率
- 38.0%
- 盈利因子
- 0.65
实现干净,行为符合假设:US 个工作日内的 179 笔入场都在 08:30-08:45 ET 收盘 K 线上触发,具备 DST 感知能力;做多 96 / 做空 83(近乎对称),平均持仓 4小时42分钟至 US 收盘,敞口 1.64%——时钟门控、自选择波动率触发器以及持有至收盘都按设计正常工作。
样本足以形成判断:在 2155 天内有 179 笔交易,且 metrics_reliable=true,因此这是对该前提的测量结果,而非小样本偶然现象。
并非成本造成的假象:手续费仅占毛收益的 10.18%。
假设中的漂移并未以 WRONG 方向出现:avg_trade_return_pct -0.237%(对比 +0.15% 门槛),PF 0.650,夏普比率 -0.713,期望收益为每笔 -$96.26,总计 -17.19%。
多空两条腿各自均失败——多头胜率 32.3%,空头胜率 44.6%——因此不是双腿不对称错误。
在 7 个日历年中的 5 年以及全部三个波动率三分位组(包括承压组 -2.3%)均为负值;发布日正是该组别的主要分布日期。
胜率为 38.0%,盈亏比约为 1.06:08:30 走势会在该交易时段内均值回归,而非继续漂移。
开发者自己的试运行已扫过 |z| 0.75-4.0 以及截至 16:00 ET 的所有持有期限:任何地方都没有漂移(|t| <= 1.4)。
容量:在中型市值山寨币永续合约上,按 avg_position_pct 20.7% 仓位建模的冲击成本为 $5,709;水下 2129 天,tail_ratio 0.0。
分析
回测关卡: - 指标不可靠:不一致:夏普比率 0.22 与 total_return -65.02% 的符号不一致——夏普比率根据 mtm_equity_curve 序列计算,而收益来自权益曲线。应以权益曲线为准。
迭代历史
验证失败(第 4 层 — QA 复核)[类别=code_defect]: - [edge_concern] 开发者的全样本空转显示,post-08:30-ET 延续漂移在每个 |z| 阈值与持有期下均统计为零(|t| <= 1.4),且在所述配置(-0.210%/笔,t=-0.67,n=179)下为负;先前回测相符(avg_trade_return_pct -0.237%,PF 0.58,佣金仅占毛利约 11%,即毛利漂移才是问题所在)。该沙箱在全部三个波动率三分位组中均亏损。仅作提示 — 非判定依据。 - [严重] 仓位间的持仓状态残留陈旧。`_entry_ordinal`/`_bars_held` 在 should_exit() 返回 True 时重置 ONLY,但 `use_bracket_orders: true`(2.5% 止损 / 5% TP)意味着仓位经常在 K 根内由场控子腿平仓 — 在该 K 根上,基础模板观察到 `position is None`,且从不调用 should_exit()。下一释放日入场随即在其第 FIRST 根 K 线上触发 should_exit(),此时 `_et_ordinal != _entry_ordinal` 已为真(该闸门每个交易日最多触发一次),在单根 15m K 线后即平仓,而非持有至 16:00 ET。沙箱 avg_holding_period 为 4h43m,对比预期约 7h15m,与该触发一致。(行 197) — 修复方案:从实时持仓派生锚点(`position.ts_opened` → ET 序号,持有 K 根数 =(K 线时间戳 − ts_opened)/K 线间隔),且不在 K 根间保留可变状态,或每当 on_bar 观察到空仓簿时清除该状态。 - [警告] 同一状态永不通过 on_stop/平仓或热重启而被清除。(行 197) — 修复方案:由持仓派生的锚点即可消除该问题。 - [警告] 触发频率稀薄(15 笔交易 / 207 沙箱日;179,跨越 2,155 日)— 若使用更高的优化 entry_z,易使样本量降至难以衡量以下。(行 57) — 修复方案:将 entry_z 设为下限,使预期交易数保持在约 100 以上。
结局总结
仅靠时钟门控和波动率 z 分数不足以作为条件变量来隔离宏观数据发布时的信息到达:该永续合约在 08:30 ET 重新定价后会在 US 交易时段内均值回归,而非继续漂移,因此任何重新构思都需要真正的事件/意外信息信号以及流动性更好的工具。
回测审查关卡在优化前给出 `abandon`,理由是 premise_falsified:实现完全符合假设(179 笔入场均发生在 08:30-08:45 ET K 线上,具备 DST 感知能力,并持有至收盘),但在充足且可靠的样本上测得的漂移方向错误。该结果被排除为手续费造成的假象(手续费仅占毛收益的 10.18%),也不是双腿不对称错误(多头胜率 32.3%,空头胜率 44.6%,两者均低于盈亏平衡水平);开发者自己对 |z| 0.75-4.0 的扫描覆盖了截至 16:00 ET 的所有持有期限,任何地方都没有发现漂移(|t| <= 1.4),因此优化也无法挽救该策略。
该策略押注于 08:30-08:45 ET US 宏观数据发布时段内即时的 AAVEUSDT 永续合约重新定价,会沿同一方向持续漂移,直至 16:00 ET US 现金市场收盘;无论做多还是做空,均由相对于波动率的幅度 z 分数自行筛选发布日,且无需事件日历。
在 2,155 天和 206,852 根 15分钟 K 线上,共进行了 179 笔交易(多头 96 / 空头 83,平均持仓 4小时42分钟),总收益为 -17.19%,夏普比率 -0.713,盈利因子 0.650,胜率 38.0%,期望收益为每笔 -$96.26。单笔平均收益为名义本金的 -0.237%,低于 +0.15% USD-M 可行性门槛;在 7 个日历年中的 5 年以及全部三个波动率三分位组中均为负值,包括承压三分位组(-2.33%)。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。