3. PIT数据的基本概念

在Point-in-Time(PIT)金融研究数据集的构建中,最容易被低估、却最容易导致回测失真的,不是数据源本身,而是对“时间”的语义理解。很多研究者把“数据里的日期”当成一个单一概念,结果在回测中引入了未来信息。PIT的核心,是让每一条数据都携带一组清晰的时间语义,使我们能够回答一个关键问题:在历史上的某一个决策时刻,我究竟能看到什么?

要回答这个问题,必须区分五个时点:数据时点、生效时点、报告时点、修订时点、可用时点。它们不是同义词,而是描述数据生命周期不同阶段的坐标。

一、五个时点的核心语义

数据时点(Data Date / Observation Date):数据所描述的事实本身对应的时间。例如“2023年12月31日的每股收益”“2024年3月的CPI同比”。它回答的是“这个数值说的是哪一天/哪一期的事”。

生效时点(Effective Date):该数据在业务规则上开始生效、应当被适用的时间。例如财报中“本报告期”覆盖的区间、指数成分股调整的生效日、分红方案的除权日。生效时点往往与数据时点重叠,但在事件型数据中可能不同。

报告时点(Report Date / Announcement Date):数据被正式对外披露或提交的时间。例如上市公司发布年报的日期、统计局发布CPI的日期。报告时点是信息从“内部”走向“公开”的边界。

修订时点(Revision Date):数据被修正、重述或调整的时间。宏观数据常被多次修订,财务数据可能因会计差错更正而重述。修订时点记录了“同一数据时点上的值发生了变化”这一事实。

可用时点(Available Date / Usable Date):在PIT系统中,该条数据真正可以被策略读取和使用的时间。它通常等于报告时点加上处理延迟,或修订时点加上入库延迟。可用时点是回测中唯一应该被用来判断“是否可见”的时间戳。

一句话记忆:数据时点说“是什么时候的事”,生效时点说“什么时候开始算数”,报告时点说“什么时候公开”,修订时点说“什么时候被改过”,可用时点说“什么时候我能用”。

二、时点关系与PIT可见性判定

在理想情况下,可用时点 ≥ 报告时点 ≥ 生效时点,而数据时点描述事实区间。但在真实数据中,这些关系可能被打破:宏观数据可能先有初值、后有修订;财报可能先有业绩快报、后有正式年报;指数成分可能提前公告、延后生效。PIT数据集的任务,就是把这些时点显式建模,而不是把它们压缩成一个日期字段。

PIT数据生命周期:五个时点与可见性边界 时间 数据时点 事实所属期间 生效时点 业务规则开始适用 报告时点 正式对外披露 修订时点 数据被修正/重述 可用时点 策略可读取 回测决策时刻 t:仅当 可用时点 ≤ t 时,该数据可见 若用报告时点或数据时点判定,易引入未来信息 PIT表结构:每条记录保留五个时点字段 + 版本号,支持按可用时点回溯任意历史截面

三、方法流程:如何把五个时点落到数据表

构建PIT数据集时,建议采用“事件表 + 版本链”的建模方式。每条数据记录至少包含以下字段:

  • data_date:数据时点,描述事实期间;
  • effective_date:生效时点,业务规则适用起点;
  • report_date:报告时点,首次披露时间;
  • revision_date:修订时点,本次版本的产生时间;
  • available_date:可用时点,PIT系统允许读取的时间;
  • version:版本号,同一数据时点下多次修订的序号;
  • is_latest:是否为当前最新版本,便于非PIT场景使用。

查询历史截面时,核心SQL逻辑如下:

SELECT *
FROM pit_fundamentals
WHERE available_date <= '2024-06-30 15:00:00'
  AND data_date = '2024-03-31'
ORDER BY revision_date DESC
LIMIT 1;

这段查询的含义是:在2024年6月30日15:00这个决策时刻,取2024年一季报数据中,当时已经可用的最新修订版本。注意,这里用的是available_date,而不是report_date或data_date。

工程建议:在数据入库时,统一将available_date设置为“报告时点 + 数据源延迟 + 内部处理延迟”。如果无法精确获得延迟,宁可保守高估,也不要低估,否则回测会偏乐观。

四、案例场景:一次财报修订的PIT追踪

假设某公司2024年一季报的每股收益经历了三个阶段:

版本 数据时点 报告时点 修订时点 可用时点 EPS值
v1 2024-03-31 2024-04-25 2024-04-25 2024-04-26 09:00 0.52
v2 2024-03-31 2024-04-25 2024-06-10 2024-06-11 09:00 0.48
v3 2024-03-31 2024-04-25 2024-08-15 2024-08-16 09:00 0.50

如果回测决策日是2024年5月10日,那么当时可见的是v1,EPS=0.52;如果决策日是2024年7月1日,可见的是v2,EPS=0.48;如果决策日是2024年9月1日,可见的是v3,EPS=0.50。若忽略修订时点,直接用最新值0.50回填到4月,就会产生明显的未来信息偏差。

五、常见误区与复盘

误区一:把报告时点当可用时点。财报在盘后披露,若当天收盘就用它交易,实际上信息尚未被市场消化,且系统可能尚未入库。

误区二:忽略修订,只保留最新值。宏观数据、财务重述都会改变历史值,只保留最新值会让回测“偷看”未来修订结果。

误区三:把数据时点当生效时点。例如分红方案的数据时点是报告期,但生效时点是除权日,两者混用会导致事件研究错位。

误区四:可用时点只精确到日。对于日内策略或高频事件,必须精确到秒或毫秒,否则仍会引入日内未来信息。

复盘时,建议对每个数据源做一次“时点审计”:随机抽取若干条记录,人工核对报告时点、修订时点与可用时点是否合理;再用一个简单的动量或价值策略,分别用“数据时点判定”和“可用时点判定”跑两遍回测,比较收益差异。差异越大,说明时点建模越关键。

掌握这五个时点的语义,是构建可信PIT数据集的第一步。它们决定了你的回测究竟是在“历史现场”做决策,还是在“上帝视角”下作弊。