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 模型框架,核心步骤为:

  1. 原始特征计算:例如市值(取对数)、账面市值比(Book-to-Price)、过去 12 个月动量(累计收益)、历史波动率等。
  2. Z-Score 标准化:对每个特征在截面(所有资产)上做标准化,消除量纲影响。
  3. 极值处理:将标准化后的值截断在 ±3 个标准差范围内,避免极端值主导。
  4. 正交化(可选):对高度相关的风格因子(如价值与成长)做 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 因子暴露计算流程总览

下图展示了从原始数据到因子暴露矩阵的完整计算链路:

因子暴露计算流程 原始数据输入 因子定义库 资产持仓数据 因子暴露计算引擎 市场Beta回归 | 行业哑变量 | 风格Z-Score | 信用利差久期 | 流动性指标 因子暴露矩阵 (N x K) 风险归因 Drift 监控 组合优化

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 数据库