3、金融数据处理:数据源类型、数据清洗、特征工程与数据标准化方法
智能投顾的核心竞争力在于“数据→信息→信号→决策”的转化效率。原始金融数据如同未冶炼的矿石,直接输入模型不仅无法产生alpha,反而会因噪声、缺失、量纲差异和幸存者偏差等问题导致策略失效。本章将系统拆解金融数据处理的三层架构:数据源选型(解决“有什么”)、数据清洗(解决“怎么净”)、特征工程与标准化(解决“怎么用”)。这是连接原始行情与算法模型的必经之路,也是投顾系统稳定性的基石。
3.1 数据源类型:从行情到另类数据的多维图谱
核心原理
智能投顾的数据需求可划分为四个层级:行情数据(市场交易行为的直接记录)、基本面数据(企业价值与宏观环境的量化描述)、另类数据(非传统渠道的增量信息)、标签与参考数据(第三方加工后的结构化判断)。不同数据源在频率、时延、覆盖度和成本上差异显著,直接决定了策略的适用频段(高频、中频、低频)。
数据源对比与选型
| 数据类别 | 典型字段 | 更新频率 | 主要用途 | 成本/难度 |
|---|---|---|---|---|
| L1/L2 行情 | 最新价、买卖五档、成交量 | 毫秒级/秒级 | 择时、执行优化 | 中 |
| Tick 数据 | 逐笔成交、委托队列 | 微秒级 | 高频策略、冲击成本建模 | 高 |
| K线(分钟/日) | OHLCV、复权因子 | 分钟/日 | 趋势跟踪、回测基准 | 低 |
| 财务报表 | 利润表、资产负债表、现金流 | 季度/年度 | 价值因子、质量因子 | 低 |
| 宏观指标 | GDP、CPI、PMI、利率 | 月度/季度 | 大类资产配置、行业轮动 | 低 |
| 另类数据 | 卫星图像、电商流水、舆情情绪 | 日/周/实时 | 高频基本面、事件驱动 | 极高 |
| 分析师预期 | 评级、目标价、盈利预测修正 | 日/事件驱动 | 预期差因子 | 中 |
实战选型要点
- 频段匹配:日内高频策略必须使用Tick或L2快照,日频多因子模型使用日K线与财报即可,避免过度采购高成本数据。
- 复权处理:回测必须使用后复权或前复权数据,否则除权除息会造成价格跳空,导致收益计算失真。
- 另类数据的“信号半衰期”:舆情数据的时效性极强,通常3-5天后alpha衰减至50%以下,需设计快速衰减的权重。
3.2 数据清洗:从原始数据到可用数据
核心原理
数据清洗的目标不是“删除脏数据”,而是在保留信息量的前提下,将数据修正为符合模型输入假设的形态。金融数据常见的“脏”包括:缺失(停牌、未成交)、异常(错单、涨跌停)、不一致(复权因子错误、时间戳偏移)、以及结构性偏差(幸存者偏差)。
清洗操作流程
- 缺失值处理:对于时间序列,优先使用前向填充(FFill)处理停牌;对于截面数据,使用行业均值或中位数填充;若缺失比例超过30%,考虑剔除该特征。
- 异常值检测:使用中位差(MAD)或分位数法(如1%/99%截断)。例如,某股票单日涨幅超过20%(除新股外),大概率是数据错误,需与交易所公告交叉验证。
- 时间戳对齐:不同数据源的时区、采样时刻不一致(如美股盘后财报与A股收盘),需统一转换为UTC或交易所本地时间,并按策略频率重采样。
- 复权与拼接:使用复权因子将历史价格调整为可比口径,并检查除权除息日前后是否存在价格跳空。
- 幸存者偏差修正:回测股票池必须包含已退市、已停牌的股票,否则会高估策略收益。
案例拆解:日频多因子模型的数据清洗实战
背景与约束:某投顾团队开发A股日频多因子模型,数据源为Wind与聚宽,回测区间2015-2023年。初始股票池为全A股(约5000只)。
初始现象:模型在2015-2017年回测年化收益达25%,但2018-2020年骤降至8%,且最大回撤超过40%。
分析过程:检查数据发现两个问题:① 股票池仅包含当前上市股票,未纳入2018-2020年间退市的约200只股票,导致小盘股因子收益虚高;② 2017年后部分股票存在长期停牌(超过3个月),前向填充导致因子值失真。
操作步骤:
1. 从Wind导出历史退市名单,与当前股票池合并,构建“动态股票池”;
2. 对停牌超过20个交易日的股票,在因子计算中标记为缺失,而非前向填充;
3. 使用MAD方法剔除单日收益率超过5%的异常样本(经公告核实为数据错误)。
结果对比:修正后,2018-2020年回测年化收益修正为12%,最大回撤降至22%,更接近实盘表现。
复盘经验:数据清洗的“隐性成本”在于时间消耗,但若不处理,策略上线后实盘与回测的偏差可能超过50%。
3.3 特征工程与数据标准化
核心原理
特征工程是将原始数据转化为模型可有效利用的“信号”的过程。金融特征可分为三类:基础特征(价格、成交量)、衍生特征(动量、波动率、流动性)、复合特征(因子组合、行业相对强弱)。标准化则是消除量纲和分布差异,使不同特征在模型中具有可比性。
特征构建与标准化方法
| 方法类别 | 具体操作 | 适用场景 | 注意事项 |
|---|---|---|---|
| 动量因子 | 过去N日收益率(N=5,20,60) | 趋势跟踪 | 避免重叠窗口导致的自相关 |
| 波动率因子 | 已实现波动率、GARCH估计 | 风险定价 | 需区分已实现与隐含波动率 |
| 流动性因子 | Amihud非流动性指标、换手率 | 小市值/交易成本模型 | 与成交量高度相关,注意共线性 |
| Z-score标准化 | (x - μ) / σ | 正态分布特征 | 对异常值敏感,需先截尾 |
| Min-Max缩放 | (x - min) / (max - min) | 有界特征(如PE、PB) | 对极端值敏感,需缩尾 |
| 排名标准化 | 将数值转换为横截面百分位排名 | 截面因子(如估值) | 消除偏态,但丢失幅度信息 |
操作流程:特征工程流水线
- 特征衍生:基于原始价格/成交量计算动量、均线偏离、量价相关性等。
- 缺失与无穷值处理:将Inf替换为NaN,再按特征缺失策略处理。
- 去极值:使用MAD或分位数截断(如上下1%分位数)。
- 标准化:对截面数据使用Z-score或排名标准化;对时间序列使用滚动Z-score(避免未来函数)。
- 相关性检验:计算特征间相关系数,剔除相关性高于0.8的冗余特征,或使用PCA降维。
案例拆解:标准化方法选择对模型的影响
场景:某模型同时使用市盈率(PE)和过去20日动量两个特征。PE分布右偏严重(部分股票PE>100),动量近似正态分布。
问题:若直接使用Z-score标准化,PE的极端值会主导模型权重,导致模型对高估值股票过度敏感。
解决方案:对PE使用“排名标准化”(将PE转换为0-1的百分位排名),对动量使用Z-score。处理后,两个特征的分布均接近均匀/正态,模型稳定性显著提升。
结果:模型夏普比率从1.1提升至1.4,且对PE极端值的敏感度下降60%。
代价:排名标准化丢失了PE的水平信息,因此需在特征集中保留一个“原始PE对数”作为辅助特征。
3.4 常见误区与总结复盘
误区清单
- 误区一:数据越多越好——另类数据噪声大、成本高,应优先验证增量信息,而非盲目堆砌。
- 误区二:清洗过度——将异常值全部剔除可能导致样本选择偏差,例如剔除所有涨跌停样本会低估极端行情风险。
- 误区三:标准化参数使用全样本——在回测中,必须使用“截至当前时点”的数据计算均值和标准差,否则会引入未来信息。
- 误区四:忽略数据对齐——财报发布日与实际数据日期存在滞后,需使用“可获取时间”而非“报告期”进行对齐。
总结复盘
金融数据处理的核心原则可概括为“可追溯、可回放、可解释”。数据源选型决定了策略的上限,数据清洗决定了回测与实盘的一致性,特征工程与标准化决定了模型的收敛速度与鲁棒性。建议团队建立统一的数据处理平台,将清洗规则、特征计算逻辑、标准化参数全部版本化管理,确保每次策略迭代都能复现历史结果。
□ 股票池是否包含退市/停牌样本?
□ 复权因子是否一致?除权除息日是否处理?
□ 标准化参数是否使用滚动窗口?
□ 特征是否经过相关性检验?
□ 数据清洗日志是否完整保存?