策略
DIA周波动率归一化比例动量
结局: 已放弃
DiaWeeklyVolatilityNormalizedProportionalMomentum
结局总结
该策略尝试在 DIA 上运行每周比例动量策略,使用因果波动率归一化收益,并在最后交易日收盘时再平衡。经过 5 次迭代后,沙盒验证检测到违反执行合约的下一交易日成交。策略在绩效评估和后续审查前即被放弃,因此交易优势尚未评估。
假设
由 Research Lead 根据 Fernando F. Ferreira 等人的《动量策略的信息比率分析》推导:检验论文中的因果波动率归一化周对数收益移动平均,以该均值成比例确定带符号的敞口,并按周再平衡。使用 DIA.USEQ,即可交易的道琼斯工业平均指数 ETF 代理标的,而不要声称复现论文中的 1896–2013 指数实验。使用已完成的日交易时段柱线构造周观测值,并采用每个日历周最后一个交易所交易日的收盘价。来源规定按周再平衡,并探索了 1–43 周的形成回看窗口,但提供的文本未说明归一化回看窗口 p,也未给出可部署的资金规模。研究设定为基准 20 周形成窗口、20 周归一化窗口、相对于权益的比例仓位,以及保护性风险限额。在最后一个交易日收盘时执行;无需在下一交易日开盘成交。不要将事后识别的 BFAST 状态或拟合出的 180 周振荡用作交易信号。
来源包含一种可执行机制,而非多个独立策略。对短期和长期回看窗口的解释,是对同一机制依赖参数的不同解读。DIA 保留了来源中的道指敞口,并明确采用 ETF 进行调整。多空执行用于解决投资组合 80.7% 的仅做多集中问题,并避免再提出一个 Binance 期货方案。提供的 corpus_concentration 为空,因此无法确定 DIA 近期的使用占比。忠于来源优先于虚构跨交易场所或期权交易腿来满足配额。
verification_loop:验证失败(层级 3 — 沙盒回测):execution_timing_mismatch:DIA 最后交易日收盘 decision_ns=1560542400000000000,actual_fill_ns=1560801600000000000;需要工程审查:runner.py 在 engine.add_venue 之前安装 USEQ 100ms 交易场所 LatencyModel,而 FactoryStrategyConfig 未提供同收盘执行策略。请在 runner 中实现明确的研究合约执行策略,将其传递至沙盒和优化流程,并在重试前核实实际成交时间戳和收盘价。保留价差、冲击和保护性止损行为。不要更改信号,也不要接受下一交易日成交。 使用的柱线类型:DIA.USEQ-1-DAY-LAST-EXTERNAL,已处理柱线数:0 确保您的策略在给定数据和参数下产生交易。
实现
DIA 周多空比例动量策略,使用以前一周波动率归一化的周对数收益、滚动形成均值、按日历锚定的每周再平衡、按权益比例配置的整股仓位和保护性止损。执行仍因 runner 的延迟成交而受阻。
保留先前实现的导入、信号、入场、仓位规模、再平衡和保护逻辑;仅更改类文档和执行不匹配诊断。检查确认 runner.py 在 engine.add_venue 之前安装交易场所延迟,并且 USEQ 将延迟配置为 100ms。不存在受支持的策略级同收盘覆盖选项。此提交并未修复层级 3,不得作为已完成的修复再次尝试。需要在策略之外进行工程更改。工作区为只读,因此无法进行该更改,也无法执行强制要求的 outbox 写入。未读取任何回测或期末考试数据。
验证结果
验证失败(层级 3 — 沙盒回测):execution_timing_mismatch:DIA 最后交易日收盘 decision_ns=1560542400000000000,actual_fill_ns=1560801600000000000;需要工程审查:runner.py 在 engine.add_venue 之前安装 USEQ 100ms 交易场所 LatencyModel,而 FactoryStrategyConfig 未提供同收盘执行策略。请在 runner 中实现明确的研究合约执行策略,将其传递至沙盒和优化流程,并在重试前核实实际成交时间戳和收盘价。保留价差、冲击和保护性止损行为。不要更改信号,也不要接受下一交易日成交。 使用的柱线类型:DIA.USEQ-1-DAY-LAST-EXTERNAL,已处理柱线数:0 确保您的策略在给定数据和参数下产生交易。
分析
优化前,请核对周信号时间戳与实际订单成交时间戳。通过受支持的执行路径实现指定的最后交易日收盘执行,并使用带日期的成交记录核实普通周五和因节假日缩短的交易周。不要把下一交易日成交重新标记为收盘成交。本次修正中保持 formation_weeks=20、normalization_weeks=20 和现有风险设置不变,然后重新运行基准。当前负面结果评判的是已实现的时序,并非来源论文或要求的收盘执行版本。
迭代历史
验证失败(层级 1 — 静态分析): - 禁止导入:src.data.market_calendar — 策略只允许导入框架基类和辅助工具(src.strategies.base_template、src.strategies.rolling_options_template、src.strategies.polymarket_series_template、src.strategies.helpers);采集器、数据库、回测引擎和注册表均不在沙盒范围内。(第 9 行)
验证失败(层级 3 — 沙盒回测):execution_timing_mismatch:DIA 最后交易日收盘 decision_ns=1560542400000000000,actual_fill_ns=1560801600000000000;runner 必须提供受支持的同收盘执行,基准策略才能评估该假设 使用的柱线类型:DIA.USEQ-1-DAY-LAST-EXTERNAL,已处理柱线数:0 确保您的策略在给定数据和参数下产生交易。
验证失败(层级 3 — 沙盒回测):execution_timing_mismatch:DIA 最后交易日收盘 decision_ns=1560542400000000000,actual_fill_ns=1560801600000000000;需要工程审查:src/backtesting/runner.py 在 engine.add_venue 之前应用交易场所级 LatencyModel;FactoryStrategyConfig 未提供同收盘执行覆盖选项。请在重试前为此研究合约提供受支持的 runner 执行策略;更改信号或接受下一交易日成交都会改变假设。 使用的柱线类型:DIA.USEQ-1-DAY-LAST-EXTERNAL,已处理柱线数:0 确保您的策略在给定数据和参数下产生交易。
结局总结
实现并传递明确的同收盘执行策略,核实成交时间戳和价格,并在重试前保留价差、冲击和保护性止损行为。
经过 5 次迭代后,验证在层级 3 失败,因为实际成交发生在下一交易日,而非要求的最后交易日收盘。失败结果指出,runner 的 USEQ 100ms 延迟模型和缺失的同收盘执行策略需要工程审查。
使用 DIA 交易:敞口方向由信号符号决定,大小与经因果波动率归一化的周对数收益均值成正比;每周最后一个交易所交易日收盘时再平衡。
未报告收益、夏普比率或交易次数指标;失败的沙盒报告显示已处理 0 根柱线。尚未进行回测审查、优化、分析师审查和风险审查。
分析
动量策略的信息比率分析
回测评审
- 夏普
- -0.16
- 总收益率
- -4.80%
- 最大回撤
- 5.48%
- 总交易数
- 186
- 胜率
- 19.9%
- 盈利因子
- 0.67
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。