1. 量化多因子选股的核心逻辑
量化多因子选股本质上是通过数学模型将投资经验系统化的过程。这个领域最早可以追溯到1992年Fama和French提出的三因子模型,如今已经发展成为量化投资中最成熟的方法论之一。其核心思想是:股票收益可以被一组共同的风险因子所解释,通过识别这些因子并构建组合,可以获得超越市场的收益。
我在2015年第一次接触这个领域时,市场上还主要依赖人工挖掘因子。现在随着算力的提升和数据的丰富,机器学习因子挖掘已经成为行业标配。但无论技术如何迭代,多因子模型的底层框架始终包含四个关键环节:因子挖掘、因子处理、组合优化和风险控制。
2. 因子库构建实战
2.1 基础因子分类体系
一个完整的因子库通常包含六大类因子:
- 价值因子:PE、PB、股息率等
- 成长因子:营收增长率、利润增长率
- 质量因子:ROE、资产负债率
- 动量因子:过去N个月收益率
- 波动率因子:历史波动率、Beta
- 流动性因子:换手率、成交量
我在实践中发现,不同市场环境下各类因子的有效性差异很大。比如在牛市后期,动量因子往往表现突出;而在熊市初期,低波动因子更具防御性。
2.2 因子数据获取方案
数据源的选择直接影响模型效果。我常用的数据渠道包括:
- 基础行情数据:Wind/通联(机构)、Tushare(个人)
- 财务数据:CSMAR、RESSET
- 另类数据:新闻情绪、产业链数据
特别注意:财务数据要处理公告时滞问题,实际使用时要严格按照财报发布日期回填
2.3 因子生成代码示例
python复制# 动量因子计算示例
def calc_momentum(close_prices, window=20):
returns = close_prices.pct_change(window)
return returns.iloc[-1]
# 波动率因子
def calc_volatility(close_prices, window=60):
daily_returns = close_prices.pct_change()
return daily_returns.rolling(window).std().iloc[-1]
3. 因子处理关键技术
3.1 数据清洗要点
原始因子数据通常存在以下问题需要处理:
- 极端值:用3倍标准差法winsorize处理
- 缺失值:行业均值填充或删除
- 行业偏差:必须进行行业中性化处理
我在2018年做过一个对比测试,经过完善清洗的因子IC(信息系数)平均提升0.05左右。
3.2 因子标准化方法
常用标准化方法对比:
| 方法 | 公式 | 适用场景 |
|---|---|---|
| Z-score | (x-μ)/σ | 正态分布因子 |
| Rank | rank(x) | 非正态分布 |
| Sigmoid | 1/(1+e^(-x)) | 有界变换 |
3.3 因子相关性分析
因子间相关性过高会导致模型过拟合。我的处理流程:
- 计算因子IC矩阵
- 聚类分析(通常用层次聚类)
- 每类保留ICIR最高的因子
实际操作中,我会控制因子间相关性不超过0.7。曾经有个教训:2019年使用了5个相关性0.8以上的价值因子,结果在风格切换时组合回撤超预期。
4. 组合优化实战
4.1 权重分配算法
主流权重分配方法对比:
- 等权法:简单但忽略因子差异
- IC加权:根据信息系数动态调整
- 风险平价:控制各因子风险贡献
- 机器学习:通过XGBoost等算法优化
我目前采用的是改进版ICIR加权,即在IC基础上加入IC衰减率的考量。
4.2 交易成本建模
容易被忽视但关键的成本项:
- 佣金:通常0.02%-0.08%
- 滑点:与流动性负相关
- 冲击成本:大资金尤其明显
建议在回测时采用分段成本模型,比如:
- 小盘股:0.3%单边
- 中盘股:0.2%单边
- 大盘股:0.1%单边
5. 风险控制体系
5.1 事前风控指标
必须监控的核心指标:
- 行业偏离度:<15%
- 个股集中度:单票<5%
- 风格暴露:价值/成长平衡
5.2 事后归因分析
我每周都会做的Brinson归因:
- 配置效应(行业选择)
- 选股效应(个股选择)
- 交互效应
这个习惯帮助我在2020年及时发现了消费板块的超配问题,避免了后续的大幅回撤。
6. 实盘注意事项
6.1 因子衰减监控
建立因子监控仪表盘,重点关注:
- IC均值滚动变化
- ICIR趋势
- 分位数收益差异
当IC持续3个月低于0.05时,要考虑因子失效可能。
6.2 组合再平衡策略
再平衡频率选择:
- 高频:周频(适合高换手策略)
- 中频:月频(平衡型策略)
- 低频:季频(基本面策略)
我的经验是,A股市场月频再平衡效果最佳,既能捕捉因子收益又不会产生过多摩擦成本。
7. 常见问题排查
7.1 回测过拟合识别
过拟合的典型特征:
- 参数敏感度过高
- 样本外表现断崖下跌
- 小参数改动导致结果巨变
解决方法:
- 延长回测周期
- 增加样本外测试
- 使用Walk Forward分析
7.2 实盘表现差异分析
当实盘与回测差异>20%时,检查:
- 成本假设是否充分
- 停牌股处理是否合理
- 因子计算时点是否准确
曾经有个案例:回测时使用收盘价计算信号,实盘改用次日开盘价交易,结果年化收益差出8个百分点。