多因子合成选股策略:从因子打分到组合构建

由bqi2tg8b创建,最终由bqi2tg8b 被浏览 8 用户

一、策略简介

单个因子通常只能反映股票的某一类特征。

例如,动量因子主要观察价格趋势,估值因子关注股票是否便宜,质量因子关注公司的盈利能力。不同因子在不同市场环境下的表现可能存在较大差异,因此,仅依赖单一因子容易受到市场风格切换的影响。

多因子策略的基本思路是:

将多个选股因子统一处理后合成为一个综合得分,再根据综合得分对股票排序并构建投资组合。

本策略使用多个因子,根据因子近期的 ICIR 表现动态调整权重,选择综合得分最高的 200 只股票,每 5 个交易日调仓一次。

https://bigquant.com/codesharev3/9d40692f-f079-4382-883e-4e40950d524e

整体流程如下:

选择候选因子
    ↓
因子去极值与标准化
    ↓
计算因子合成权重
    ↓
生成综合因子
    ↓
行业、市值中性化
    ↓
股票池过滤
    ↓
排序选股与定期调仓

二、策略参数

  • 候选因子数量:4 个
  • ICIR 计算窗口:120 个交易日
  • 最少有效观测:60 个交易日
  • 持仓股票数量:200 只
  • 调仓周期:5 个交易日
  • 股票权重:等权
  • 初始资金:2000 万元
  • 业绩基准:中证 1000 指数

三、选择候选因子

策略首先从因子库中选择多个候选因子。

候选因子可以来自:

  • Alpha101 因子
  • Alpha191 因子
  • 技术指标因子
  • 基本面因子
  • 量价因子

不同因子反映的信息可能不同。例如:

  • 动量因子反映价格趋势;
  • 估值因子反映股票是否相对便宜;
  • 质量因子反映企业盈利和财务状况;
  • 量价因子反映价格与成交量之间的关系。

使用多个因子的目的,是从不同角度对股票进行评价,降低策略对单一信号的依赖。

但因子数量并不是越多越好。如果多个因子高度相关,它们可能只是在重复表达同一种信息。因此,构建因子池时还需要关注因子之间的相关性和信息互补性。


四、因子预处理

不同因子的数值范围通常差异很大。

例如,一个因子的取值可能在 -2 到 2 之间,另一个因子的取值可能达到几百。如果直接将它们相加,数值较大的因子会自然占据主导地位。

因此,在合成因子之前,需要先进行去极值和标准化。

4.1 去极值

金融数据中经常存在极端值,例如:

  • 股票停牌或复牌;
  • 成交价格异常;
  • 财务数据异常;
  • 因子公式分母过小;
  • 个股出现极端行情。

这些异常值可能明显影响因子的平均值和标准差。

本策略采用三倍标准差方法进行去极值。

普通文本公式:

因子合理区间 = 当日因子均值 ± 3 × 当日因子标准差

超过上限的因子值会被调整为上限,低于下限的因子值会被调整为下限。

去极值不会删除股票,只是减少极端数据对因子结果的影响。

4.2 标准化

去极值后,对每个交易日的股票因子进行截面标准化。

普通文本公式:

标准化因子值 =(原始因子值 - 当日因子均值)÷ 当日因子标准差

标准化后的因子值可以这样理解:

  • 大于 0:高于当天市场平均水平;
  • 小于 0:低于当天市场平均水平;
  • 绝对值越大:偏离市场平均水平越明显。

经过标准化后,不同因子被转换到相近的尺度,可以进行后续合成。


五、计算因子权重

多个因子完成标准化后,还需要确定每个因子在综合得分中的权重。

最简单的方法是等权,即每个因子使用相同权重。但等权方法默认所有因子在任何时期都具有相同的预测能力。

本策略根据因子近期的 ICIR 表现动态调整权重。

5.1 什么是 IC

IC 是信息系数,用于衡量因子值与未来股票收益之间的相关程度。

简单理解:

  • IC 为正:因子值较高的股票,未来收益整体上也较高;
  • IC 为负:因子方向可能与未来收益相反;
  • IC 接近 0:因子的选股区分能力较弱。

5.2 什么是 ICIR

ICIR 用于衡量因子表现的稳定性。

普通文本公式:

ICIR = 一段时间内 IC 的平均值 ÷ IC 的标准差

一个因子的平均 IC 较高,并且 IC 波动较小,通常会得到较高的 ICIR。

本策略使用过去 120 个交易日的 IC 计算滚动 ICIR,并要求窗口内至少存在 60 个有效观测。

5.3 权重计算

因子的合成权重与其 ICIR 大小有关。

普通文本公式:

因子权重 = 该因子的 ICIR ÷ 所有因子 ICIR 绝对值之和

ICIR 较高的因子获得较高权重。

如果某个因子的 ICIR 为负,则对应权重也可能为负,相当于反向使用该因子。

为了避免使用未来信息,实际合成时使用滞后的 ICIR 权重,而不是直接使用当日尚未完全获得的数据。


六、合成综合因子

完成因子标准化和权重计算后,将多个因子加权合成为一个综合得分。

综合因子计算方式:

F(i,t) = w₁(t) × z₁(i,t) + w₂(t) × z₂(i,t) + … + wₖ(t) × zₖ(i,t)

其中:

  • F(i,t):股票 i 在日期 t 的综合因子得分;
  • wₖ(t):第 k 个因子在日期 t 的动态权重;
  • zₖ(i,t):股票 i 在日期 t 的第 k 个标准化因子值。

简单来说,综合因子就是将每个标准化因子乘以对应权重,再把所有结果相加。

例如,某只股票有三个标准化因子值:

  • 因子 1:1.2
  • 因子 2:0.5
  • 因子 3:-0.4

对应的因子权重分别为:

  • 因子 1 权重:0.5
  • 因子 2 权重:0.3
  • 因子 3 权重:-0.2

则该股票的综合得分为:

综合得分 = 0.5 × 1.2 + 0.3 × 0.5 - 0.2 × (-0.4) = 0.83

对股票池中的所有股票计算综合得分后,按照得分从高到低排序。综合得分越高,表示该股票在多个因子的共同评价下越具有相对优势。


七、综合因子再次处理

多个因子合成后,综合得分仍可能存在极端值或不同日期尺度不一致的问题。

因此,策略会继续进行三步处理:

  1. 使用 0.1% 和 99.9% 分位数进行缩尾;
  2. 对综合因子再次进行截面标准化;
  3. 对综合因子进行行业和市值中性化。

第一轮标准化处理的是各个原始因子,第二轮标准化处理的是合成后的综合因子,两者的处理对象不同。


八、行业和市值中性化

如果综合得分较高的股票大部分来自某个行业,或者主要是小市值股票,那么策略收益可能主要来自行业行情或小盘风格,而不完全来自综合因子本身。

因此,本策略对综合因子进行行业和市值中性化。

基本思路是:

使用综合因子对行业变量和股票市值进行回归,再使用无法被行业和市值解释的剩余部分作为最终选股得分。

普通文本表达:

综合因子 = 行业影响 + 市值影响 + 个股剩余信息

策略最终使用“个股剩余信息”进行股票排序。

这样可以减少组合对单一行业和市值风格的集中暴露。

需要注意,中性化只能减少指定变量的线性影响,并不表示组合完全不存在市场风险、波动率风险或流动性风险。


九、股票池过滤

在正式选股前,策略会对股票池进行过滤。

主要过滤条件包括:

  • 剔除 ST 股票;
  • 剔除上市不足 365 天的股票;
  • 剔除价格低于 1.2 元的股票;
  • 剔除北交所股票;
  • 剔除以 688 开头的科创板股票。

股票池过滤的主要目的,是减少异常股票、交易限制和不同市场制度对策略结果的影响,提高回测结果的可交易性。


十、排序选股

完成因子合成、中性化和股票池过滤后,每只股票都会得到一个最终得分。

策略按照最终得分从高到低进行排序,并选择排名最高的 200 只股票。

普通文本表达:

目标股票池 = 最终综合得分排名前 200 的股票

综合得分越高,表示该股票在多个因子的共同评价下越具有相对优势。


十一、组合权重

入选的 200 只股票采用等权配置。

普通文本公式:

单只股票目标权重 = 1 ÷ 200 = 0.5%

如果初始资金为 2000 万元,那么每只股票的初始目标资金约为:

2000 万元 ÷ 200 = 10 万元

需要区分两类不同的权重:

  • 因子权重:决定多个因子如何合成为综合因子;
  • 股票权重:决定入选股票如何分配投资资金。

因此,这套策略可以概括为:

因子层采用滚动 ICIR 动态加权,股票层采用前 200 名等权配置。


十二、定期调仓

策略每 5 个交易日重新计算一次股票排名,并根据最新排名调整持仓。

调仓时:

  • 新进入前 200 名的股票被买入;
  • 退出前 200 名的股票被卖出;
  • 继续持有的股票重新调整到目标等权比例。

5 日调仓是在信号更新速度和交易成本之间进行折中。

调仓过于频繁,会增加换手率、手续费和冲击成本;调仓周期过长,又可能导致因子信号已经发生变化。


十三、交易成本

策略回测中考虑了以下交易费用:

  • 买入成本:0.03%
  • 卖出成本:0.08%
  • 单笔最低费用:5 元
  • 买卖价格:开盘价

交易成本是评价策略可执行性的重要因素。

普通文本公式:

策略净收益 = 策略毛收益 - 交易成本

如果策略换手率较高,即使不考虑成本时表现较好,扣除手续费、印花税、买卖价差和冲击成本后,实际收益也可能明显下降。


十四、回测结果

完成因子预处理、动态加权、综合因子构建和股票组合配置后,使用 BigTrader 对策略进行历史回测 请为我完成结尾部分的内容

本次回测的主要指标如下:

指标 回测结果
累计收益率 202.79%
年化收益率 23.47%
基准收益率 29.34%
阿尔法 0.18
贝塔 0.85
夏普比率 0.89
胜率 61.83%
盈亏比 0.99
收益波动率 23.43%
信息比率 1.36
最大回撤 35.44%

从收益曲线来看,策略在回测区间内取得了较明显的正收益,累计表现高于同期基准。策略净值虽然在部分阶段出现回撤,但长期趋势整体向上。

年化收益率为 23.47%,夏普比率为 0.89,说明策略获得较高收益的同时,也承担了较为明显的净值波动。信息比率为 1.36,表明策略在本次回测中取得了一定的相对基准超额表现。

策略胜率为 61.83%,但盈亏比为 0.99。简单来说,盈利交易出现得更加频繁,但单次平均盈利与单次平均亏损接近。因此,策略收益更多来自较高的获胜频率,而不是依靠少数几次大幅盈利。

最大回撤为 35.44%,说明即使长期累计收益较高,持有过程中仍可能经历较大的阶段性损失。评价策略时,不能只看最终收益,还需要同时考虑波动率、最大回撤和收益稳定性。


十五、如何理解本次结果

需要强调的是,本次回测的主要目的不是寻找历史收益率最高的因子组合,而是展示一套完整的多因子合成流程。

本次示例重点说明了以下几个问题:

15.1 多个因子可以被统一为一个选股指标

不同因子的计算逻辑和数值范围可能完全不同。

通过去极值、标准化和动态加权,可以将多个原始因子转换为统一的综合得分,并据此对股票进行排序。

15.2 因子权重可以随时间动态变化

本策略没有始终对所有因子使用固定权重,而是根据近期 ICIR 表现动态调整各因子的影响程度。

近期表现相对稳定的因子获得更高权重,表现减弱的因子权重则相应下降。

15.3 因子信号需要经过组合构建才能形成策略

因子得分本身并不是最终收益。

还需要经过:

  • 股票池过滤;
  • 行业和市值中性化;
  • 股票排序;
  • 持仓数量设定;
  • 股票权重分配;
  • 调仓周期设置;
  • 交易成本扣除。

只有完成这些步骤,因子信号才真正转化为可回测的投资组合。

15.4 高收益不代表策略没有风险

本次策略的收益表现较好,但最大回撤仍超过 30%。

这说明即使一个因子组合在长期回测中获得正收益,投资者仍可能在某些阶段经历较大的净值下跌。

因此,评价量化策略不能只看累计收益,还需要同时观察:

  • 年化收益率;
  • 收益波动率;
  • 夏普比率;
  • 最大回撤;
  • 信息比率;
  • 不同年份的收益稳定性。

十六、本次回测的局限

虽然本次结果较好,但不能据此直接判断该因子组合未来一定有效。

16.1 候选因子并未经过系统筛选

本次示例使用的是指定的多个因子,主要目的是演示合成流程,并未从全部因子库中寻找最优组合。

因此,回测结果既不能代表该权重方法的上限,也不能说明当前因子一定是最优选择。

16.2 历史表现不代表未来收益

因子的有效性可能随市场环境变化。

某个因子在过去表现较好,未来也可能因为市场风格切换、交易拥挤或投资者行为变化而失效。

16.3 ICIR 动态加权并非唯一方案

除了滚动 ICIR 加权,还可以使用:

  • 因子等权;
  • IC 均值加权;
  • 正 ICIR 截断加权;
  • 因子排名加权;
  • 波动率调整权重;
  • 机器学习模型加权。

不同的合成方法可能产生不同的收益和风险特征。

16.4 回测交易成本仍可能低于实际成本

回测中已经考虑手续费和最低交易费用,但真实交易还可能受到以下因素影响:

  • 买卖价差;
  • 市场冲击成本;
  • 开盘价格滑点;
  • 涨跌停无法成交;
  • 个股流动性不足;
  • 大资金成交容量限制。

因此,实盘表现通常不会与历史回测完全一致。


十七、后续研究方向

在理解完整的多因子合成流程后,可以继续从以下方向进行优化。

17.1 优化候选因子池

在因子合成前,对单个因子进行检验,例如:

  • IC 均值;
  • ICIR;
  • 分组收益;
  • 多空收益;
  • 年度稳定性;
  • 因子相关性。

剔除长期无效或与其他因子高度重复的因子。

17.2 比较不同合成方法

可以将滚动 ICIR 加权与等权方法进行对比,观察动态权重是否真正改善了综合因子的表现。

17.3 调整组合参数

可以进一步测试:

  • 持有前 50、100 或 200 只股票;
  • 每 5 日、10 日或 20 日调仓;
  • 按综合得分加权;
  • 按波动率倒数加权;
  • 设置行业权重上限;
  • 设置单只股票权重上限。

17.4 增加样本外检验

更严谨的研究应将历史数据划分为训练区间、验证区间和测试区间。

因子筛选和参数调整在训练集与验证集完成,测试集只用于评价最终策略的样本外表现。

\

{link}