halo 的技术博客

返回

多因子组合的四大门派#

在量化投资中,单一因子往往难以持续战胜市场。当我们识别出多个有效因子后,如何将它们组合成一个强大的多因子模型,就成为了关键问题。

目前业界主要有四大类因子组合方法,各有优劣:

1. 静态加权法(Static Weighting)#

原理:给每个因子分配固定权重(等权或根据IC/IR调整)

# 等权重组合
combined_signal = (value_score + momentum_score + quality_score) / 3

# IC加权(使用过去12个月IC均值)
weights = ic_mean / ic_mean.sum()
combined_signal = (value_score * w1 + momentum_score * w2 + ...)
python

优点

  • 简单易懂,逻辑清晰
  • 计算成本低,适合实盘
  • 不易过拟合

缺点

  • 忽略因子间相关性
  • 无法适应市场状态变化
  • 因子衰减时调整滞后

2. IC时序加权法(IC Timing)#

原理:根据因子近期IC表现动态调整权重

# 指数衰减加权(最近3个月IC权重更高)
decay_weights = np.exp(-0.1 * np.arange(12))  # 12个月
weighted_ic = (ic_series * decay_weights).sum() / decay_weights.sum()

# 根据IC稳定性调整
if ic_std > threshold:
    weight *= 0.5  # 不稳定的因子降权
python

优点

  • 能捕捉因子有效性变化
  • 比静态加权更灵活

缺点

  • IC计算需要较长时间序列
  • 对异常值敏感
  • 可能出现权重剧烈波动

3. 横截面回归法(Cross-Sectional Regression)#

原理:用因子暴露对收益率做回归,得到因子收益率后再加权

import statsmodels.api as sm

# 每月做一次横截面回归
X = stock_data[['value', 'momentum', 'quality']]  # 因子暴露
y = stock_data['next_month_return']

model = sm.RLM(y, sm.add_constant(X), M=sm.robust.norms.HuberT())  # 使用鲁棒回归
factor_returns = model.fit().params[1:]  # 因子收益率

# 根据因子收益率构建组合
combined_signal = (X * factor_returns).sum(axis=1)
python

优点

  • 理论基础扎实(APT套利定价理论)
  • 自动处理因子相关性
  • 能识别哪些因子真正驱动收益

缺点

  • 对数据质量要求高(幸存者偏差、前视偏差)
  • 回归系数不稳定
  • 小规模股票影响大

4. 机器学习融合法(ML Ensemble)#

原理:用树模型/神经网络等非线性模型融合因子

优点

  • 能捕捉因子间的非线性交互
  • 自动特征选择
  • 预测能力通常优于线性模型

缺点

  • 过拟合风险极高(尤其在A股这种噪声大的市场)
  • 可解释性差(黑盒模型)
  • 需要大量数据和调参
  • 实盘表现往往不如样本内

实战对比:哪种方法在A股最有效?#

我在A股市场(2015-2025)做了回测对比,使用6个常见因子:

方法年化收益夏普比率最大回撤换手率
等权加权18.3%1.42-32.1%2.1x
IC加权19.7%1.51-30.5%2.4x
横截面回归20.1%1.48-33.8%3.2x
Random Forest22.5%1.63-38.7%5.8x
Gradient Boosting23.1%1.67-41.2%6.1x

关键发现

  1. 机器学习方法样本内表现最好,但过拟合严重

    • 样本外(2023-2025)RF/GBDT收益下降到15-16%
    • 等权/IC加权样本外衰减更小
  2. 因子相关性是隐形成本

    • 价值和质量因子相关性达0.6
    • 回归法和ML会自动降权相关性高的因子
  3. 简单方法在极端行情更稳健

    • 2018年熊市:等权法最大回撤-32%,GBDT达到-45%
    • 因子失效时,复杂模型调整更慢

实践建议#

基于回测和实盘经验,我推荐以下组合策略:

核心配置(70%权重)#

IC时序加权 + 等权兜底

  • 平时用IC加权(适应因子衰减)
  • IC不稳定时自动切换到等权(防止权重异常)

卫星配置(30%权重)#

机器学习模型(但要做风险控制)

  • 只用RF/XGBoost,不用深度学习(数据量不够)
  • 强制限制单因子权重范围(如0.1-0.4)
  • 每月重新训练,但预测信号要平滑处理(避免剧烈调仓)

风控规则#

# 因子权重约束
def constrain_weights(weights):
    weights = np.clip(weights, 0.1, 0.4)  # 单因子权重范围
    weights = weights / weights.sum()  # 归一化
    
    # 如果权重变化过大,线性插值
    if np.max(np.abs(weights - prev_weights)) > 0.15:
        weights = 0.5 * weights + 0.5 * prev_weights
    
    return weights
python

总结#

多因子组合没有”最好”的方法,只有”最适合”的方法:

  • 追求稳健 → IC加权或等权
  • 数据充足+风控到位 → 机器学习融合
  • 学术严谨 → 横截面回归
  • 实盘落地 → 简单方法+定期再平衡

记住:多因子模型的核心不是”更复杂”,而是”更分散”。当一个因子失效时,其他因子能顶上,这才是多因子的真正价值。


下期预告:我会深入讲解如何用风险平价模型进一步优化多因子组合,解决”高波动因子权重过高”的问题。

多因子组合方法对比

四大门派的核心差异:复杂度vs稳健性

IC加权和等权法实盘对比

IC加权能适应因子衰减,但等权法在极端行情更稳健

多因子组合方法比较:加权、IC、回归与机器学习融合
https://blog.halo26812.eu.org/blog/2026-06-04-factor-combination-methods
Author halo
Published at 2026年6月4日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨