2. 风险因子体系:常见的风险因子分类(市场、行业、风格、信用、流动性)、因子暴露的计算方法
风险因子体系是组合风险归因的基石。只有将组合收益与风险拆解到一组可解释、可度量的因子上,才能回答“风险从哪里来”以及“风险如何变化”这两个核心问题。本节将系统梳理五大类风险因子,并给出因子暴露的标准化计算方法。
2.1 风险因子分类框架
从量化风控的实践视角,风险因子通常按驱动来源分为以下五类:
| 因子类别 | 核心驱动 | 典型因子示例 | 适用资产 |
|---|---|---|---|
| 市场因子 | 整体市场涨跌 | 股票市场指数收益、债券基准收益率、商品指数 | 所有资产 |
| 行业因子 | 特定行业/板块的共性波动 | GICS行业因子、申万一级行业因子 | 股票、信用债 |
| 风格因子 | 资产内在特征(价值、动量、规模等) | 规模、价值、动量、波动率、成长、质量 | 股票、部分另类资产 |
| 信用因子 | 发行主体信用质量变化 | 信用利差、评级迁移、违约概率 | 信用债、贷款、CDS |
| 流动性因子 | 交易成本与市场深度 | 买卖价差、Amihud非流动性指标、换手率 | 股票、债券、衍生品 |
关键认知: 五类因子并非完全正交。例如,信用因子在极端市场环境下会与流动性因子高度相关;风格因子中的“低波动”因子往往在市场下行时表现出防御属性。因子体系的构建需要在解释力与正交性之间取得平衡。
2.2 因子暴露的计算方法
因子暴露(Factor Exposure)衡量的是单个资产或整个组合对某一风险因子的敏感度。计算方法因因子类型而异,但核心逻辑一致:通过回归或属性映射,将资产收益分解到因子上。
2.2.1 市场因子暴露:Beta 回归法
最经典的方法是对资产收益率与市场基准收益率做时间序列回归:
R_i(t) = α_i + β_i * R_m(t) + ε_i(t)
其中:
R_i(t) = 资产 i 在 t 期的超额收益率
R_m(t) = 市场基准在 t 期的超额收益率
β_i = 市场因子暴露(即传统 Beta)
α_i = 超额收益(Alpha)
ε_i(t) = 残差项
实际应用中,通常使用 60 个月(或 252 个交易日)的滚动窗口估计 β_i,并做 Newey-West 标准误调整以处理异方差与自相关。
2.2.2 行业因子暴露:虚拟变量法
行业因子暴露通常采用哑变量(Dummy Variable)方式赋值:
- 若资产 i 属于行业 j,则其对行业因子 j 的暴露为 1,对其他行业因子的暴露为 0。
- 对于跨行业经营的公司,可按营收占比或市值占比进行加权分配,暴露值介于 0~1 之间。
实践建议: 行业分类标准的选择直接影响归因结果。建议使用 GICS(全球行业分类标准)或申万行业分类,并定期(如每季度)根据公司主营业务变化更新行业归属。
2.2.3 风格因子暴露:Z-Score 标准化法
风格因子暴露的计算通常遵循 Barra 模型框架,核心步骤为:
- 原始特征计算:例如市值(取对数)、账面市值比(Book-to-Price)、过去 12 个月动量(累计收益)、历史波动率等。
- Z-Score 标准化:对每个特征在截面(所有资产)上做标准化,消除量纲影响。
- 极值处理:将标准化后的值截断在 ±3 个标准差范围内,避免极端值主导。
- 正交化(可选):对高度相关的风格因子(如价值与成长)做 Gram-Schmidt 正交化,提升因子独立性。
# 风格因子暴露计算伪代码(Python 风格)
import numpy as np
def compute_style_exposure(feature_values):
# 1. Z-Score 标准化
mean = np.mean(feature_values)
std = np.std(feature_values)
z_scores = (feature_values - mean) / std
# 2. 极值截断
z_scores = np.clip(z_scores, -3, 3)
return z_scores
2.2.4 信用因子暴露:利差敏感度法
信用因子暴露通常通过以下两种方式度量:
- 利差久期(Spread Duration):衡量债券价格对信用利差变化的敏感度。对于投资级债券,利差久期 ≈ 修正久期;对于高收益债,需额外考虑违约风险。
- 信用评级映射:将外部评级(穆迪、标普、惠誉)或内部评级映射为连续分数(如 1~10),作为信用因子的代理暴露。
2.2.5 流动性因子暴露:交易成本模型法
流动性因子暴露的常用计算方式:
| 方法 | 计算公式 | 适用场景 |
|---|---|---|
| 相对买卖价差 | (Ask - Bid) / MidPrice | 高频数据可用时 |
| Amihud 非流动性指标 | |R| / Volume(日收益率绝对值除以日成交额) | 日频数据,适用广泛 |
| 换手率 | Volume / Shares Outstanding | 衡量交易活跃度 |
在组合层面,流动性因子暴露通常取各资产流动性指标的市值加权平均值。
2.3 因子暴露计算流程总览
下图展示了从原始数据到因子暴露矩阵的完整计算链路:
2.4 组合层面因子暴露聚合
得到各资产的因子暴露后,组合对因子 k 的总暴露为各资产暴露的市值加权平均:
Portfolio_Exposure_k = Σ (w_i * Exposure_i_k)
其中:
w_i = 资产 i 在组合中的市值权重
Exposure_i_k = 资产 i 对因子 k 的暴露
Σ w_i = 1(组合权重归一化)
常见陷阱: 当组合包含衍生品(如期货、期权)时,其名义本金暴露可能远超市值权重。此时应使用Delta 调整后的名义暴露代替简单市值权重,否则会严重低估组合的真实因子暴露。
2.5 因子暴露的更新频率与数据源
| 因子类型 | 推荐更新频率 | 常用数据源 |
|---|---|---|
| 市场因子 | 每日 | 交易所行情、Bloomberg、Wind |
| 行业因子 | 每季度(或公司事件驱动) | GICS/申万分类、公司财报 |
| 风格因子 | 每月 | Barra、Axioma、MSCI 因子库 |
| 信用因子 | 每月(或评级调整时) | 穆迪/标普/惠誉评级、CDS 曲线 |
| 流动性因子 | 每周或每月 | Tick 级行情、TAQ 数据库 |