AI 生成量化代码如何检查未来函数:FiClaw 回测数据时点清单

检查 AI 生成策略中的未来数据泄漏:从财务披露、历史股票池、信号与成交时点,到全样本预处理和代码复核,保留 FiClaw 回测证据。

发布人 FiClaw 产品团队 · 发布于 · 更新于

Read in English

先看结论

检查未来函数,要逐项回答“这条信息在当时是否已经可用”。分别核对数据所属期、实际公布或可用时间、信号计算时间和最早可成交时间,再检查历史股票池与预处理是否使用了后来的信息。FiClaw 的代码生成和历史回测仍需要这一步人工复核。

适合使用自然语言生成策略代码、研究财务因子或发现异常漂亮回测曲线的研究者。

代码复核请求示例:把时间假设列出来

请审查当前策略,不先优化收益。列出每个数据字段的所属期、可用时间、信号计算时点与订单执行时点;标出负向 shift、居中滚动窗口、全样本归一化、向前填入未来披露值,以及使用当前成分股回测历史的地方。每项给出代码位置、所需证据与修正方式,无法确认的数据写为待核实。

报告期、公布日与可用时间不能混用

财务数据属于某个报告期,不代表在报告期结束当天就能使用。研究需要核对实际披露或数据可用时间,并检查字段是否已经被后来修订的值覆盖;没有相应历史版本时,应明确限制。

收盘后才能确定的信号,需要与可执行的订单时点配套。若使用当日完整收盘信息,又假设在信息尚未可得时按同一个价格成交,就需要重新核对信号与撮合逻辑。

历史股票池与全样本计算也会引入泄漏

用今天的指数成分股覆盖整个历史区间,会改变当时可选择的股票集合,并可能忽略后来退市或调出的标的。先确认历史成分、上市退市和停牌数据是否足够,再说明回测结论能覆盖的范围。

AI 生成代码时,可重点检查负向 shift、居中窗口、反向填充、用全区间统计量处理较早数据,以及先看未来收益再筛样本的逻辑。代码中出现这些操作不必然都是错误,但必须能解释信息可用顺序。

在 FiClaw 中把疑点变成可核对材料

先把时间约束写进 spec,再对照生成代码抽查几笔交易:从原始字段和历史股票池,追到信号与成交记录。保留修正前后的代码版本和运行设置,比较结果变化,而不是只改收益曲线。

回测没有报错不代表没有未来信息。FiClaw 可以辅助解释代码与诊断结果,但数据时点是否成立,需要结合数据说明和实际记录确认;无法确认时,把问题保留在研究结论里。

沿着一笔交易检查时间顺序

沿着一笔交易检查时间顺序
检查对象需要的证据常见疑点
数据字段所属期、公布/可用时间与历史版本把报告期末当作已知时点
股票池当时成分与上市退市状态全历史只保留今天仍在池中的股票
信号计算窗口方向、预处理范围与计算时间让后来的观测参与较早的信号
订单执行下单时间、撮合规则与成交日志在信息尚不可用时假设成交

常见问题

代码能运行,是否说明没有未来函数?

不是。语法和接口检查只能解释程序是否运行,无法证明每个数据字段当时已经可用。还应核对字段时点、历史股票池、窗口方向与成交记录。

统一把信号 shift 一天就足够了吗?

不够。延迟信号不能自动修复历史股票池、财务修订值或全样本预处理带来的泄漏。应按信息实际可用时间逐项检查。

FiClaw 是否保证所有历史数据都是时点版本?

本指南不作这一保证。FiClaw 通过 QuantAPI 连接历史数据;财务历史版本、历史成分与具体字段的可用范围需要查阅数据说明或单独确认,不能仅凭数据名称推断。

方法参考

继续阅读

从一个有明确规则的研究问题开始