一份财报写着“截至3月31日”,直到5月才公开。把收入按报告期填进历史表以后,回测改善了:这究竟是更准确地理解过去,还是让三月底的投资者提前读到了五月的报告?
数据可以描述过去,却在更晚的时候才被知道。量化研究若只保留数值和一个日期,很容易把“发生过”误当成“当时可用”。这次我们不给策略找更好的参数,先给五条记录补上时钟。
这次要查清的事
- 区分观察期、首次公布、自己取得和处理完成的时间。
- 按给定决策规则判断最早允许使用的位置,分清数据可知与交易可执行。
- 处理修订、延迟和缺失时间戳,保存一张有版本和证据的时间表。
必须掌握的是历史信息边界。如何自动存储所有版本只需先建立直觉,具体实现可以由工具承担,判断依据仍要能够查看。
一条数据,为什么需要这么多个时间
报告期说明资料覆盖哪段经营或观察。例如,第一季度收入覆盖特定三个月,而发布日期说明何时把这份信息公开。企业每天发生销售,不等于公众每天都能得到这季最终收入。
自己取得数据还可能更晚。公司8点发布,数据服务8点05分传送,研究程序8点07分收到,8点10分才完成单位核对和计算。实际决策不能悄悄使用8点那个时刻,假装自己的流程已经完成。
“处理完成”在这里指该研究规则所需的核验、转换和计算已完成,不是以后知道结果后再补的时间。若只是研究资料首次对公众可知,可以单独讨论发布时间;若声称重建自己的可执行流程,就必须连取得与处理一起检查。
CFA的回测概述强调近似现实投资过程,并指出前视偏差等问题。[1] 前视偏差的核心不是日期看起来很远,而是某次决策用了当时还不能使用的信息;哪怕只提前几分钟,也可能越过边界。
先把决策时钟写下来
下面是C4错误实验室的一组独立时间练习,不更改前文短账户账本,也不是C2月末趋势规则的替代规格。所有公告、数据、延迟和交易条件均为原创合成输入,不对应真实证券或历史回测成绩。
给定日期2024年5月6日、7日、8日、9日都是本练习适用的正常交易日,没有停牌或系统中断。除明确另标UTC外,全部时间为美国东部当地时间ET;本题这几日的换算给定为ET等于UTC减4小时。
研究规则每天仅在08:45检查一次:使用严格早于该时刻已取得并处理完成的数据,生成当日决定,计划在09:30尝试执行。恰在08:45完成或更晚的数据,均等下一个适用交易日;本练习用这条边界避免把时间戳精度不足时的先后顺序猜成已知。这里不存在临时插入的午间或收盘检查。
NYSE官方时段表区分核心与延长时段,核心交易通常从09:30开始;具体市场、品种和日期还要另查。[2] 本例给定09:30,是为了检验顺序,不保证订单一定按某个开盘价买到。
五条记录,先找谁赶得上
表中的“完成”已经包含本规则所需处理;“未知”是真的缺材料,不是让读者自己猜一个方便时间。先只判断可用位置,尚不评价策略是否获利。
| 记录 | 它描述什么 | 首次公布 | 自己取得 | 处理完成 |
|---|---|---|---|---|
| 甲:季度原版 | 截至3月31日的收入 | 5月6日08:00 | 5月6日08:07 | 5月6日08:10 |
| 乙:宏观初值 | 4月的一项经济观察 | 5月6日12:05 | 5月6日12:12 | 5月6日12:15 |
| 丙:公司公告 | 5月6日的一项经营事件 | 5月6日16:05 | 5月6日16:07 | 5月6日16:12 |
| 丁:甲的更正 | 更正同一季度收入 | 5月7日08:30 | 5月7日08:37 | 5月7日08:40 |
| 戊:日线收盘字段 | 标签仅为5月6日 | 未保存 | 未保存 | 未保存 |
甲能进入5月6日08:45的检查,最早对应当天09:30尝试。报告期是3月31日,并不能把它再提前到三月使用;公布08:00也不意味着程序在08:00就可以完成全部步骤。
乙在午间完成,丙在收盘后完成。按本规则,两者都错过当天08:45,因此最早进入5月7日08:45的检查,对应09:30尝试。不能因为乙在白天公开,就给这套每天检查一次的规则临时增加一笔午间交易。
丁在5月7日08:40完成,赶得上该日08:45检查。它是从那时起可用的新版本,而不是让5月6日的记录自动变成正确答案。甲与丁都需要保留,之后讨论当时判断时才不会混用。
戊最容易被系统“顺手处理”。日期标签5月6日通常帮助标示观察日,并没有记录这份最终字段何时到达你手里。收盘值至少要等相应收盘形成,但没有实际取得及处理证据,仍无法确认它赶上哪个检查点,不能自动写成“次日肯定可用”。
现在公布的更正,不能替昨天改答案
给甲补上数值:本季度与上年同期收入都为100,单位百万美元,因此按原版同比增长0%。给丁的更正补上115,上年同期仍为100,更正后增长15%。这两个数值与版本日期都是本练习输入。
若策略条件是“已知收入同比增长严格超过10%”,单看这一条件,5月6日原版不触发,5月7日更正后会触发。把今天数据库里的115按3月31日或5月6日原版时间回填,就会生成当时不存在的信号。
这并不表示修订不该用。今天研究最新情况可以使用新版本,重建过去决策则要取当时可得版本,二者回答不同问题。圣路易斯联储的ALFRED保存历史版本,正是为了让研究者取回过去日期源头报告的数据,而不是只看后来替换的最新估计。[3]
但有历史版本标签,也不意味着盘中交易时刻已经完全还原。ALFRED说明新值与修订的收录需要跟踪处理,发布时间和数据库可用日期也有不同来源。若任务精确到分钟,还需能支持分钟级可得性的材料,不能把日级归档当作实时接收日志。
时区错一格,可能整天都错
先保存带时区的原始时间,再换成统一的比较时钟。不要只存“08:30”,因为美国东部、UTC和北京时间的08:30是不同瞬间;美国东部还涉及夏令时,不能全年固定减同一小时数。
本题给定ET等于UTC减4。若某条消息写UTC12:35,对应ET08:35,不是12:35ET。转换后还要继续看取得和处理,不是消息早于08:45就一定能进入那次决定。
交易日历也不能只用星期一到星期五替代。节假日、提前收市、停牌与特定产品窗口,可能把最早尝试位置后移。时间表应先证明当时已可知,再证明该规则允许在对应窗口尝试,两步都完成仍不保证成交数量或价格。
缺一个时间戳,能否统一延迟一天
统一加一天可以作为一种明确披露的保守研究约定,却不自动成为历史事实。如果原始资料实际上延迟三天才到,统一一天仍可能太早;如果不同来源有不同延迟,也不能用一个平均值替所有记录作证。
有可核查延迟上限时,可以按该边界设计情景;没有历史版本或接收证据时,就要缩小声明。比如写“采用固定延迟假设的机制练习”,而不是“完整还原真实历史可交易策略”。
同样,缺失值、后来补录值和真实零值不是一回事。收入尚未披露,不应填0来计算暴跌;程序断线没有收到价格,也不等于市场价格没动。可以跳过该次决定或保留原持仓,但需事先写入规则,并记录跳过原因。
来源冲突时,先比较主体、期间、单位、版本与发布范围。一条新闻快讯也许先给初值,数据库后来给修订值;不要只按“数值更精确”选答案。仍无法解释,就把冲突保留为待查,不能让AI生成一个看似完整的发布时间。
从时间表接到下一次订单
C2-A使用月末收盘后的信号、下一个正常交易日开盘的教学成交模型;这里每天08:45检查的练习规则与它不同。两者共同需要证明的是:信号所需资料先可得并完成计算,再进入允许执行的窗口,不能用同一个已经结束的收盘价倒签成交。
本篇没有运行真实回测,也没有给五条记录附加收益。它只检查数据进入决策的位置。把位置检查通过,仍需进一步核对股票池、公司行动、费用及成交条件,才能讨论策略评价。
先关掉答案,重新排一次
解释题:甲的3月31日报告期为什么不能充当它的决策时间?错误辨识题:程序在5月6日13:00看到乙后,直接改写该日08:45决定,哪项规则被破坏?再问:为什么戊不能只凭5月6日标签推定已按时收到?
第一题需要区分内容覆盖期与信息可得期。第二题违反每天08:45固定检查,且在改写过去的决定;若想研究午间执行,须作为另一个预先定义的规则,不能用结果好看作补写理由。第三题缺少公布、取得和处理证据,观察日没有承担这些字段的含义。
换一个几分钟的延迟
新的独立消息于2024年5月8日UTC12:35公布。本题仍给定ET等于UTC减4,你在ET08:40取得,08:50完成处理。其余规则与日历不变。它能进入5月8日08:45决定吗?最早可以进入哪次决定和尝试?若表格里仍只有旧版甲的100,可否用丁的115补进5月6日?
先换算公开时间为ET08:35。虽然公开与取得都早于08:45,完成时间08:50却晚了5分钟,因此不能进入当天决定;最早进入5月9日08:45检查,对应09:30尝试。不能因为只迟5分钟就把处理时间向前取整。
最后一问也不能。115对应5月7日才可用的更正,不能倒放到5月6日。若无法取得旧版本,只能承认那次历史判断无法按真实输入复原,不用新版本冒充原记录。
保存一张带版本的时间证据表
为本篇五条记录分别填入对象标识、指标、观察期、数值单位、原始来源、首次公布、自己取得、处理完成、统一时区、版本与修订关系、适用决策窗口,以及最早允许尝试执行的位置。
对每个时间留下依据:公告原时间、接收日志或明确的教学假设,不把三个字段都复制为文件日期。另写缺失与冲突怎样处理,保留旧版本及更新记录。数据延迟变化时,先更新表,再决定是否需要重跑研究。
自检可以遮住数值,只沿时间链检查:在那次决定之前,是否已有足够证据证明这份版本可用?若某一格只有猜测,就给结论降级,而不是先让模型跑完再寻找理由。
小结:日期要回答“何时知道”,不能只回答“发生于何时”
先保留观察期、公开、取得和处理的区别,再按自己的决策频率和交易日历确定使用位置。公开资料不等于自己及时收到,自己收到也不等于规则允许立即执行。
新版本改善今天的认识,不能自动改写过去的输入。缺时间或缺版本时,把研究约定和真实事实分别标清;允许结果不完整,才能避免让一张整齐的历史表偷偷获得未来信息。
参考资料
- CFA Institute:Backtesting & Simulation,2026公开概要。回测近似现实流程与前视偏差;未读取付费课程。
- NYSE:Holidays & Trading Hours。核心及延长时段、节假日与提前收市;本文2024日期的交易条件由教学输入给定,不用当前日历冒充历史逐日核验。
- Federal Reserve Bank of St. Louis:ALFRED Help。历史版本、发布与数据库收录的区别;不据日级记录宣称分钟级可得。
资料核查日期2026-10-29。本文由AI辅助编写与核查,尚待人类金融审校与目标读者试读。五条记录和全部时间运算均为原创合成教学输入,不是实际公告或真实策略业绩。