← 返回文章库

数据公开了但还没进你的库,回测该按哪个时间放行

2026-10-24 · L5

研究公共信息边界时按公开时间放行;重放某一系统实际运行时,还必须等该版本入库。两者回答不同问题,不能统一用一个“日期”代替。本篇构造两源四版本、四个决策截点,同时给出公共快照、实际系统快照及额外延迟情景,展示相同公开资料在不同管道中未必同时可用。

两源、版本与观察期怎样定义

A与B都是构造数据源,描述同一2026年9月观察期,数值为无量纲教学量,不代表收入或真实宏观指标。时间原点为2026年10月20日09:00Z,表中release、ingest、decision均为距原点分钟数。版本号只在各源内部比较,不能用A的版本二覆盖B的版本一。

完整构造输入如下。时间和状态按本篇约定解释,JSON中的null代表未知而非零:

{
  "columns": [
    "源",
    "版本",
    "值",
    "release分钟",
    "ingest分钟"
  ],
  "decisions": [
    3,
    6,
    8,
    10
  ],
  "observation": "构造2026-09期",
  "origin": "2026-10-20T09:00:00+00:00",
  "rows": [
    [
      "A",
      1,
      100,
      0,
      4
    ],
    [
      "B",
      1,
      200,
      1,
      2
    ],
    [
      "A",
      2,
      110,
      5,
      9
    ],
    [
      "B",
      2,
      190,
      7,
      8
    ]
  ]
}

A第一版值一百,在原点公开、四分钟入库;B第一版二百,一分钟公开、两分钟入库。A第二版一百一十,五分钟公开、九分钟入库;B第二版一百九十,七分钟公开、八分钟入库。每行都有原始观察期、来源、版本、公开时刻与入库时刻,四种坐标不能互换。

决策截点为三、六、八、十分钟。公开边界要求release不晚于截点;实际系统还要求ingest不晚于截点。满足条件后,在每源各自的候选里选择最近公开版本,本例同一源无并列公开时间。未取得某源时两源和为空,不把缺源贡献默认为零。

四维筛选怎样逐候选展开

ingestrelease值公开可用决策分钟源版本系统可用
40100是3A1否
21200是3B1是
95110否3A2否
87190否3B2否
40100是6A1是
21200是6B1是
95110是6A2否
87190否6B2否
40100是8A1是
21200是8B1是
95110是8A2否
87190是8B2是
40100是10A1是
21200是10B1是
95110是10A2是
87190是10B2是

三分钟时A第一版已经公开但未入库,B第一版两者都满足。六分钟时A第二版公开却未入库,系统仍只能用A第一版;八分钟时B第二版刚入库,A第二版仍待九分钟。这个候选级真值表比只给最终值更容易审计,因为每次差异都能追溯到一个具体条件失败。

ingest不能反过来代替release。现实中若管道先收到尚未公开或误标时间的资料,单查入库会让它进入公共信息研究。本文假设四行都满足ingest不早于release,且不处理保密资料,但实现仍同时检查两列,让边界清楚。时间来源若错误,筛选器再严也不能修正上游事实。

版本选择应在筛选之后完成。错误地先保留最终版A2,再按入库截断,会在六分钟把A整源变空,丢掉当时确实已在库的A1;先用最终值再统一延后几分钟,又可能把某个修订提前。保存旧版本是重建系统快照的必要条件,不能只保留最新值和一个更新时间。

三种口径的最终快照怎样对照

A值A版本B值B版本两源和决策分钟口径
100120013003公开边界
——2001—3实际系统
—————3入库额外延迟2分
110220013106公开边界
100120013006实际系统
100120013006入库额外延迟2分
110219023008公开边界
100119022908实际系统
100120013008入库额外延迟2分
1102190230010公开边界
1102190230010实际系统
1001190229010入库额外延迟2分

公开口径三分钟可得A1与B1,总三百;实际系统缺A,只能给B一源,合计不确定。六分钟公开可用A2加B1等于三百一十,实际系统仍A1加B1为三百。八分钟公开A2加B2为三百,实际系统A1加B2为二百九十;十分钟两者才共同采用两源第二版。

这不是认为公开研究必须模拟最慢系统。公共口径可以合理回答“在理想取得公开资料的条件下,哪些版本已经对外可见”;实际口径回答“这套管道当时能拿哪些”。报告应清楚写出研究对象,不能拿公共零延迟成绩宣传为某个实际部署系统已经可实现的结果。

额外延迟两分钟情景把每条ingest统一加二,release保持,体现系统条件变化而非公开事实变化。三分钟两源都不可用;六分钟回到两源第一版合三百;八分钟仍是三百;十分钟A第二版尚未入库,只能A1与B2合二百九十。这个变化说明延迟不一定让某个总量单向变大或变小,取决于修订方向。

迟到和修订同时存在时怎样保持来源

每个决策快照保存实际采用的源行身份和版本,不只保存计算后的和。相同合计三百可能来自A1+B1,也可能来自A2+B2;如果只保留结果,看起来完全一致,研究者却无法判断信息集是否相同。版本和时间是计算结果的组成证据,不是可随意压缩的装饰字段。

多源更新不同步也不等于输入必须取同一个版本号。本例八分钟系统使用A1与B2,这是实际可知组合;强行等两源都到版本二可能改变系统策略,允许不同步又应记录混合状态。真实指标如果要求同一观察期的完整字段,缺一源就拒算,本篇两源和正采用这条完整性政策。

若旧数据在九分钟被后台覆盖成新值,后来再查询六分钟必须仍返回A1。否则入库时间虽然保留,历史存储已经丢失旧值,无法重放。可采用追加版本与双时间查询,而不是在主表上原地更新。本文脚本以有限候选枚举说明逻辑,没有实现数据库事务、并发一致性或消息去重。

缺少接收日志能做怎样的结论

有真实公开时刻而无历史ingest时,仍可做公共信息边界研究,但不能声称已经还原某套实际系统。可以明确给不同延迟假设作为敏感性,像本例额外两分钟那样保留情景标签;不能事后找一个让回测最好看的延迟,再写成真实测得。实际延迟分布需要日志,不能从最终文件下载时刻倒推出全部历史入库时刻。

日期精度也要匹配问题。只有公开日的资料,不能无依据设成当天零点用于日内决策;如果来源仅保证某日更新,可以采用明确保守规则或报告未知。本文全部时间精确到分钟,并明确相等可用;真实系统同分钟顺序不明时应保留序号或做排除等时刻的对照。

原始来源与本篇独立产物

FRED Real-Time Periods的Introduction说明版本所知期间,本文读取该节与日期边界示例,核对日2026年10月24日。FRED说明不提供本篇私有系统入库分钟;这些分钟都是构造输入。merge_asof文档支持向后候选方法,但简单只按release做一次连接不能替代本篇双条件筛选。

本篇不重算同收盘买卖金额,不宣称所有投资者共享同一网络延迟。它交付的是每个决策截点的四维筛选、版本选择和迟到对照。读者可以用同样字段填入自己的日志,再判断哪一个边界与研究目标相符;缺失的时间证据仍应是未知,不能被一个固定偏移参数伪装成历史事实。

数据六项自查母文用于检查总体数据健康。样本分割基础工具只辅助理解训练与检验样本的划分;本篇专门的逐行审计由教学表和标准库脚本完成,工具没有内置这些检查。相关核对可继续阅读行情API分页截断检查、回测数据版本差异复现。

道积君编辑组,AI辅助编写与核算。本文为构造教学样本,公开脚本只使用Python标准库,默认在脚本同目录生成UTF-8、LF换行的JSON;不依赖pandas、网络或仓库。没有实测第三方框架或实际交易系统,不据此推断真实收益、成交或数据源可靠性。

复算资料

本篇编号DJ4-053。下载Python复算脚本(文本)与构造输入输出JSON,按编号核对本篇。脚本改存为.py后可用Python标准库运行,数据不是实际用户记录。

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。