数据验证与清洗

📎 引用文件

本文引用的文件 - agent/backtest/loaders/base.py - agent/backtest/loaders/local_loader.py - agent/backtest/runner.py - agent/backtest/validation.py - agent/tests/test_ohlc_validation.py - agent/tests/test_base_engine.py - agent/backtest/risk_xray.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向 Vibe-Trading 的数据验证与清洗子系统,聚焦 OHLC 数据完整性检查、价格有效性验证、时间范围校验、异常值处理、缺失值填充、不同市场的特殊规则(如允许负价格的场景)、验证级别配置与错误处理策略。同时覆盖数据质量监控指标、清洗报告生成与数据溯源能力,并提供自定义验证规则开发与性能优化建议。

项目结构

数据验证与清洗贯穿“加载器 → 统一清洗 → 回测引擎”的流水线: - 加载器负责从本地或外部源读取原始 OHLCV,并进行基础清洗与格式标准化。 - 统一边界校验在 runner 层对任意来源的数据进行集中式 OHLC 不变量检查。 - 回测引擎内部对信号与价格做对齐、填充与裁剪,保证数值稳定与可序列化。 - 统计验证模块输出蒙特卡洛、Bootstrap 置信区间与滚动窗口一致性等指标。

graph TB A["本地/外部加载器<br/>CSV/Parquet/DuckDB/远程"] --> B["统一清洗<br/>validate_ohlc + 时间过滤"] B --> C["回测引擎<br/>对齐/填充/裁剪"] C --> D["统计验证<br/>蒙特卡洛/Bootstrap/滚动窗口"] D --> E["结果归档<br/>validation.json / artifacts"]

图表来源 - agent/backtest/loaders/local_loader.py:249-354 - agent/backtest/loaders/base.py:31-119 - agent/backtest/runner.py:68-162 - agent/backtest/validation.py:286-341

章节来源 - agent/backtest/loaders/local_loader.py:249-354 - agent/backtest/loaders/base.py:31-119 - agent/backtest/runner.py:68-162 - agent/backtest/validation.py:286-341

核心组件

章节来源 - agent/backtest/loaders/base.py:50-119 - agent/backtest/loaders/base.py:31-48 - agent/tests/test_base_engine.py:479-508 - agent/backtest/validation.py:286-341 - agent/backtest/risk_xray.py:110-142

架构总览

数据从加载器进入系统后,先经过加载器自身的规范化与 OHLC 校验,再经 runner 的统一清洗通道,随后进入引擎对齐与填充阶段,最后由统计验证模块产出质量指标与报告。

sequenceDiagram participant L as "加载器" participant R as "Runner(统一清洗)" participant E as "回测引擎" participant V as "统计验证" L->>R : fetch(codes, start, end, interval) R->>R : validate_date_range() R->>R : _sanitize_data_map() -> validate_ohlc() R-->>E : 已清洗的OHLCV映射 E->>E : 对齐/填充/裁剪(close ffill/bfill, 信号裁剪) E-->>V : equity_curve, trades V->>V : monte_carlo / bootstrap / walk_forward V-->>R : validation.json

图表来源 - agent/backtest/loaders/local_loader.py:249-354 - agent/backtest/loaders/base.py:31-119 - agent/backtest/validation.py:286-341

详细组件分析

OHLC 数据完整性检查与价格有效性验证

flowchart TD Start(["开始"]) --> CheckCols{"包含OHLC列?"} CheckCols -- 否 --> ReturnFrame["原样返回"] CheckCols -- 是 --> Structural{"structural 违规?"} Structural -- 是 --> Strategy{"策略"} Strategy -- drop --> Drop["丢弃行"] Strategy -- warn --> KeepWarn["保留并记录日志"] Strategy -- raise --> RaiseErr["抛出异常"] Structural -- 否 --> Positivity{"允许非正价格?"} Positivity -- 否 --> NonPos{"存在≤0价格?"} Positivity -- 是 --> ZeroOnly{"存在=0价格?"} NonPos -- 是 --> Strategy NonPos -- 否 --> Pass["通过"] ZeroOnly -- 是 --> Strategy ZeroOnly -- 否 --> Pass Drop --> End(["结束"]) KeepWarn --> End RaiseErr --> End Pass --> End

图表来源 - agent/backtest/loaders/base.py:50-119 - agent/tests/test_ohlc_validation.py:23-64

章节来源 - agent/backtest/loaders/base.py:50-119 - agent/tests/test_ohlc_validation.py:23-64

时间范围校验

章节来源 - agent/backtest/loaders/base.py:31-48 - agent/backtest/loaders/local_loader.py:342-347

数据清洗策略、异常值处理与缺失值填充

章节来源 - agent/backtest/loaders/local_loader.py:136-184 - agent/tests/test_base_engine.py:479-508 - agent/backtest/risk_xray.py:110-142

不同市场的特殊规则(如负价格市场)

章节来源 - agent/backtest/loaders/base.py:65-73

验证级别配置与错误处理策略

章节来源 - agent/backtest/runner.py:68-162 - agent/backtest/loaders/base.py:343-439 - agent/backtest/validation.py:419-451

数据质量监控指标、清洗报告与数据溯源

章节来源 - agent/backtest/validation.py:286-341 - agent/backtest/validation.py:419-451 - agent/backtest/loaders/base.py:284-325 - agent/backtest/loaders/base.py:574-595

自定义验证规则开发指南

章节来源 - agent/backtest/loaders/base.py:50-119 - agent/backtest/validation.py:286-341

性能优化建议

章节来源 - agent/backtest/loaders/base.py:328-439 - agent/backtest/validation.py:67-113

依赖关系分析

graph LR Base["base.py<br/>validate_ohlc/日期校验"] --> Local["local_loader.py<br/>列标准化/时间过滤"] Local --> Runner["runner.py<br/>统一清洗/配置校验"] Runner --> Engine["引擎<br/>对齐/填充/裁剪"] Engine --> Validation["validation.py<br/>蒙特卡洛/Bootstrap/滚动窗口"]

图表来源 - agent/backtest/loaders/base.py:31-119 - agent/backtest/loaders/local_loader.py:249-354 - agent/backtest/runner.py:68-162 - agent/backtest/validation.py:286-341

章节来源 - agent/backtest/loaders/base.py:31-119 - agent/backtest/loaders/local_loader.py:249-354 - agent/backtest/runner.py:68-162 - agent/backtest/validation.py:286-341

性能考量

[本节为通用指导,无需特定文件引用]

故障排查指南

章节来源 - agent/backtest/loaders/base.py:50-119 - agent/backtest/validation.py:286-341 - agent/tests/test_base_engine.py:479-508

结论

本系统通过“加载器标准化 + 统一不变量校验 + 引擎对齐填充 + 统计验证”的分层设计,确保 OHLC 数据的完整性、价格的有效性与时间范围的合理性。针对不同市场(如允许负价格)提供灵活配置,结合缓存与严格 JSON 输出实现高效、可追溯的数据质量治理。建议在业务侧按需扩展自定义验证规则,并结合性能优化策略提升吞吐与稳定性。

[本节为总结性内容,无需特定文件引用]

附录

[本节为参考信息,无需特定文件引用]