3、多因子模型基础:因子定义、因子分类与有效性检验
做量化投资的朋友,咱们今天聊聊多因子模型。说实话,这是整个量化选股体系的基石。你想想看,单因子就像一把尺子,只能量长度;多因子就像一套工具箱,能测出股票的各种维度。我做了这么多年,发现很多新手一上来就堆因子,结果模型过拟合得一塌糊涂。嗯,咱们今天就把这事掰扯清楚。
3.1 因子到底是什么?
因子,说白了就是一个能解释股票收益的特征变量。它可以是市盈率、换手率,也可以是分析师情绪。我个人习惯把因子理解成「股票的体检指标」——每个指标都反映股票某个侧面的健康状况。
举个例子:
- 市盈率因子:反映估值高低
- 动量因子:反映价格趋势
- 波动率因子:反映风险水平
我在项目中遇到过最典型的误区:有人把「总市值」和「流通市值」同时放进模型。这俩相关性高达0.95,说白了就是重复信息。你想想看,这跟体检时量两次身高有什么区别?
3.2 因子分类:三大门派
因子的分类方式很多,我习惯按数据来源分成三类:基本面、技术面、情绪面。这三类各有各的脾气,咱们一个一个说。
3.2.1 基本面因子
这类因子来自财务报表,反映公司内在价值。常见的有:
- 估值类:PE、PB、PS、PCF
- 成长类:营收增长率、净利润增长率
- 质量类:ROE、毛利率、资产负债率
- 规模类:总市值、流通市值
基本面因子的特点是「慢但稳」。我记得2018年做A股回测时,估值因子在熊市里表现特别好,但牛市里反而拖后腿。为什么会这样?因为市场情绪高涨时,没人看估值。
3.2.2 技术面因子
这类因子来自交易数据,反映市场行为。常见的有:
- 动量因子:过去N日收益率
- 反转因子:短期超买超卖信号
- 波动因子:历史波动率、振幅
- 量价因子:成交量变化、资金流向
技术面因子更新频率高,适合短线策略。但我建议你别只看单一技术指标,容易掉进数据挖掘的坑里。
3.2.3 情绪面因子
这类因子来自非结构化数据,反映市场参与者的心理状态。常见的有:
- 分析师情绪:评级调整、盈利预测修正
- 舆情因子:新闻情感得分、社交媒体热度
- 资金流向:主力资金净流入、融资融券余额
情绪面因子是我个人比较看好的方向。为什么?因为市场短期定价往往由情绪驱动,而不是基本面。但要注意,情绪数据的质量参差不齐,清洗起来很费功夫。
3.3 因子有效性检验:别被回测骗了
因子有效性检验,说白了就是判断这个因子到底能不能赚钱。我见过太多人把回测曲线做得漂漂亮亮,结果实盘一跑就崩。这里我分享三个核心检验方法。
3.3.1 IC分析(信息系数)
IC衡量因子值与未来收益的相关性。计算方法很简单:
# 计算IC值
import pandas as pd
import numpy as np
from scipy.stats import spearmanr
def calc_ic(factor_values, forward_returns):
"""
计算因子IC值
factor_values: 因子值序列
forward_returns: 未来N日收益率
"""
ic, p_value = spearmanr(factor_values, forward_returns)
return ic, p_value
# 示例:计算某因子的IC
factor = [1.2, 0.8, 1.5, 0.6, 1.1]
returns = [0.03, -0.01, 0.05, -0.02, 0.04]
ic, p = calc_ic(factor, returns)
print(f"IC值: {ic:.3f}, p值: {p:.3f}")
IC值范围在-1到1之间。绝对值越大,因子预测能力越强。我个人习惯看IC的均值、标准差和IR(IC/IC_std)。IR大于0.5的因子,基本可以放心用。
3.3.2 分层回测
把股票按因子值分成10组(或5组),看每组收益是否单调递增或递减。这是最直观的检验方法。
| 分组 | 因子值范围 | 平均收益 | 胜率 |
|---|---|---|---|
| 第1组(最低) | 0-10% | -0.5% | 42% |
| 第2组 | 10-20% | 0.2% | 48% |
| 第3组 | 20-30% | 0.8% | 55% |
| 第4组 | 30-40% | 1.2% | 60% |
| 第5组(最高) | 40-50% | 1.8% | 68% |
你看这个表格,收益从-0.5%到1.8%单调递增,说明因子区分度很好。如果出现「中间高两头低」的情况,那这个因子可能是个非线性关系,需要进一步处理。
3.3.3 多空组合检验
做多因子值最高的组,做空最低的组,看这个多空组合的收益曲线。如果曲线平稳向上,说明因子有稳定的选股能力。
3.4 因子有效性检验的常见陷阱
做因子检验这么多年,我踩过不少坑。这里列几个最常见的:
- 幸存者偏差:只用当前存活的股票做回测,忽略了退市的股票。结果就是回测收益虚高。
- 前视偏差:用未来的数据计算因子值。比如用年报数据时,没考虑财报发布日期,导致因子值提前「泄露」。
- 过拟合:在大量因子中反复筛选,总能找到几个回测漂亮的。但实盘时这些因子往往失效。
- 数据挖掘偏差:同一个因子换几个参数,总能找到最优参数。但最优参数往往只是运气好。
3.5 多因子模型的核心逻辑
说了这么多,咱们用一张图来总结多因子模型的核心逻辑。这张图是我自己画的,涵盖了从因子定义到模型构建的完整流程。
这张图展示了多因子模型的完整流程。从因子定义开始,经过分类、检验、筛选,再到模型构建和回测验证,最后部署实盘。注意那条虚线——它代表反馈迭代。我个人的经验是,一个好的多因子模型至少要迭代3-5轮,才能达到稳定状态。
3.6 小结
今天咱们聊了多因子模型的基础知识。因子定义要清晰,分类要合理,检验要严格。记住三个核心点:
- 因子定义:明确计算方式,避免歧义
- 因子分类:基本面、技术面、情绪面,三类都要覆盖
- 有效性检验:IC分析、分层回测、多空组合,一个都不能少
做量化投资,最怕的就是「回测猛如虎,实盘亏成狗」。避免这个问题的唯一方法,就是严格做好因子有效性检验。嗯,今天就到这里,希望这些经验对你有帮助。