踩坑复盘
增量窗口污染下游
DWD 增量预处理的窗口边界算错,污染 returns / VWAP,进而毒杀整张因子截面。#29 事故档案。
层级 DWD · 数据预处理 严重度 高 关联 #29 · commit 1de678e · preprocessor.py
现象
增量跑预处理时,某些日期的 returns / vwap 出现异常值,且只在增量边界附近出现——全量重算就正常。下游因子截面随之被污染,排名错乱。
定位
returns、滚动 vwap 这类衍生字段需要前置若干天的历史才能正确计算。增量模式下,窗口起点取错了一两天,导致边界处的滚动计算缺少必要的历史输入,算出了「半截」的值。
根因
衍生字段依赖回看窗口,并非逐行独立计算。窗口边界偏差一天,边界附近的所有计算值均会失真——且偏差幅度较小,难以通过常规肉眼检查发现。
修复
修正增量窗口的边界计算,确保滚动 / 衍生字段拿到足够的前置历史;并由 数据质量审计 DQC 做跨层一致性校验,把这类边界污染挡在因子计算之前。
教训:带回看窗口的增量计算中,边界处理是高风险环节。增量节省的计算开销可能不及一次边界污染排查的成本。建议在边界处多计算若干天后丢弃冗余部分。
关联
- 手册:2. 数据预处理 DWD
- 防线:6. 工程基建 里的 DQC 质量门禁。