外观
回测执行时间与调仓时间
在发布实盘模拟策略时,您会看到两个与时间相关的配置项:回测执行时间 和 调仓时间。理解这两个时间的含义和区别,对于确保策略实盘表现与回测结果的一致性至关重要。
一、概念定义
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 注意事项
修改调仓时间的风险
修改调仓时间后,未来的实盘信号将基于新的时间点计算。这意味着:
- 未来的调仓信号可能与回测历史信号存在差异
- 实盘收益曲线可能逐渐偏离回测收益曲线
- 偏差的大小取决于市场波动和时间差距
建议:除非有充分理由,否则保持调仓时间与回测执行时间一致。
如何选择回测执行时间
在创建策略时,建议将回测执行时间设置为您实际方便操作的时间。这样发布实盘后,调仓时间自然与回测一致,无需修改。