回测即使使用真实公告与真实价格,也可能让策略提前知道当时不可能知道的信息。 问题往往出在时钟或数据版本上,甚至早于任何业绩计算。
这篇读懂市场反应课程讨论如何重建新闻决策,避免前视偏差(look-ahead bias):把后来才出现的信息用于更早的决策。新闻与技术交易比较介绍了两种方法。本文的“新闻交易”指对公告或催化事件作出反应,并非并购套利等机构事件驱动策略。
保留当时的发布版本
今天下载的数值可能不同于首次发布值。美国劳工统计局说明了纳入后续报告及其他更新的修订过程。修订数据可能适合研究经济,却不一定是交易者在原始发布时能获得的信息。
圣路易斯联储的 ALFRED 说明介绍了数据历史版本,即与不同日期对应的 vintage。实时期间文档区分今天所知与过去某段时期所知的信息。这些按日期保存的记录,不能证明你的数据源在某一毫秒收到了消息;这需要另一类证据。
看一个原创假设例子:虚构经济指标首次公布为 3.2%,发布前保存的预测为 3.0%。测试将其分类为比预测高 +0.2 个百分点。若把后来修订的 2.9% 填回原来的记录,偏差就变成 −0.1 个百分点。这会因泄漏后来的信息而逆转分类,并不是修正交易者当时已知的事实。
也要保留预测的来源、采集时间和定义。“超预期”相对于保存的基准而言,不自动代表对代币有利,更不是价格方向预测。新闻标题被编辑后,应保存为新版本,而非悄悄覆盖原文。
区分发布、接收与行动时点
继续使用一个虚构交易日、一种以 USD 报价的虚构代币,以及一家虚构现货交易所。仅为说明时序,假设预先声明的测试规则在首次公布值严格大于已保存预测时买入两个代币。这是教学规则,不是经济判断建议。假设下列时钟均已同步为 UTC。
| UTC 时间 | 事件 |
|---|---|
| 12:00:00.000 | 数据正式发布 |
| 12:00:02.000 | 采集端收到消息 |
| 12:00:02.100 | 决策完成 |
| 12:00:02.300 | 订单到达交易所 |
假设延迟包括 2.000 秒传输、0.100 秒处理、0.200 秒订单路由:从发布到订单到达共 2.300 秒。历史日历记录了发布时刻,并不意味着回测可以把这笔订单放到发布瞬间。
实际研究中,应记录时钟偏移、时区换算、时间戳精度,以及字段代表发布、接收还是后续更新。缺少接收日志时,使用明确的延迟情景并说明限制。没有证据不等于没有延迟。
使用订单到达后才符合条件的价格
假设发布前的 11:59:59.900,最佳卖价为 100.00 USD。在模型中的到达时刻 12:00:02.300,假设存在订单可接触到的 100.60 卖价,数量为五个代币,并假定两币买单立即按此价格全部成交。这些人为设定的撮合条件用于简化计算;显示的报价本身并不保证真实成交。
模拟入场支出为 2 × 100.60 = 201.20 USD,未计手续费。套用早先的 100.00 报价会记为 200.00,从而低估入场成本 1.20 USD。旧报价不能支持这次成交。真实订单之后也可能成交在 100.00,但需要另有时间上合格的执行证据。
执行模型应包含买卖价差、可用数量和手续费。如果模拟成交价已体现某项价差或滑点,就不要再次扣除同一成本。流动性课程区分参考价格与可成交规模。本练习只比较入场成本,不包含退出、收益率或盈利能力声明。
把技术确认放到同一时间线上
如果规则还要求一根完整的一分钟 K 线,覆盖 12:00 至 12:01 UTC 之前,决策就不能在 12:00:02.100 完成。必须等待区间结束,并收到完整数据,随后才是处理与订单路由。
把决策推迟,却保留旧的 100.60 成交价,仍然重复了时间错误,除非有新的合格报价作支撑。同理,K 线标记为 12:00,并不意味着最终收盘价在 12:00 已经可用。参阅周期课程。
Backtrader 的执行模型文档展示了一种约定:根据正在检查的 K 线生成的标准市价单,使用下一根 K 线的开盘价。这是模拟器假设,并非实盘订单能在那里成交的证明。应核对引擎设置与数据粒度,而不是假定“下一根 K 线”解决了所有延迟和流动性问题。
看赢家之前先固定实验
比较结果之前,先写明事件筛选、超预期定义、技术条件、延迟、仓位、退出逻辑和成本。纯事件规则与需要技术确认的规则是两个不同实验,不能借用对方更早的入场价。
使用预先定义的事件清单,而非只保留随后出现大幅波动的发布。保存被排除的事件及理由,包括数据缺失或市场无法交易。在开发期拟定阈值,再将其固定用于后续评估期。合理的叙事与整齐的时间线,仍不能证明交易优势。
接收较慢或时间不确定时,应测试事先说明的替代情景,而不是挑选历史结果最好的延迟。这是在分析假设的敏感性,不是在重建没有记录的成交。
让每个决策都能被重建
对每个候选事件保存:
- 原始发布内容、版本和发布时间戳。
- 发布前的预测快照与准确比较规则。
- 接收时间,以及全部必要输入中最晚的可用时间。
- 决策和订单到达时间,并明确延迟假设。
- 时间上合格的报价或成交证据、数量、手续费,以及最终结果或没有交易的原因。
回测与实时运行结果指南介绍如何评估得到的证据。先重建一项不借用未来信息的决策,再评估完整的预定义样本,包括失败形态与未能成交的订单。
仅供教育,不构成财务建议。示例中的所有事件、读数、时间和价格均为假设。正确时序能提升测试的可信度,但不保证交易盈利。