回测执行时间与调仓时间
在发布实盘模拟策略时,您会看到两个与时间相关的配置项:
回测执行时间
和
调仓时间
。理解这两个时间的含义和区别,对于确保策略实盘表现与回测结果的一致性至关重要。
一、概念定义
1.1 回测执行时间
回测执行时间
是回测引擎在跑历史数据时使用的时间点。
回测引擎会在每个历史交易日的该时刻,获取对应的价格数据来计算动量排名、判断是否需要调仓、模拟成交。
这个时间直接决定了回测的收益曲线结果。
策略发布后不可修改
,因为修改它意味着整个历史回测结果需要重新计算。
示例
:
回测执行时间设为 14:30:00
每个历史交易日:
14:30 → 获取该时刻的价格数据
→ 计算各ETF的动量排名
→ 判断是否触发调仓信号
→ 以该时刻价格模拟成交
1.2 调仓时间
调仓时间
(也叫实盘执行时间)是策略在实盘模拟阶段,系统每天实际执行策略检查和推送通知的时间。
系统会在该时间点触发定时任务,获取最新的市场数据,计算动量排名并判断是否需要调仓。
如果产生了调仓信号,会通过微信公众号等渠道推送通知给用户。
原则上必须和回测执行时间保持一致,否则会导致收益曲线偏离
,但是因为实盘模拟中,无法做到15:00之后再成交,所以可以设置提前的调仓时间生成信号并成交。
示例
:
调仓时间设为 14:50:00
每个交易日:
14:50 → 系统自动触发策略计算
→ 获取最新实时价格
→ 计算动量排名、检查调仓条件
→ 如有信号 → 推送微信通知给用户
→ 用户根据通知执行交易
二、核心区别对比
对比维度
回测执行时间
调仓时间
作用阶段
历史回测
实盘模拟
决定什么
回测收益曲线、历史信号
每日实际策略触发时间
使用的数据
历史价格数据
实时市场数据
修改影响
需要重新回测
仅影响未来的信号推送时间
三、为什么两个时间需要保持一致或者接近?
3.1 价格一致性
回测时使用的是某个特定时刻的价格来计算动量排名。如果实盘的调仓时间与回测时间差距太大,两个时刻的价格可能存在显著差异,导致:
动量排名不同
:不同时刻各ETF的涨跌幅可能发生变化,排名可能完全不同。
买卖信号不同
:回测显示应该买入A,但实盘在另一个时间点可能认为应该买入B。
收益曲线偏离
:实盘表现与回测结果产生较大偏差,失去参考意义。
3.2 价格差异示例
假设某ETF在一个交易日的分时走势:
13:00 价格: 3.480元 动量排名: 第3名
14:00 价格: 3.510元 动量排名: 第2名
14:30 价格: 3.500元 动量排名: 第1名 ← 回测执行时间(触发买入)
14:50 价格: 3.505元 动量排名: 第1名 ← 调仓时间(仍然排第1,信号一致 ✅)
15:00 价格: 3.502元 动量排名: 第1名
如果回测执行时间是 14:30,调仓时间设为 14:50:
→ 动量排名一致(第1名),买卖信号一致 ✅
→ 价格差异仅 0.005元(0.1%),影响极小 ✅
如果回测执行时间是 14:30,调仓时间设为 10:00:
→ 动量排名可能完全不同 ❌
→ 价格差异可能很大 ❌
→ 实盘信号与回测信号脱节 ❌
3.3 30分钟限制的原因
平台限制调仓时间必须在回测执行时间的
前后30分钟
以内(合计1小时范围),原因如下:
动量排名稳定性
:在30分钟的时间窗口内,市场波动对动量排名的影响有限,大部分情况下排名不会发生变化。
价格偏差可控
:30分钟内的价格变动幅度通常较小(一般在0.1%-0.3%以内),对策略收益的影响可以接受。
兼顾灵活性
:给用户提供一定的调整空间,比如回测用14:30,实盘可以选14:00-15:00之间的任意时间。
四、最佳实践建议
4.1 推荐配置
场景1:稳健型(推荐)
回测执行时间: 14:30:00
调仓时间: 14:30:00(与回测时间一致)
→ 实盘与回测完全一致,偏差最小
场景2:灵活型
回测执行时间: 14:30:00
调仓时间: 14:29:00(提前1分钟)
→ 错过调仓高峰期,获得更好的成交价格
场景3:提前型
回测执行时间: 15:00:00
调仓时间: 14:50:00(提前10分钟)
→ 15点无法成交,提前获取信号,有更多时间执行交易
4.2 注意事项
修改调仓时间的风险
修改调仓时间后,未来的实盘信号将基于新的时间点计算。这意味着:
未来的调仓信号可能与回测历史信号存在差异
实盘收益曲线可能逐渐偏离回测收益曲线
偏差的大小取决于市场波动和时间差距
建议:除非有充分理由,否则保持调仓时间与回测执行时间一致。
如何选择回测执行时间
在创建策略时,建议将回测执行时间设置为您实际方便操作的时间。这样发布实盘后,调仓时间自然与回测一致,无需修改。