halo 的技术博客

返回

为什么因子正交化至关重要?#

在多因子选股模型中,因子之间往往存在高度相关性。例如:

  • 市值因子与流动性因子通常负相关
  • 价值因子与质量因子在某些市场环境下高度相关
  • 动量因子与低波因子可能存在此消彼长的关系

这种**多重共线性(Multicollinearity)**会导致:

  1. 回归系数不稳定,符号可能与经济学逻辑相反
  2. 因子收益率的标准误膨胀,t统计量失真
  3. 样本外表现急剧下降,过拟合风险增加

三种主流正交化方法#

1. 对称正交化(Symmetric Orthogonalization)#

基于特征值分解(EVD)的经典方法:

优点:保持因子的对称性,所有因子同等对待
缺点:正交化后的因子失去原始经济学含义

2. 逐步回归正交化(Sequential Orthogonalization)#

更实用的方法:保留第一个因子的原始含义,后续因子与其正交。

优点:可以指定重要因子不被正交化(如市值因子)
缺点:正交化结果依赖于因子排序

3. PCA主成分正交化#

将因子收益率投影到主成分空间:

优点:降维去噪,提取主要信息
缺点:主成分无明确经济学解释

实战案例:Fama-French 5因子正交化#

以Fama-French 5因子为例,展示正交化效果:

关键发现

  • HML(价值因子)与CMA(投资因子)原始相关性约0.6
  • 正交化后两者相关性接近0
  • 回归IC(信息系数)从0.08 到 0.12,提升50%

正交化的陷阱与注意事项#

陷阱1:过度正交化导致因子失效#

并非所有相关性都需要消除。如果两个因子在经济逻辑上本应相关(如盈利因子与质量因子),强制正交化可能剔除有效信息。

建议:先通过VIF(方差膨胀因子)诊断多重共线性严重程度,再决定是否正交化。

from statsmodels.stats.outliers_influence import variance_inflation_factor

def calculate_vif(factor_returns):
    """计算VIF诊断多重共线性"""
    vif_data = pd.DataFrame()
    vif_data['factor'] = factor_returns.columns
    vif_data['VIF'] = [variance_inflation_factor(factor_returns.values, i) 
                        for i in range(factor_returns.shape[1])]
    return vif_data

# VIF > 10 表示存在严重多重共线性
vif_result = calculate_vif(factor_returns)
print(vif_result)
python

陷阱2:样本外正交化失效#

正交化矩阵(如对称正交化的特征向量)是基于样本内数据估计的。在样本外,正交化效果可能大打折扣。

解决方案:使用滚动窗口重新估计正交化矩阵

总结与建议#

  1. 诊断优先:先通过VIF和相关矩阵判断是否需要正交化
  2. 方法选择
    • 保留原始含义 → 逐步回归正交化
    • 完全去相关 → 对称正交化
    • 降维去噪 → PCA正交化
  3. 滚动估计:样本外必须重新估计正交化矩阵
  4. 经济逻辑:正交化不意味着失去经济学含义,需要重新解释

因子正交化是量化多因子模型的关键步骤,正确使用可以显著提升模型的稳健性和样本外表现。

因子正交化流程

图1:三种正交化方法的流程对比

正交化前后对比

图2:某多因子模型正交化前后的回归系数稳定性对比

多因子模型中的因子正交化:剔除多重共线性的关键技术
https://blog.halo26812.eu.org/blog/factor-orthogonalization
Author halo
Published at 2026年6月5日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨