阶段4数据获取●●●●●

数据校验:研究的第一道质检工序

我的掌握程度:
q-339精讲

先掌握这个答案

六项检查:①行数对账:更新前后行数增量合理(如A股每天约5000行增量);②价格范围:close>0、|日收益|不超涨跌停;③NaN率:各列缺失比例(突增=接口故障);④重复检查:同(date,code)不重复;⑤抽样比对:随机取3只与行情软件肉眼对数;⑥量级合理性:均值/std是否在已知区间。自动化:写check_data(df)函数每次更新后自动跑——异常打印详细报告。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

本阶段实战方法 · 一条能复现的数据流水线

把接口返回的数据变成可用于因子研究的面板时,先处理时点、主键与单位。

  1. 建立数据字典:字段、单位、时区、交易日历、数据源、抓取时间、原始价与复权因子。
  2. 用(date, code)查重,区分停牌、未上市、窗口不足和真实缺失;不要用向后填充把未来值带回过去。
  3. 保存原始快照与清洗日志,固定随机种子和环境版本;接口字段变化时先核对官方文档。

使用边界

  • 报告期不等于公告可用日,盘后公告通常不能用于当天收盘前决策。
  • API输出名为“动态市盈率”时不能直接改名TTM;浏览器练习不支持任意原生库或行情抓取接口。
背景 · 从一个困惑说起
你花了一小时更新完数据、跑了因子、IC异常高——是发现了圣杯还是数据出错了?90%的概率是后者。数据校验就是研究前花5分钟把问题暴露——而不是花三天排查"为什么因子又失效了"。
由此产生的问题
数据校验的六项固定检查?校验脚本的自动化设计?发现异常的处置流程?
核心概念
六项检查:①行数对账:更新前后行数增量合理(如A股每天约5000行增量);②价格范围:close>0、|日收益|不超涨跌停;③NaN率:各列缺失比例(突增=接口故障);④重复检查:同(date,code)不重复;⑤抽样比对:随机取3只与行情软件肉眼对数;⑥量级合理性:均值/std是否在已知区间。自动化:写check_data(df)函数每次更新后自动跑——异常打印详细报告。
为什么需要它
①成本的不对称:校验5分钟/不校验排查3天——ROI最高的5分钟;②数据研究的第一课:几乎所有"因子突然有效/失效"先排查数据——再怀疑模型;③团队协作文档:校验日志是给同事(和三个月后的你)的最大善意。
实际应用场景
标准流程:数据更新→自动体检→异常告警→人工核查→修复→重跑→通过→开始研究——校验是研究的前置闸门。
与之前知识的联系
q-328/338(下载与更新)→本题(每次更新后的闸门)→q-060(字段体检);与q-065(脏数据图鉴)配合使用。
⚠ 常见误解
  • 数据源是权威的所以不用查:所有数据源都有口径变更、接口故障、静默错误——校验是自保
  • 校验抽查几笔就行:系统性bug(口径变化)用抽查可能漏——六项固定检查全覆盖
  • 校验浪费时间:5分钟的六项检查vs3天的因子排查——ROI最高的时间投资
  • 校验通过就永远安全:每次数据更新后都要重新跑——新数据=新bug风险

🤖 AI导师

导师会先检查你的前置知识(数据更新、脏数据概念),再用案例、公式和代码帮助理解。此功能需要先启用服务。