数据质量监控框架
建立完整的数据质量监控体系:1) 数据接入时实时校验 2) 批处理时自动检查 3) 可视化监控大屏 4) 异常报警机制 5) 定期数据质量报告。这样可以及早发现和解决问题。
金融市场数据基础
数据质量是量化交易策略成功的基石。低质量数据会导致错误的决策和严重的财务损失。 本节将系统介绍数据质量评估、异常检测方法以及数据清洗的最佳实践。
数据是否包含所有必需的信息:
数据是否反映真实市场情况:
不同数据源是否一致:
数据是否及时更新:
| 异常类型 | 特征 | 检测方法 | 处理策略 |
|---|---|---|---|
| 价格异常 | 超出合理范围、跳空过大 | 统计检验、阈值检测 | 标记、插补或删除 |
| 成交量异常 | 异常放大或缩小 | 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
建立完整的数据质量监控体系:1) 数据接入时实时校验 2) 批处理时自动检查 3) 可视化监控大屏 4) 异常报警机制 5) 定期数据质量报告。这样可以及早发现和解决问题。