3. 特征工程基础:特征分类、衍生与标准化

在金融压力测试场景中,特征工程是连接原始数据与风险模型的核心桥梁。本章聚焦于特征的分类体系、衍生方法以及数值预处理技术,为后续构建高鲁棒性的压力测试特征服务奠定基础。

3.1 特征分类:宏观、微观、市场与信用

金融压力测试的特征通常按数据来源与业务含义划分为四大类。每一类特征在压力情景下的敏感性与传导路径各不相同。

特征类别 典型指标 压力情景下的行为 数据频率
宏观特征 GDP增速、CPI、失业率、M2 滞后反映经济周期,趋势性强 月度/季度
微观特征 企业资产负债率、现金流覆盖率 个体异质性高,受宏观传导影响 季度/年度
市场特征 股票指数、波动率、信用利差 高频率、高波动,对冲击反应迅速 日度/分钟级
信用特征 违约概率(PD)、违约损失率(LGD) 尾部风险集中,与宏观情景强相关 月度/季度
实践要点:在压力测试特征服务中,宏观与市场特征通常作为“情景驱动因子”,而微观与信用特征作为“组合响应变量”。特征分类的清晰度直接影响情景传导模型的准确性。

3.2 特征衍生方法

原始特征往往无法直接刻画压力情景下的非线性关系与尾部风险。特征衍生通过数学变换、时序聚合与交叉组合,生成更具解释力的新特征。

3.2.1 常用衍生方法清单

  • 滞后与差分:捕捉时序依赖,如 ΔGDP_t = GDP_t - GDP_{t-1}。
  • 滚动统计量:滚动均值、标准差、最大值、最小值,反映近期趋势与波动。
  • 比率与对数变换:如负债率、对数收益率,稳定方差并增强正态性。
  • 交叉特征:宏观因子 × 行业敏感系数,模拟情景传导强度。
  • 分位数与排序:将连续变量映射为分位数等级,降低异常值影响。
# 示例:特征衍生伪代码(Python风格)
import pandas as pd
import numpy as np

def derive_features(df):
    # 滞后特征
    df['gdp_lag1'] = df['gdp'].shift(1)
    # 滚动波动率
    df['vol_20d'] = df['return'].rolling(20).std()
    # 交叉特征:宏观冲击 × 行业敞口
    df['macro_exposure'] = df['gdp_growth'] * df['industry_beta']
    # 对数变换
    df['log_asset'] = np.log(df['total_asset'] + 1)
    return df
注意:衍生特征必须避免“未来信息泄露”。在压力测试回测中,所有滚动统计量应仅使用历史窗口内的数据,严禁引入未来值。

3.3 特征标准化与归一化技术

不同特征的量纲与分布差异巨大,直接输入模型会导致权重失衡。标准化与归一化是特征预处理的标准步骤,尤其在压力测试中,需保证特征在极端情景下的数值稳定性。

3.3.1 核心方法对比

方法 公式 输出范围 适用场景
Z-score 标准化 z = (x - μ) / σ 无固定范围,均值为0 数据近似正态分布,如收益率
Min-Max 归一化 x' = (x - min) / (max - min) [0, 1] 有界特征,如比率、概率
Robust 缩放 x' = (x - median) / IQR 无固定范围 存在异常值,如极端损失
分位数变换 映射到均匀分布或正态分布 [0, 1] 或标准正态 非对称分布,如违约率

3.3.2 压力测试中的特殊考量

  • 情景外推:压力情景下的特征值可能超出历史范围,Min-Max 归一化需设定业务上限,避免截断。
  • 时序一致性:标准化参数(μ, σ, min, max)必须在训练窗口内计算,并固定用于后续所有情景。
  • 分组标准化:不同行业或资产类别的特征应分别标准化,保留组间差异。
# 示例:标准化与归一化实现
from sklearn.preprocessing import StandardScaler, MinMaxScaler

scaler_z = StandardScaler()
scaler_mm = MinMaxScaler(feature_range=(0, 1))

# 假设 X_train 为训练集特征矩阵
X_train_z = scaler_z.fit_transform(X_train)
X_train_mm = scaler_mm.fit_transform(X_train)

# 压力情景数据使用同一参数变换
X_scenario_z = scaler_z.transform(X_scenario)
风险提示:在压力测试中,切勿对全量数据(含未来情景)进行全局标准化。必须严格区分“历史训练期”与“情景预测期”,否则将引入前视偏差,导致压力测试结果失真。

3.4 特征分类与衍生流程总览

下图展示了从原始数据到标准化特征服务的完整流程,涵盖分类、衍生与预处理三个核心阶段。

特征工程流程总览 特征工程流程总览 原始数据 特征分类 特征衍生 宏观 微观 市场 信用 滞后差分 滚动统计 交叉特征 分位数 标准化 / 归一化 压力测试特征服务 关键约束 参数固定 + 无未来信息

3.5 特征标准化效果对比

以下 SVG 展示了同一组原始数据(模拟违约率分布)经过不同标准化方法后的分布形态变化,帮助理解各方法的实际效果。

标准化效果对比 不同标准化方法效果对比(模拟数据) 原始数据 范围: [0.01, 0.35] 均值: 0.08 偏态: 右偏 Z-score 均值: 0 标准差: 1 保留异常值 Min-Max 范围: [0, 1] 压缩极端值 依赖 min/max Robust 中位数: 0 IQR 缩放 抗异常值 选择建议 正态分布 → Z-score | 有界特征 → Min-Max | 存在极端损失 → Robust

3.6 本章小结

  • 特征分类是压力测试特征服务的起点,宏观、微观、市场、信用四类特征在情景分析中承担不同角色。
  • 特征衍生通过滞后、滚动、交叉与变换,增强特征对非线性风险与尾部事件的表达能力。
  • 标准化与归一化是模型稳定性的保障,需根据数据分布与压力情景特性选择合适方法,并严格避免前视偏差。