4、变量衍生基础:衍生变量的意义、常见衍生方法(滞后、差分、滚动统计)

原始因子数据往往只包含某一时刻的截面信息,缺乏时间序列上的动态特征。变量衍生(Feature Engineering)正是通过数学变换,从原始变量中提取出更具预测能力的新变量,从而捕捉市场微观结构、趋势动量与波动聚集等非线性规律。本节将系统阐述衍生变量的核心价值,并逐一讲解三种最基础的衍生方法:滞后、差分与滚动统计。

4.1 衍生变量的意义

在量化因子研究中,原始数据通常以“时间 × 股票”的矩阵形式存在。直接使用原始值作为因子,往往存在以下局限:

  • 信息滞后性:当前价格已包含历史信息,但原始值无法直接反映变化趋势。
  • 缺乏动态视角:截面比较只能看到相对强弱,无法刻画个股自身的时间序列行为。
  • 噪声干扰:单期数据受微观结构噪声影响大,需要平滑或差分来提取信号。
核心观点: 变量衍生的本质是将“静态截面”转化为“动态时序特征”,使因子能够同时包含水平、趋势、波动与周期信息,从而提升IC(信息系数)的稳定性与显著性。

下表总结了原始变量与衍生变量在信息维度上的差异:

维度 原始变量 衍生变量
时间信息 仅当前时刻 包含历史窗口信息
趋势捕捉 无 差分、移动平均可提取趋势
波动刻画 无 滚动标准差可度量波动
噪声水平 高(单点噪声) 低(平滑或差分后更稳定)
IC贡献 短期不稳定 中长期更显著

4.2 常见衍生方法

以下三种方法构成了变量衍生的基石,几乎所有高阶衍生(如动量因子、反转因子、波动率因子)都建立在此基础之上。

4.2.1 滞后(Lag)

滞后操作将当前时刻的变量向后平移若干期,用于对齐不同时间点的数据,或构造自回归特征。其数学表达式为:

Lag(X, k) = X_{t - k}

其中 k 为滞后阶数。在量化研究中,滞后变量常用于:

  • 构造自回归因子:用过去收益预测未来收益。
  • 对齐不同频率数据:将日频因子与月频收益对齐。
  • 避免未来信息:确保因子在回测时只使用已知数据。
实战注意: 滞后阶数 k 的选择需结合数据频率与信号衰减速度。日频数据常用 k=1~5,周频数据常用 k=1~2。过大的 k 会导致信息衰减严重,IC 趋于零。

4.2.2 差分(Difference)

差分计算相邻两期或多期之间的变化量,用于消除趋势、提取增量信息。一阶差分公式为:

Diff(X, 1) = X_t - X_{t-1}

高阶差分(如二阶差分)可捕捉加速度信息:

Diff(X, 2) = (X_t - X_{t-1}) - (X_{t-1} - X_{t-2})

差分变量的典型应用场景:

  • 价格收益率:对数价格的一阶差分即为对数收益率。
  • 成交量变化:成交量差分可反映资金进出强度。
  • 因子动量:因子值本身的差分可作为因子变化的代理变量。
避坑提示: 差分操作会减少有效样本量(每阶差分损失一期数据)。对于短时间序列(如上市不足一年的股票),过度差分可能导致样本不足,IC 估计不稳定。

4.2.3 滚动统计(Rolling Statistics)

滚动统计在固定长度的时间窗口内计算统计量,是最常用的平滑与特征提取方法。常见滚动统计量包括:

统计量 公式(窗口长度 N) 捕捉的信息
滚动均值 MA = (1/N) * Σ X_{t-i} 趋势方向与平均水位
滚动标准差 Std = sqrt( (1/N) * Σ (X_{t-i} - MA)² ) 波动率与风险水平
滚动最大值 Max = max(X_{t-1}, ..., X_{t-N}) 近期极值压力位
滚动最小值 Min = min(X_{t-1}, ..., X_{t-N}) 近期极值支撑位
滚动偏度 Skew = (1/N) * Σ ((X_{t-i} - MA) / Std)³ 分布不对称性
滚动峰度 Kurt = (1/N) * Σ ((X_{t-i} - MA) / Std)⁴ - 3 尾部风险与极端值频率

窗口长度 N 的选择直接影响衍生变量的性质:

  • 短窗口(N=5~10):对短期变化敏感,适合捕捉反转信号。
  • 中窗口(N=20~60):平衡平滑与响应速度,适合趋势跟踪。
  • 长窗口(N=120~250):强平滑,适合刻画长期均值回归特征。
变量衍生三大基础方法 变量衍生三大基础方法 原始变量 X_t 滞后 Lag(X, k) 差分 Diff(X, d) 滚动统计 Roll(X, N) 方法对比说明 • 滞后:平移时间轴,构造自回归特征,对齐不同频率数据。 • 差分:消除趋势,提取增量变化,常用于收益率与变化量因子。 • 滚动统计:在固定窗口内计算均值/标准差/极值等,刻画趋势与波动。 • 三者可组合使用:如对滚动均值再做差分,得到“动量加速度”因子。

4.3 衍生方法的组合应用

在实际因子研究中,单一衍生方法往往不足以充分提取信息。更常见的做法是将三种方法组合使用,形成复合衍生变量。以下是一个典型的组合流程:

  1. 原始数据:日频收盘价 Close_t。
  2. 一阶差分:计算日收益率 Ret_t = Close_t / Close_{t-1} - 1。
  3. 滚动统计:对收益率计算 20 日滚动均值 MA_Ret_t 与滚动标准差 Std_Ret_t。
  4. 滞后:将 MA_Ret_t 滞后 1 期,避免未来信息,得到因子 Factor_t = MA_Ret_{t-1}。
  5. 二次衍生:对 Std_Ret_t 再做差分,得到波动率变化量 Delta_Vol_t。
组合衍生示例代码(Python 伪代码):
import pandas as pd
import numpy as np

# 假设 df 包含股票日频收盘价,index 为日期,columns 为股票代码
close = df['Close']

# 1. 差分:计算日收益率
ret = close.pct_change()

# 2. 滚动统计:20日滚动均值与标准差
ma_ret = ret.rolling(window=20).mean()
std_ret = ret.rolling(window=20).std()

# 3. 滞后:将滚动均值滞后1期,避免未来信息
factor = ma_ret.shift(1)

# 4. 二次衍生:波动率变化量
delta_vol = std_ret.diff()

# 最终因子矩阵
final_factor = pd.DataFrame({
    'momentum_factor': factor,
    'vol_change': delta_vol
})
组合衍生流程示例 组合衍生流程:从收盘价到复合因子 收盘价 Close 收益率 Ret MA_Ret + Std_Ret 滞后1期 差分 → Delta_Vol 复合因子:动量 + 波动率变化

4.4 衍生变量的IC分析要点

生成衍生变量后,必须通过IC分析验证其有效性。以下是针对衍生变量的IC分析要点:

  • 滞后阶数敏感性:不同滞后阶数的IC可能差异显著,建议扫描 k=1~20 的IC序列,选择峰值对应的阶数。
  • 窗口长度优化:滚动窗口 N 过小则噪声大,过大则信号迟钝。可通过滚动IC(Rolling IC)观察不同 N 下的IC稳定性。
  • 多重共线性:多个衍生变量之间可能存在高度相关(如滚动均值与原始变量的滞后),需进行相关性检验或使用PCA降维。
  • 衰减速度:差分变量的IC通常衰减较快(信息快速被市场吸收),滚动统计量的IC衰减较慢(趋势信息更持久)。
最佳实践: 在构建因子库时,建议对每个原始变量生成一组标准衍生变量(滞后1/5/20、差分1/5、滚动均值5/20/60、滚动标准差5/20/60),然后通过IC筛选与相关性分析,保留最有效的5~10个衍生变量进入最终模型。