即使策略代码一行未动,期权回测结果也可能发生变化。供应商可能更正错误报价、补录延迟成交、修订合约元数据,或调整对交叉市场的筛选规则。你用相同的日期范围重新运行,得到的成交、仓位,甚至 Sharpe 都可能不同。这不一定是策略出了问题,而是策略接受测试时所依据的数据发生了变化。
要让期权回测可复现,就要把市场数据视为有版本的输入。记录使用了哪个快照,保留影响每项决策的原始观测,并先按合约和时间戳逐项比对变化,再采信新的汇总结果。
代码没变,为什么我的期权回测结果变了?
期权记录对数据更正格外敏感,因为判断某份合约能否交易,取决于多个字段是否相互匹配:买价、卖价、数量、标的价格、到期日、行权价,以及合约的乘数或交割标的。报价更正可能会让原本看似有利的机会变成交叉市场。元数据修正则可能改变仓位乘数的含义。
设想一个策略在卖价低于 $2.00 时买入看涨期权。首次加载数据时,10:14 的报价是卖价 $1.95、买价 $1.90,数量为 5。供应商之后对账一条延迟到达的交易所消息,将卖价修订为 $2.05。仅这一条观测就会让信号反转。如果该合约是策略当天唯一的一笔交易,这项看似不大的数据更正就可能主导当天的收益。
报价筛选同样重要。供应商可能会剔除过时报价、移除交叉市场,或采用不同方式标准化时间戳。这些做法可能合情合理,但也是数据集身份的一部分。“SPY 期权,1 月至 3 月”并没有明确指定一份可复现的历史数据。
什么是期权数据版本?
数据版本是指某次研究运行所能获取的历史观测的确切版本。应记录供应商和数据集名称、获取时间、日期范围、架构版本,以及任何清洗或筛选规则。如果供应商提供快照 ID 或修订时间戳,也要一并保存。
对于每一项模拟决策,都要保留足够的溯源信息,以便回答:当时考虑的是哪份合约、选用了哪条报价、报价何时发布或接收,以及它依据什么规则符合筛选条件?原始记录和派生记录都很重要。若 NBBO 清洗后没有保留来源时间戳,就可能看不出报价是否已经过时,或是否在模拟决策之后才到达。
| 需要保留的记录 | 重要原因 | 示例 |
|---|---|---|
| 来源快照 | 标明本次运行使用的历史数据 | 供应商修订 ID 和获取时间戳 |
| 报价溯源信息 | 说明所选市场数据的来历 | 交易所、事件时间、接收时间、买卖价和数量 |
| 合约条款 | 定义期权代表的标的权益 | 行权价、到期日、乘数和交割标的 |
| 清洗规则 | 说明哪些观测被排除 | 过时阈值和交叉报价处理方式 |
如何检查供应商修订是否改变了我的结果?
用两个数据快照运行完全相同的策略和配置。先按日期比较符合条件的观测和合约数量,再比较决策和成交:哪些信号出现或消失了,哪些报价发生了变化,以及新记录是否改变了模拟执行价格。
不要只看总收益。还要跟踪交易笔数、入场和出场价格、被拒绝的信号,以及仅存在于某个数据版本中的交易所贡献的盈亏比例。即使个别交易不断被替换,一次运行的 Sharpe 也可能看起来相近;这个汇总指标不会告诉你其底层历史数据已经变了。
要做好审计,就应固定策略、费用和执行假设。如果多个因素同时变化,你就无法判断结果差异究竟来自供应商更正,还是来自你自己的实验。
我应该始终使用最新的期权历史数据吗?
如果目标是使用供应商当前最完善的历史重建数据,就用最新版本。如果需要复现先前的结果,或了解当时研究系统掌握了哪些信息,就保留旧快照。这两个快照回答的是不同的问题。
对于时点研究,修正后的记录如今可能更准确,但在当时仍未对策略开放。尽可能保留发布时间和接收时间;如果做不到,就明确标注这一限制。现代重建数据并不会自动成为历史时点的信息集。
期权回测结果发生变化时,首先应该问:“哪些观测发生了变化?”等你能回答这个问题后,再问“哪次运行才是正确的?”。
每次回测都应该保存哪些内容?
在结果旁保存一份精简清单:数据提供商和快照、获取时间、架构和清洗版本、合约元数据来源、策略提交版本、执行假设,以及运行配置。每笔交易都应能追溯到支撑它的报价记录。
这份简短记录能让一次令人费解的重跑变成可检查的差异对比。期权历史数据还会不断得到修正。你的研究流程应让每次修正都清晰可见,这样更完善的归档才能改善证据,而不会悄悄改写实验。
← 全部文章


