剑客
关注科技互联网

MultiFactors Alpha Model – 基于因子IC的多因子合成

MultiFactors Alpha Model - 基于因子IC的多因子合成

作者:call 原文链接: MultiFactors Alpha Model – 基于因子IC的多因子合成

本文利用 AlphaHorizon 研究了几个常见因子,进一步尝试使用QEPM中的最大化因子IC_IR的优化方法组合多个因子。

1. 概述

本文利用 AlphaHorizon 研究了几个常见因子,并初步尝试了多因子的组合;进一步回测了多因子合成的选股因子:

  • 使用 多因子等权 合成新因子,然后单纯做多因子最大的20%股票组合,年化收益率32.0%,阿尔法27.2%,信息比率达到3.79;
  • 多头组合对冲中证500指数后年化收益27.0%,最大回撤仅5.8%;
  • 在使用QEPM中的 最大化因子IC_IR 的优化方法组合多个因子后,能够明显提升因子选股的稳定性,信息比率达到4.0,对冲指数后最大回撤仅4.4%;
  • 在多因子组合时,使用 压缩方法 估算因子IC的协方差矩阵,可以进一步提升因子的信息比率;

2. 因子获取和处理

2.1 因子获取

下面为考虑的几个因子的简单介绍,这些因子在Uqer的股票 因子数据 中都可以找得到:

  • BP,市净率倒数
  • CFP,市现率倒数
  • EP,市盈率倒数
  • ILLIQUIDITY,非流动性因子
  • REVS20,过去二十天收益,反转因子
  • SRMI,修正动量指标
  • VOL20,过去二十天换手率平均

下面展示一个典型的因子数据DataFrame:

  • index 为交易日
  • columns 为所有股票

MultiFactors Alpha Model - 基于因子IC的多因子合成

2.2 因子处理

计算得到的原始因子数据,因为有极值等原因,需要做进一步处理:

  • winsorize,去极值
  • neutralize,中性化,消除行业和风格因子等的影响
  • standardize,标准化
  • orthogonalize,残差正交化调整,因子间存在较强同质性时,使用施密特正交化方法对因子做正交化处理,用得到的正交化残差作为因子

这是因子处理的标准流程,其中前三步是针对单个因子,很容易自己实现,也可以很方便在Uqer实现,具体请参考魏老师 破解Alpha对冲策略 。第四步是当我们有多个因子时,才会进行的处理手段,本文中并未考虑。

在Uqer上处理一个因子的函数可以简单写成: def neutralize_factor(factor_df)

3. 单因子研究

单因子研究过程此处略过,具体可见非流动性因子 ILLIQ 。因为后面需要进行基于IC的因子权重优化,所以此处简单说明一下计算IC的方法:

通过 AlphaHorizon ,可以很方便地得到各个因子的IC时间序列。

4. 基于因子IC的信号合成

当有多个信号时,经常需要进行多个信号的合成,最简单的方法当然是 等权合成 信号。更进一步,可能会考虑信号的优化合成。此部分参考了社区 minghong 的帖子 基于因子IC的多因子模型 ,在此表示感谢。

4.1 最大化IR优化

本节中,我们基于 QEPM 中的方法,尝试做信号合成,该优化模型简单介绍如下:

  • 因子的IR(信息比率)值为因子IC的均值和因子IC的标准差的比值,IR值越高越好
  • 假设有M个因子,其IC的均值向量为 =( MultiFactors Alpha Model - 基于因子IC的多因子合成 , MultiFactors Alpha Model - 基于因子IC的多因子合成 ,⋯, MultiFactors Alpha Model - 基于因子IC的多因子合成 )T,IC的协方差矩阵为 Σ。如果各因子权重向量为 MultiFactors Alpha Model - 基于因子IC的多因子合成 =( MultiFactors Alpha Model - 基于因子IC的多因子合成 , MultiFactors Alpha Model - 基于因子IC的多因子合成 ,⋯, MultiFactors Alpha Model - 基于因子IC的多因子合成 )T,则复合因子的IR值为:

MultiFactors Alpha Model - 基于因子IC的多因子合成

  • 我们的目标就是要最大化复合因子的IR,我们可以通过Python的优化函数求解
  • 实际上,该问题比较简单,可以直接求解析解,IR求导以后,可以得到以上最值问题的解,因子的最优权重向量为:

MultiFactors Alpha Model - 基于因子IC的多因子合成

其中δ为任意正数,可以用来调整最后的权重之和为1。

4.2 因子IC协方差矩阵的收缩估计

在计算因子IC的协方差矩阵时,最简单的是使用的协方差矩阵的无偏估计即使用 样本协方差阵Σ^ 。问题在于,Uqer上有几百个因子,我们的协方差矩阵就不一定可逆。即便它是可逆的,样本协方差矩阵的逆矩阵也不是协方差矩阵逆矩阵的无偏估计,实际上在正态分布假设下有:

MultiFactors Alpha Model - 基于因子IC的多因子合成

  • 其中M指因子个数,T指样本期,即取前几期的数据
  • 如果T和M的大小比较接近,样本协方差矩阵逆的估计偏差将非常之大

基于以上问题,有人提出了一种压缩估计的方法。它的基本思想使用一个方差小但偏差大的协方差矩阵估计量Φ^作为目标估计量,和样本协方差矩阵做一个调和,牺牲部分偏差来获得更稳健的估计量:

MultiFactors Alpha Model - 基于因子IC的多因子合成 参数λ通过最小化估计量的二次偏差得到,至于估计量Φ^的选择,有以下三种形式可供参考:

  • Ledoit(2004) 单参数形式,可以表示为方差乘以一个单位矩阵
  • Ledoit(2003b) CAPM单因子结构化模型估计
  • Ledoit(2003a) 平均相关系数形式

这里采用第一种形式,并在计算中使用了sklearn.covariance中的 LedoitWolf 包。

4.3 基于IC的因子权重

接下来,我们使用开头提到的多个因子,进行第二节中的信号处理之后,用第三节的方法计算出每个因子的IC时间序列。然后按照滚动窗口计算因子IC的均值向量和协方差矩阵,进一步得到各个因子的权重。此处为了对比,我们同时使用 样本协方差矩阵压缩估计的协方差矩阵 来按照前面的讨论计算因子权重。

MultiFactors Alpha Model - 基于因子IC的多因子合成

两种方法估算因子IC的协方差矩阵,进而得到两种不同的因子权重:

  • ic_weight_df ,使用Sample 协方差矩阵估算
  • ic_weight_shrink_df ,使用 Ledoit-Wolf 压缩方法得到的协方差矩阵估算

下面计算中的滚动窗口为120天,即计算每一天的因子权重时,使用了之前6个月的IC时间序列来计算IC均值向量和IC协方差矩阵。

MultiFactors Alpha Model - 基于因子IC的多因子合成 MultiFactors Alpha Model - 基于因子IC的多因子合成 通过以上两图可以看到,使用协方差矩阵的压缩估计之后得到的因子权重序列,显得更加稳定。

4.4 使用不同权重构造复合因子

我们重点考察三种不同权重构造的因子:

  • 等权 ,即上述多个因子的值简单等权相加
  • SampleCov ,使用Sample 协方差矩阵估算方法得到的因子权重
  • ShrinkCov ,使用 Ledoit-Wolf 压缩的协方差矩阵估算方法得到的因子权重

注意:复合因子的计算中,需要注意IC的定义以避免未来函数,当期的IC的计算其实是用到了下期的收益数据,所以使用因子权重的时候,其实是要再往前推一期(此处为周度调仓,故往前推5天)才不会用到未来数据!构造因子之后,保存好文件以备使用。

5. 合成因子的简单分析

本节中,我们使用AlphaHorizon,简单分析上一节合成的因子,以 等权合成的因子 为例。

5.1 数据加载

需要加载和处理的数据包括:

  • 回测起止日期
  • 股票行业数据
  • 合成因子数据
  • 股票价格数据

[‘000001.XSHE’, ‘000002.XSHE’, ‘000004.XSHE’, ‘000005.XSHE’, ‘000006.XSHE’]

tradeDate secID

2016-05-31 603968.XSHG 0.652980

603969.XSHG 0.272819

603979.XSHG -0.223850

603988.XSHG 0.139030

603989.XSHG 0.353725

603993.XSHG -0.544944

603996.XSHG -1.118224

603997.XSHG 0.179601

603998.XSHG 0.230723

603999.XSHG -0.246553

因子数据分布图,可以大致看出我们的合成因子的分布情况

MultiFactors Alpha Model - 基于因子IC的多因子合成

5.2 因子预测能力分析

5.2.1 分位数组合超额收益

  • 将股票按照因子分为不同的分位数组合,默认分为5分位
  • 计算每个分位数组合的超越市场平均的超额收益(第5节单因子回测中的超额收益都是超越市场平均这一基准)
  • 分位数由小到大,组合超额收益由负到正,非常单调,显示出因子有着很好的选股能力

MultiFactors Alpha Model - 基于因子IC的多因子合成

5.2.2 分位数组合净值走势

  • 将股票按照因子分为不同的分位数组合,此处分为5分位
  • 平均持有不同分位数组合,获得的超额收益构成的净值走势

MultiFactors Alpha Model - 基于因子IC的多因子合成

5.2.3 因子选股构建组合回测净值走势

三种方法构建组合:

  • 等权做多最好分位,做空最差分位
  • 等权做多最好分位
  • 因子值作为权重构建组合

MultiFactors Alpha Model - 基于因子IC的多因子合成

5.2.4 因子的月度IC热度图

  • 图中颜色越红表示IC越大,也即表示因子在这个月表现良好;颜色越绿表示因子在这个月表现不佳;
  • 注意,一头一尾的绿色是因为没有回测数据而IC为nan
  • 可以注意到,等权合成的因子IC表现出了很好的稳定性,月度IC大部分情况下都为正

MultiFactors Alpha Model - 基于因子IC的多因子合成

5.2.5 因子的IC衰减

  • IC衰减,其实就是计算当期因子对于延后一段时间的一期股票收益的IC
  • 由IC衰减图可以看到,我们合成的IC其实衰减是比较快的,究其原因,是因为我们选择了不少技术类因子

MultiFactors Alpha Model - 基于因子IC的多因子合成

6. 合成因子的Uqer回测

上一节中使用AlphaHorizon简单地对我们合成的因子进行了回测分析,不过该分析比较粗糙,没有考虑涨跌停等原因。接下来我们将合成因子上传,在uqer做更加真实的回测。

6.1 首先加载计算好的数据文件:

MultiFactors Alpha Model - 基于因子IC的多因子合成

6.2 合成因子截面特征

接下来,我们简单检查一下我们计算得到的因子的截面特征

MultiFactors Alpha Model - 基于因子IC的多因子合成

上图给出了2009年至2016年间,在不同时点,将市场上所有股票按因子分10组后,第1组、第5组以及第10组股票因子的均值情况,即我们所说的截面特征:

  • 观察可知,因子的截面特征较为稳定

6.3 因子选股的市值分布特征

检查因子的小市值暴露情况。因为很多策略因为小市值暴露在A股市场表现优异。

MultiFactors Alpha Model - 基于因子IC的多因子合成

  • 上图展示,该选股因子并没有明显的市值暴露
  • 实际上,市值因子已经在之前的单因子中性化中处理掉了,所以合成因子理应无市值暴露

6.4. 因子历史回测净值表现

6.4.1 简单做多策略

接下来,考察 因子 的选股能力的回测效果。历史回测的基本设置如下:

  • 回测时段为2010年1月1日至2016年6月1日
  • 股票池为A股全部股票
  • 组合每5个交易日调仓,交易费率设为双边万分之二
  • 调仓时,涨停、停牌不买入,跌停、停牌不卖出;
  • 每次调仓时,选择股票池中因子最大的20%的股票;

MultiFactors Alpha Model - 基于因子IC的多因子合成
MultiFactors Alpha Model - 基于因子IC的多因子合成

上图显示了简单做多因子最大的20%的股票之后的对冲净值走势,需要注意这里对冲基准为中证500指数,而AlphaHorizon中的对冲基准为全市场等权。

6.4.2 因子选股 —— 不同五分位数组合回测走势比较

MultiFactors Alpha Model - 基于因子IC的多因子合成 MultiFactors Alpha Model - 基于因子IC的多因子合成 上图显示出,因子选股不同五分位构建等权组合,在uqer进行真实回测的净值曲线。其中的对冲净值不同分位走势和5.2.2节中AlphaHorizon中的简单回测略有差别,但都显示出我们合成的因子的选股能力,不同五分位组合净值曲线随时间推移逐渐散开。

6.4.3 因子权重的三种计算方法对比

4.4节中,有三种不同权重构造的因子:

  • 等权 ,即上述多个因子的值简单等权相加
  • SampleCov ,使用Sample 协方差矩阵估算方法得到的因子权重
  • ShrinkCov ,使用 Ledoit-Wolf 压缩的协方差矩阵估算方法得到的因子权重

此处我们分别在uqer回测。

MultiFactors Alpha Model - 基于因子IC的多因子合成
MultiFactors Alpha Model - 基于因子IC的多因子合成

  • 通过信息比率可以看到,在使用QEPM中的最大化因子IC_IR的优化方法组合多个因子后,能够明显提升因子选股的稳定性;
  • 使用压缩方法估算因子IC的协方差矩阵,可以进一步提升因子的信息比率;

优矿 期货回测框架 已上线,quartz新增

  1. 更加丰富的调仓频率refresh_rate形态;
  2. 新增组合分析可视化工具;
  3. 支持获取股票的非复权行情数据;
  4. 支持获取多benchmark的历史行情数据;
  5. 增加DynamicUniverse解决生存者偏差问题;

欢迎对量化感兴趣的朋友来
体验

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址