3. 数据来源
在财务数据公告日与可得时间对齐的实战中,最容易被低估的环节不是模型,而是“时间字段到底从哪里来”。同一份年报,在交易所网站、Wind、同花顺、CSMAR、巨潮资讯中可能对应四个不同的时间戳:董事会决议日、交易所预约披露日、实际公告日、数据商入库日。若不加区分地混用,回测中就会出现“未来信息泄露”或“信号延迟”两类相反的错误。本节围绕常见数据源的时间字段定义与获取方式展开,帮助大家建立可复用的字段映射与采集规范。
一、核心原理:公告时间的四层结构
财务数据的“可得时间”并非单一时刻,而是一条时间链。理解这条链,是选择数据源和字段的前提。
- 决策层时间:董事会决议公告日、股东大会决议日,反映信息在上市公司内部形成的时间。
- 监管层时间:交易所预约披露时间表、实际披露日,是监管口径下的公开时点。
- 媒体层时间:巨潮资讯、交易所网站、指定媒体的首次挂网时间,通常精确到日,部分到分钟。
- 数据商层时间:Wind、同花顺、CSMAR 的入库时间或“公告日期”字段,可能滞后于媒体层数小时至数日。
对齐的本质,是把策略中使用的“信号生成时点”锚定到上述四层中最保守且可复现的那一层。学术研究常用“公告日+1个交易日”作为可得时间,而实盘更关注数据商入库时间,因为那才是策略真正能读到数据的时刻。
二、方法流程:从数据源到对齐字段的采集规范
建议按“确定口径 → 抽取字段 → 校验时区 → 建立映射表 → 固化采集脚本”五步执行。
- 确定口径:明确策略需要的是“公告日”“入库日”还是“可交易日”。学术复现多用公告日,实盘多用入库日。
- 抽取字段:不同数据源的字段名差异较大,需先做字段字典。
- 校验时区:交易所与巨潮为北京时间,部分海外数据商为 UTC,需统一转换。
- 建立映射表:以股票代码+报告期为键,把多源时间字段合并到一张宽表。
- 固化采集脚本:把字段名、时区、缺失处理写成配置,避免人工重复。
下面是一个字段映射配置示例,可直接作为采集脚本的输入:
source_map:
exchange:
announce_field: "actual_disclosure_date"
timezone: "Asia/Shanghai"
precision: "day"
wind:
announce_field: "ANN_DT"
ingest_field: "OPDATE"
timezone: "Asia/Shanghai"
precision: "day"
csmar:
announce_field: "Anndate"
report_field: "Accper"
timezone: "Asia/Shanghai"
precision: "day"
cninfo:
announce_field: "publish_time"
timezone: "Asia/Shanghai"
precision: "minute"
三、案例场景:同一份年报在五个数据源中的时间差异
以某主板公司 2023 年年报为例,假设董事会决议日为 2024-03-28,交易所预约披露日为 2024-04-10,实际披露日为 2024-04-09,巨潮资讯首次挂网时间为 2024-04-09 19:42,Wind 入库日为 2024-04-10,CSMAR 公告日为 2024-04-09。若策略在 2024-04-09 收盘后读取 Wind 数据,实际上读不到;若在 4-10 开盘读取,则已滞后一个交易日。这就是“数据商层时间”与“媒体层时间”错位的典型场景。
| 数据源 | 关键时间字段 | 示例值 | 可得性说明 |
|---|---|---|---|
| 交易所网站 | 实际披露日 | 2024-04-09 | 精确到日,权威但无时分 |
| 巨潮资讯 | 首次挂网时间 | 2024-04-09 19:42 | 精确到分钟,适合实盘对齐 |
| Wind | ANN_DT / OPDATE | 2024-04-09 / 2024-04-10 | 入库日滞后,需以 OPDATE 为准 |
| 同花顺 | 公告日期 | 2024-04-09 | 通常与交易所一致,需抽样校验 |
| CSMAR | Anndate | 2024-04-09 | 学术常用,需注意报告期字段 |
四、误区与复盘
误区一:把“公告日期”直接当作“可交易日期”。公告日盘后发布的数据,最早只能在下一交易日使用。若回测中按公告日收盘价成交,会引入前视偏差。
误区二:忽略数据商入库时间。Wind 的 OPDATE 与 ANN_DT 常相差 1~2 日,实盘策略若按 ANN_DT 对齐,会高估策略收益。
误区三:多源混用不做去重。同一报告期在交易所、巨潮、CSMAR 中可能重复出现,需以股票代码+报告期为主键去重,并保留最早可得时间。
复盘建议:每次回测前,抽取 20 只样本股,人工核对五个数据源的时间字段差异,形成“时间差分布表”。若某数据源平均滞后超过 1 个交易日,应在策略中显式加入延迟参数,而不是默认使用公告日。
掌握各数据源的时间字段定义与获取方式,是后续构建“公告日—可得日—交易日”三级对齐表的基础。只有把字段口径固定下来,回测结果才具备可复现性和实盘参考价值。