因子投资基础:因子定义、因子分类与因子暴露
因子投资是量化策略的核心方法论。一个因子(Factor)是指能够系统性地解释资产横截面收益率差异的某种共同特征或风险来源。理解因子的定义、分类、暴露与收益,是构建多因子模型和监控Rank IC稳定性的前提。
2.1 因子定义
在量化金融中,因子通常满足以下三个条件:
- 系统性:因子对一组资产(而非单个资产)的收益率具有共同解释力。
- 持续性:因子溢价在较长历史区间内统计显著,而非偶然噪声。
- 可投资性:因子可通过构建多空组合或衍生品进行交易与对冲。
核心公式: 因子模型的一般形式为 \( R_i - R_f = \alpha_i + \beta_{i1}F_1 + \beta_{i2}F_2 + \dots + \beta_{ik}F_k + \varepsilon_i \),其中 \( F_k \) 为因子收益率,\( \beta_{ik} \) 为资产 i 在因子 k 上的暴露。
2.2 因子分类
因子按驱动来源可分为两大类:风格因子与宏观因子。下表对比了二者的核心差异:
| 维度 | 风格因子 | 宏观因子 |
|---|---|---|
| 驱动来源 | 公司特征、市场微观结构 | 宏观经济变量、政策周期 |
| 典型代表 | 价值、动量、质量、低波、规模 | 利率、通胀、GDP增速、信用利差 |
| 构建方式 | 基于个股截面排序构建多空组合 | 基于宏观时间序列构建因子收益率 |
| 暴露含义 | 个股在该风格上的相对排名或Z-score | 资产对宏观冲击的敏感度(Beta) |
| 应用场景 | 选股、行业轮动、Smart Beta | 资产配置、风险预算、对冲 |
2.2.1 常见风格因子
- 价值因子:低市净率、低市盈率股票相对高估值股票具有超额收益。
- 动量因子:过去6-12个月涨幅较高的股票未来短期延续强势。
- 质量因子:高ROE、低杠杆、盈利稳定的公司表现更优。
- 低波因子:低波动率股票经风险调整后收益高于高波动股票。
- 规模因子:小市值公司长期具有溢价(Fama-French SMB)。
2.2.2 常见宏观因子
- 利率因子:期限利差变动对债券和权益资产的影响。
- 通胀因子:实际通胀预期变化对大宗商品和TIPS的驱动。
- 信用因子:信用利差扩张/收窄反映企业违约风险溢价。
- 经济增长因子:GDP超预期或PMI趋势对权益市场Beta的冲击。
实战提示: 在Rank IC稳定性监控中,风格因子是主要监控对象,因为其截面排序逻辑天然适合计算秩相关系数;宏观因子更多用于风险归因和情景分析。
2.3 因子暴露与因子收益
因子暴露(Factor Exposure)衡量某个资产对特定因子的敏感程度或载荷。对于风格因子,暴露通常通过标准化后的特征值(如Z-score)表示;对于宏观因子,暴露通过时间序列回归得到的Beta系数表示。
因子收益(Factor Return)是因子多空组合在单位时间内的收益率。在截面回归中,因子收益是回归系数;在时间序列回归中,因子收益是自变量。
二者通过以下关系连接:
- 截面回归(Barra模型):\( r_i = \sum_k X_{ik} f_k + u_i \),其中 \( X_{ik} \) 为暴露,\( f_k \) 为因子收益。
- 时间序列回归(Fama-French模型):\( r_i - r_f = \alpha_i + \beta_{i1} (r_{mkt} - r_f) + \beta_{i2} SMB + \beta_{i3} HML + \varepsilon_i \)。
常见误区: 因子暴露 ≠ 因子收益。暴露是资产的特征值或Beta,因子收益是因子组合的收益率。Rank IC计算的是因子暴露排名与未来收益排名的相关性,而非因子收益本身。
2.4 因子投资核心流程
下图展示了从因子定义到Rank IC监控的完整链路:
2.5 因子暴露计算示例(Python)
以下代码演示如何计算个股在价值因子上的暴露(标准化市净率倒数):
import pandas as pd
import numpy as np
# 模拟股票池数据
stocks = pd.DataFrame({
'code': ['000001', '000002', '000003', '000004', '000005'],
'pb': [1.2, 0.8, 2.5, 0.6, 1.8] # 市净率
})
# 计算价值因子暴露:市净率倒数(EP-like)
stocks['value_exposure'] = 1.0 / stocks['pb']
# 截面标准化为Z-score
mean_val = stocks['value_exposure'].mean()
std_val = stocks['value_exposure'].std()
stocks['value_exposure_z'] = (stocks['value_exposure'] - mean_val) / std_val
print(stocks[['code', 'pb', 'value_exposure_z']])
输出说明: value_exposure_z 即为个股在价值因子上的标准化暴露。正值表示该股票相对更“便宜”(价值暴露高),负值表示相对更“贵”(成长暴露高)。该暴露将用于后续Rank IC计算。
2.6 本章小结
- 因子是解释资产收益率共同变动的系统性特征,需满足系统性、持续性、可投资性。
- 因子分为风格因子(截面特征)和宏观因子(时间序列驱动),二者在构建方式和应用场景上存在本质区别。
- 因子暴露是资产对因子的敏感度,因子收益是因子组合的收益率,二者通过回归模型连接。
- 理解因子暴露与因子收益的关系,是正确计算和解读Rank IC的基础。