2. 金融数据基础
在进入截面回归与因子收益率估计之前,必须先建立对“数据形态”的清晰认知。很多看似复杂的估计错误,根源并不在回归方法,而在于把时间序列数据与截面数据混用、把价格当收益率、把缺失值当零收益。本章围绕四类基础对象展开:资产收益率、因子数据、截面数据、时间序列数据,并给出可落地的清洗与预处理清单。
一、核心原理:四种数据对象的关系
资产收益率是回归的被解释变量。它必须满足“同一资产、同一时间、同一频率”的可比性。常见收益率包括简单收益率与对数收益率:
简单收益率: r_t = P_t / P_{t-1} - 1
对数收益率: r_t = ln(P_t / P_{t-1})
简单收益率便于跨资产加权组合,对数收益率便于时间加总。因子收益率估计通常使用简单收益率,因为组合收益是成分股收益的加权平均,权重与简单收益线性一致。
因子数据是解释变量,分为三类:
- 市场因子:如指数收益、市场组合超额收益。
- 风格因子:如市值、账面市值比、动量、波动率、流动性。
- 宏观因子:如利率变化、信用利差、汇率变动。
时间序列数据是“同一对象、多个时间点”的观测,例如某只股票过去 250 个交易日的收益率。它用于估计时序 beta、波动率、自相关。截面数据是“同一时间点、多个对象”的观测,例如 2024 年 6 月 30 日全市场 5000 只股票的市值与收益率。截面回归的因变量与自变量都必须是截面数据。
关键区分:时间序列回答“一只股票随时间如何变化”;截面数据回答“同一时刻不同股票为何收益不同”。因子收益率估计的第二步——横截面回归——必须使用截面数据,而不是把时间序列堆叠后直接回归。
二、方法流程:从原始数据到可回归样本
一个稳健的流程通常包含六步:
- 对齐频率:日频、周频、月频必须统一。因子暴露通常月频更新,收益率用月频。
- 对齐时点:因子值必须使用“可得时点”之前的信息,避免前视偏差。例如 6 月末因子只能用 6 月 30 日收盘后可得数据。
- 处理缺失:剔除、插值或标记。收益率缺失通常剔除;因子缺失可行业中位数填充并加缺失指示变量。
- 去极值:对因子做 MAD 或分位数缩尾,避免极端值主导回归。
- 标准化:截面 z-score 或排序标准化,使不同量纲因子可比。
- 中性化:对行业与市值回归取残差,得到纯净因子暴露。
下面是一个可复用的预处理参数示例:
winsorize: MAD, n=3
standardize: cross_section_zscore
neutralize: industry + log_market_cap
missing: drop if return missing; median fill for factor
frequency: monthly
lag: factor lag = 1 month
三、案例/场景:一个月频截面回归的数据准备
假设我们要估计 2024 年 7 月的规模因子收益率。数据准备如下:
- 收益率:2024 年 7 月每只股票的月简单收益率。
- 因子暴露:2024 年 6 月末的 log 市值,并做截面标准化。
- 样本空间:剔除 ST、上市不足 6 个月、停牌超过 10 日的股票。
- 缺失处理:收益率缺失直接剔除;市值缺失用行业中位数填充。
若把 6 月末因子与 7 月收益匹配,则因子滞后一个月,避免使用未来信息。若误用 7 月末市值解释 7 月收益,就会引入前视偏差,导致因子收益率被高估。
| 数据对象 | 维度 | 典型用途 | 常见错误 |
|---|---|---|---|
| 资产收益率 | 资产 × 时间 | 被解释变量 | 用价格代替收益率 |
| 因子数据 | 资产 × 时间 × 因子 | 解释变量 | 因子与收益同期匹配 |
| 时间序列数据 | 单资产 × 多时间 | 估计 beta、波动率 | 直接用于截面回归 |
| 截面数据 | 多资产 × 单时间 | 估计因子收益率 | 混入不同时间点 |
四、误区/复盘:清洗与预处理中的高频陷阱
误区一:把缺失收益率填 0。停牌或退市期间的 0 收益会严重低估风险,并扭曲因子与收益关系。正确做法是剔除或使用可交易样本。
误区二:先标准化再中性化。顺序应为先去极值、再中性化、最后标准化。若先标准化,中性化回归的截距与残差尺度会受影响。
复盘建议:每次回归前输出一张“样本审计表”,记录样本数、缺失数、极值缩尾数、行业分布、市值分布。这样可以在因子收益率异常时快速定位是数据问题还是模型问题。
最后强调:截面回归与因子收益率估计的可靠性,首先取决于数据形态是否正确。收益率、因子、时间序列与截面数据各有其位;清洗与预处理不是附属步骤,而是估计结果可信度的第一道防线。