踩坑复盘问题复盘 · 事故档案系统开发过程中遇到的典型问题全记录。每篇档案按「现象 → 定位 → 根因 → 修复 → 教训」结构化复盘。Copy MarkdownOpen量化系统中危害最大的 bug 往往不抛异常,而是静默地使回测结果失真、实盘持续亏损。本章将每一次此类问题结构化拆解,记录从发现到修复的完整过程。 每篇档案统一结构: 事故档案的读法现象 发生了什么 → 定位 怎么查到的 → 根因 为什么会这样 → 修复 最后怎么收口 → 教训 下次如何不再犯。 事故索引 数据层 无限拉取死循环#19 · ODS · 空源标的把增量任务拖成无限重试,烧光 API 配额。增量窗口污染下游#29 · DWD · 窗口边界算错,毒杀整张因子截面。 因子层 adv 语义错误#33 · DWS · 将「成交金额」误实现为「成交股数」,无异常但结果系统性偏差。随机扰动与不可复现#33 · DWS · 防除零的随机扰动让结果每次都不一样。 回测与执行层 回测实盘路径分叉#31 · 全局 · 信号 / 风控 / 筛选三条路径各自独立实现,结果无法复现。止损逻辑失效#31 · 回测 · max() 参数语义错误,回撤止损从未触发。重启后持仓状态丢失#30 · ADS · 重启后未恢复持仓明细,误判为空仓并触发全仓买入。碎股与粉尘持仓#28 · ADS · 高价股的离散化误差与低权重粉尘持仓推高交易成本。调仓频率不一致导致摩擦放大#40 · ADS · 实盘每日全额换手,是亏损的主因,而非因子失效。6. 工程基建把上面五层串成每日可自动运行、可审计、参数可控的生产流水线。配置、流水线、质量门禁。无限拉取死循环朴素增量逻辑 if latest > last 遇上「永远没有新数据」的标的,会把每日任务拖成一场无声的无限重试。#19 事故档案。