2. 金融数据特征基础

在金融建模中,特征选择与稳定性验证的前提,是先把“数据长什么样、特征从哪来、质量如何、能否解释”这四件事说清楚。金融数据与图像、文本等非结构化数据不同,它具有强时间性、低信噪比、非平稳和制度依赖等特性。若跳过特征基础直接调模型,往往会在回测中表现优异,却在实盘中迅速失效。本节围绕金融数据类型、特征分类、常见特征工程方法、数据质量与可解释性四个模块展开。

一、核心原理:金融数据的四种基本类型

金融数据可按“观测频率”和“生成机制”划分为四类,每类对应不同的特征构造逻辑:

  • 截面数据:同一时点多个资产的价格、市值、估值指标,用于横截面比较与排序。
  • 时间序列数据:单资产按时间排列的价格、成交量、收益率,是动量、波动率特征的基础。
  • 面板数据:截面与时间的结合,如多只股票多日的财务与行情数据,需同时处理个体与时间效应。
  • 事件与文本数据:财报公告、新闻、舆情、宏观发布,通常转化为事件计数、情感得分或时间衰减权重。

理解数据类型决定了特征的对齐方式:截面特征需按同一交易日对齐,时序特征需防止未来函数,面板特征需处理缺失与幸存者偏差。

二、特征分类与常见工程方法

金融特征通常分为五类:价格类(收益率、动量、反转)、波动类(已实现波动率、ATR、GARCH 残差)、流动性类(换手率、Amihud 非流动性、买卖价差)、基本面类(PE、PB、ROE、营收增速)、情绪与事件类(新闻情感、搜索指数、公告密度)。

常见特征工程方法包括:差分与收益率化以消除量纲和趋势;滚动窗口统计(均值、标准差、分位数)以捕捉时变;滞后与领先构造以表达预测关系;分位数标准化与截面排序以增强稳健性;以及基于经济逻辑的组合,如“动量×低波动”。

示例:滚动波动率与截面排序特征构造

import pandas as pd
import numpy as np

# 假设 df 含 date, asset, close, volume
df = df.sort_values(["asset", "date"])
df["ret"] = df.groupby("asset")["close"].pct_change()

# 20日滚动波动率
df["vol_20"] = (df.groupby("asset")["ret"]
                  .rolling(20).std()
                  .reset_index(level=0, drop=True))

# 截面分位数排序(每日)
df["vol_rank"] = df.groupby("date")["vol_20"].rank(pct=True)

# 动量:过去20日累计收益
df["mom_20"] = (df.groupby("asset")["ret"]
                  .rolling(20).sum()
                  .reset_index(level=0, drop=True))

下表汇总了常见特征类别、典型指标与主要风险:

特征类别典型指标主要风险
价格类收益率、动量、反转过拟合历史行情、换手过高
波动类已实现波动率、ATR波动聚集导致稳定性差
流动性类换手率、Amihud小盘股失真、幸存者偏差
基本面类PE、PB、ROE财报滞后、行业不可比
情绪事件类情感得分、公告密度数据源不稳定、噪声大

三、数据质量与特征可解释性

金融数据质量直接影响特征稳定性。常见问题包括:缺失值(停牌、未披露)、异常值(涨跌停、错误报价)、时间对齐错误(财报公告日与报告期混淆)、幸存者偏差(退市样本被剔除)以及前视偏差(使用未来信息)。处理策略应遵循“先诊断、后处理”:缺失值区分随机缺失与结构性缺失,异常值结合业务规则而非简单截断,时间对齐以“可获取时间”为准。

可解释性检查清单:

  • 该特征的经济含义是什么?能否用一句话说明其预测逻辑?
  • 特征在不同市场 regime(牛、熊、震荡)下方向是否一致?
  • 特征与目标变量的关系是否稳定,还是仅在某段样本内显著?
  • 特征是否依赖特定数据源,若数据源变更是否失效?

常见误区:把“统计显著”等同于“可解释”。一个特征在回测中 IC 很高,但若无法说明其经济来源,很可能只是样本内噪声。另一个误区是过度依赖复杂变换,导致特征含义模糊,后续稳定性验证时无法定位失效原因。

四、案例复盘:从原始数据到可解释特征

假设我们要为 A 股构建月度选股模型。原始数据包括日行情、季度财报和新闻情感。第一步,将日行情聚合为月度收益率、波动率和换手率;第二步,财报数据按公告日对齐,避免使用报告期未来信息;第三步,新闻情感按日衰减加权为月度得分;第四步,对所有特征做截面分位数标准化,消除行业与市值影响。复盘时发现,动量特征在 2015 年股灾期间方向反转,说明该特征对市场状态敏感,需引入 regime 条件或缩短窗口。这一过程体现了“特征基础—质量诊断—可解释性验证”的闭环。

金融数据特征基础:类型—工程—质量—解释 截面数据 多资产同一时点 时间序列 单资产按时间 面板数据 截面×时间 事件与文本 公告/新闻/舆情 特征工程:差分/收益率 · 滚动统计 · 滞后构造 · 截面标准化 · 经济逻辑组合 价格类 · 波动类 · 流动性类 · 基本面类 · 情绪事件类 数据质量诊断 缺失 · 异常 · 时间对齐 · 幸存者偏差 · 前视偏差 先诊断,后处理;以可获取时间为准 特征可解释性 经济含义 · 跨 regime 方向 · 稳定性 · 数据源依赖 统计显著 ≠ 可解释,需闭环验证

综上,金融特征基础不是简单的数据清洗,而是贯穿“类型识别—工程构造—质量诊断—可解释验证”的系统工程。只有把每一步做扎实,后续的特征选择与稳定性验证才有可靠的前提。