🎯 学习目标

  • 理解金融数据质量的重要性与评估标准
  • 掌握常见数据异常类型与检测方法
  • 能够建立数据质量监控与预警机制
  • 学会处理数据缺失、错误与不一致问题
数据质量检测

数据质量与异常检测

数据质量是量化交易策略成功的基石。低质量数据会导致错误的决策和严重的财务损失。 本节将系统介绍数据质量评估、异常检测方法以及数据清洗的最佳实践。

📊 数据质量维度

完整性(Completeness)

数据是否包含所有必需的信息:

  • 缺失值的比例和分布
  • 交易时段数据是否连续
  • 重要字段是否存在

准确性(Accuracy)

数据是否反映真实市场情况:

  • 价格是否在合理范围内
  • 成交量是否合理
  • 是否存在明显错误值

一致性(Consistency)

不同数据源是否一致:

  • 同一天数据在不同源是否匹配
  • 数据格式是否统一
  • 时间戳对齐

时效性(Timeliness)

数据是否及时更新:

  • 实时数据延迟
  • 历史数据更新频率
  • 数据可用性

🔍 常见数据异常类型

异常类型 特征 检测方法 处理策略
价格异常 超出合理范围、跳空过大 统计检验、阈值检测 标记、插补或删除
成交量异常 异常放大或缩小 Z-score、移动平均 调查后处理
缺失值 数据中断、空值 连续性检查 前向填充、插值
重复数据 相同时间戳多条记录 重复键检测 去重
时间戳错误 时间倒流、跳变 单调性检查 纠正或删除

🔧 异常检测算法

统计方法

import numpy as np
import pandas as pd

# Z-score方法
def detect_outliers_zscore(data, threshold=3):
    z_scores = np.abs((data - data.mean()) / data.std())
    return z_scores > threshold

# IQR方法
def detect_outliers_iqr(data):
    Q1 = data.quantile(0.25)
    Q3 = data.quantile(0.75)
    IQR = Q3 - Q1
    return (data < (Q1 - 1.5 * IQR)) | (data > (Q3 + 1.5 * IQR))

# 滚动窗口检测
def detect_rolling_anomaly(data, window=20, threshold=3):
    rolling_mean = data.rolling(window).mean()
    rolling_std = data.rolling(window).std()
    z_scores = np.abs((data - rolling_mean) / rolling_std)
    return z_scores > threshold

机器学习方法

  • 孤立森林(Isolation Forest)
  • 局部异常因子(LOF)
  • One-Class SVM
  • 自编码器异常检测
数据质量监控框架

建立完整的数据质量监控体系:1) 数据接入时实时校验 2) 批处理时自动检查 3) 可视化监控大屏 4) 异常报警机制 5) 定期数据质量报告。这样可以及早发现和解决问题。

📝 本节小结

  • • 理解了数据质量的四个核心维度
  • • 掌握了常见数据异常的检测方法
  • • 学会了统计和机器学习异常检测算法
  • • 建立了数据质量监控的完整框架