建投金工:因子衰减在多因子选股中的应用
由small_q创建,最终由small_q 被浏览 125 用户
主要观点
本文概述
本文主要介绍因子的衰减在多因子选股中的应用。主要包括因子半衰期定义、单因子衰减分析、多因子横截面IC、IC_IR半衰期加权方法和单因子时间序列最大化复合IC_IR加权方法的深入研究。发现不管是在横截面上做IC、IC_IR半衰期加权,还是单因子的时间序列加权上,单因子的半衰期H_Factor均为多因子权重求解的一个稳健最优参数。
单因子衰减分析
从单因子衰减分析可知大部分因子的IC衰减速度较快,所以在做因子IC加权时理应对因子近期的IC给与更大的权重分配,这样才能更好地适应市场短期的变化。这里,我们引入半衰期权重来衡量其影响。半衰期权重可以定义为,给定一个半衰期𝐻,每隔𝐻期IC的权重值会以指数下降的方式降低一半。
因子IC/IC_IR半衰期加权方法
经过测试,在对大部分不同类型但衰减速度相同的因子做多因子IC或IC_IR半衰期加权时,半衰期参数𝐻等于因子本身的半衰期H_Factor时,组合的表现可以达到最好或者接近最好。例如我们在对两个半衰期均为4的成长因子“单季度营业利润同比增长率”和“单季度营业收入同比增长率”做IC半衰期加权时,半衰期参数𝐻等于4时,组合的表现在所有加权方法里可以达到最好。IC_IR从等权组合的0.47提升到0.55,第一分位组合年化超额收益从等权组合的12.73%提升到14.16%。
时间序列因子值加权方法(采用最大化复合IC_IR加权方法)
我们利用复合因子IC_IR最大化的方法搭建了一套基于单个因子不同历史期限暴露值的时间序列加权方法,发现利用历史因子值进行加权的效果总体上比仅用当期因子值要好,当历史样本期T等于因子的半衰期H_Factor时,效果最佳。例如EP_TTM因子,我们利用过去3期的因子值进行最大化复合因子IC_IR加权的效果最好,复合因子的IC达到6.64%,相比仅用当期因子的IC值(4.99%)提升较大,IC_IR达到1.04,而第一分位组合年化超额收益达到18%,相比仅用当期因子的超额收益(8.68%)有将近10%的年化超额收益提升。
IC半衰期加权多因子组合
我们构建一个动态IC半衰期加权方法多因子组合,组合方法按因子半衰期分类,大类因子间等权 ,大类因子内按照因子IC半衰期加权(即半衰期参数𝐻取各因子本身的半衰期H_Factor),每期选择因子打分排名前100的股票作为投资组合。组合收益在所有加权方法里面表现最优,最近十年的累计超额收益达到727%,年化超额收益23.52%,夏普比率为2.08,除了2017年市场风格比较极端跑输指数之外,其余年份都能够取得超过10%的超额收益。
因子信息衰和因子IC半衰期的定义
因子信息衰减
信息具有其时效性,对于选股因子而言,每个股票在其之上的暴露程度便是投资者所观察到的“信息”,该信息同样具有时效性,一般情况下,随着时间的滞后,信息的价值将逐步下降。
因子IC的时间衰减
因子IC的时间衰减是被提及最多的一个因子衰减概念,用以衡量一个因子对未来的预测能力能持续多久。当一个指标时间衰减过快时,可能会导致组合较高的换手,交易成本会大幅侵蚀模型的盈利能力。通过计算当期(t)因子值和滞后n期的收益率,我们可以得到IC的时间序列: 可以简单的用IC半衰期来衡量IC时间衰减的快慢,由于我们这边主要是以月频来计算因子的IC,因此IC半衰期可定义为月度IC第一次下降到一半或一半以下所用的时间。同理,我们也可以计算IC_IR的半衰期和衰减速度。
单因子衰减分析
下面我们选取A股市场中常见的28个选股因子进行单因子衰减分析,分别求出IC和IC_IR的半衰期。因子类别划分为价值、成长、质量、反转、情绪(一致预期)和技术因子,最后每个类别选取1-2个有代表性的因子进行展示。
回测时间:最近10年(2008年12月-2018年12月)
样本池:全市场(后面单因子衰减分析的PPT均为全市场)、沪深300、中证500样本内分别做测试
股票筛选:每月底剔除停牌、一字板、上市未满半年和ST股票,月频调仓
因子处理:极值处理(剔除3倍标准差之外的样本)、缺失值处理(直接剔除)、中性化处理(因子标准化值对流通市值对数标准化值和中信一级行业哑变量进行回归的残差)
最大衰减期数选择:10期
单因子衰减分析(价值因子EP_TTM)
我们首先看看价值因子EP_TTM的衰减情况。EP_TTM因子的当期(即衰减0期)IC为0.046,衰减3期的IC为0.02,第一次低于当期IC的一半,因此我们定义EP_TTM因子的半衰期为3。
单因子衰减分析(价值因子BP_LYR)
我们再看看价值因子BP_LYR的衰减情况。同理BP_LYR因子的当期(即衰减0期)IC为0.046,衰减3期的IC为0.02,第一次低于当期IC的一半,因此我们定义BP_LYR因子的半衰期为3。 \n
\
单因子衰减分析(成长因子SaleEarnings_SQ_YoY)
我们再看看成长因子的表现情况,我这边选取了单季度营业利润同比增长率SaleEarnings_SQ_YoY因子,其半衰期为4期。
单因子衰减分析(质量因子ROE_TTM)
质量因子选取了ROE_TTM因子,其半衰期为4期。
单因子衰减分析(动量/反转因子Momentum_1m)
动量/反转因子选取了一个月收益率Momentum_1m因子,这个因子比较特别,当期IC为非常明显的负向因子,高达-0.069,而衰减1期的IC均值已经下降到-0.014,因此其半衰期可能远小于1个月,但我们这边的分析都基于月频,因此把其半衰期定义为1期。
单因子衰减分析(情绪因子GrowthProfit_FY1_3M)
情绪(一致预期)因子选取了GrowthProfit_FY1_3M因子,计算公式为(预测净利润FY1/预测净利润FY1_三月前-1),其半衰期为2期。
单因子衰减分析(技术因子TurnoverAvg1M)
技术因子选取了过去一个月日均换手率TurnoverAvg1M因子,其半衰期为3期。
单因子衰减分析(技术因子Volatility1M)
另外一个技术因子选取了过去一个月日收益波动率Volatility1M因子,其半衰期为3期。
单因子衰减分析(单因子IC半衰期汇总)
我们把常用的28个选股因子的IC半衰期做一个汇总,这边按照全市场、沪深300指数样本池和中证500指数样本池分别进行测试,标红色为IC显著(即IC绝对值大于等于0.02)的因子,由于测试中的最大衰减期数选择为10期,因此半衰期大于10期的统一写为>10。
单因子衰减分析(单因子IC_IR半衰期汇总)
同理,28个选股因子的IC_IR半衰期的汇总如下,即因子IC_IR第一次下降到一半或一半以下所用的时间:
\
IC半衰期加权方法
IC半衰期加权方法介绍
2017年以来,市场风格切换迅速,传统的市值、反转等因子都纷纷失效,基于长期IC均值(一般采用因子最近12个月或24个月的IC均值进行加权)或IC_IR均值等方式进行加权的多因子构建方式不能适应短期多变的市场,大部分都产生了较大的回撤。为此,我们需要对不同的选股因子在不同样本池的衰减速度进行分析,以做到因子加权时灵活配置因子权重,以适应复杂多变的市场。
一般采用的IC均值加权方式相当于为对过去每期的因子IC等权分配权重,假定因子i过去𝑁 期的因子IC向量 ,则因子i的当期权重为: 从前面的单因子衰减分析可知大部分因子的IC衰减速度较快,所以在做因子IC加权时理应对因子近期的IC给与更大的权重分配,这样才能更好地适应市场短期的变化。这里,我们引入半衰期权重来衡量其影响。半衰期权重可以定义为,给定一个半衰期𝐻,每隔𝐻期IC的权重值会以指数下降的方式降低一半。即给定半衰期𝐻,IC序列长度𝑁,则半衰期权重向量
,其中 下面,我们看下半衰期𝐻=2,序列长度𝑁=12时的各期IC权重值序列: \n
再看下半衰期𝐻=2,序列长度𝑁=24时的各期IC权重值序列:
\n
从上面两个不同序列长度𝑁的各期IC权重序列可以看出,前5大IC权重占比均接近85%,前10大权重占比接近98%,因此序列长度N取12或24对最终的因子IC合成权重影响不大。 我们再看一个具体实例,对两个反转因子Momentum_1m(1个月反转)和Momentum_3m(3个月反转)做IC半衰期加权时,我们分别选取不同的IC样本序列长度N,发现N从5开始一直到100,两个选股因子的最终权重变化较小,因此序列长度N对因子的最终权重影响较小,影响程度几乎可以忽略,我们在之后的实证中主要关注半衰期参数𝐻的选取: \n
通过前面分析,在做多因子IC半衰期加权时,半衰期参数𝐻的选取最为重要。而我们在第二节单因子衰减速度的研究中发现不同样本池和不同因子类别的因子衰减速度有较大差异(即单因子的半衰期H_Factor有较大不同)。因此从逻辑上出发,在做因子IC半衰期加权时,我们首先需要对相同种类或者相同衰减速度的因子进行合并归类,而不是对所有因子同时做加权处理。
但是对于相同类型或相同衰减速度的因子怎样进行合并呢?下面,我们有个想法,是否具有相同衰减速度的同类型因子在做IC半衰期加权时,半衰期参数𝐻取因子本身的半衰期H_Factor时,组合的最终表现较好?
我们分别选取归属于成长、反转和价值的一对选股因子进行分析,分别做IC测试和五分位测试(红色代表表现最好或接近最好的一组,基准选取中证全指指数),回测时间和因子处理方法和单因子一致。其中各组合分别为因子等权、因子IC均值加权(IC样本序列长度N=12)、IC半衰期加权( IC样本序列长度N=12,半衰期参数𝐻分别为1、2、3、4、5)。
IC半衰期加权方法(成长因子合成)
下面,我们看下两个成长因子SaleEarnings_SQ_YoY(单季度营业利润同比增长率)和Sales_SQ_YoY(单季度营业收入同比增长率)的因子加权方法对比,两个因子的半衰期均为4。其中因子加权方法从左到右分别为因子等权、因子IC均值加权(IC样本序列长度N=12)、IC半衰期加权( IC样本序列长度N=12,半衰期参数𝐻分别为1、2、3、4、5)。经过检测,IC_IR表现最好的是IC半衰期加权(半衰期参数𝐻为3)方法,IC半衰期加权(半衰期参数𝐻为4)方法排名第二,而第一分位超额收益表现最好的是IC半衰期加权(半衰期参数𝐻为4)方法。
\
IC半衰期加权方法(反转因子合成)
下面,我们再看下两个反转因子Momentum_1m(最近一个月收益率)和Momentum_3m(最近三个月收益率)的因子加权方法对比,两个因子的半衰期均为1。IC_IR表现最好的是IC半衰期加权(半衰期参数𝐻为2)方法,IC半衰期加权(半衰期参数𝐻为1)方法排名第三,而第一分位超额收益表现最好的是IC半衰期加权(半衰期参数𝐻为1)方法。
IC半衰期加权方法(价值因子合成)
下面,我们再看下两个价值因子EP_TTM和BP_LYR的因子加权方法对比,两个因子的半衰期均为3。IC_IR表现最好的是IC半衰期加权(半衰期参数𝐻为3)方法,而第一分位超额收益表现最好的是IC半衰期加权(半衰期参数𝐻为1)方法,IC半衰期加权(半衰期参数𝐻为3)方法排名第三。
IC半衰期加权方法(不同类型因子合成)
从上面三组同类型且相同衰减速度的合成因子表现可以看出,在做因子IC半衰期加权时,半衰期参数𝐻取因子本身的半衰期H_Factor时,组合的表现最好或者接近最好(从复合因子的IC/IR、第一分位组合超额收益/夏普比率的表现来看),这也验证了我们需要把相同半衰期H_Factor的因子进行合并的逻辑猜想。
而对于不同类型但衰减速度相同的因子,是否有同样的规律呢?下面我们选取了EP_TTM、BP_LYR、TurnoverAvg1M、Volatility1M共4个选股因子,其中EP_TTM、 BP_LYR属于价值因子,而TurnoverAvg1M、Volatility1M属于技术因子,4个因子的衰减速度一样(半衰期H_Factor都为3)。其中因子加权方法从左到右分别为所有因子等权、大类因子间等权大类因子内IC均值加权(IC样本序列长度N=12) 、所有因子IC均值加权(IC样本序列长度N=12)、IC半衰期加权( IC样本序列长度N=12,半衰期参数𝐻分别为1、2、3、4、5)。经过检测,IC_IR表现最好的是IC半衰期加权(半衰期参数𝐻为2)方法,IC半衰期加权(半衰期参数𝐻为3)方法排名第二,而第一分位超额收益表现最好的是IC半衰期加权(半衰期参数𝐻为2)方法,IC半衰期加权(半衰期参数𝐻为3)方法排名第二。 \n
下面两图是各组合的IC均值和第一分位组合超额收益图:
\n
\
IC半衰期加权方法(不同指数样本池的因子合成效果)
下面我们再看下IC半衰期加权方法在沪深300、中证500指数样本池内的选股效果对比,具体选股方法和前面的基本一致,只是选股样本池变为沪深300或中证500指数样本池,另外组合做了行业中性处理(即组合在各行业的市值分布与对应指数样本池保持一致)。这里选取两个反转因子Momentum_1m(最近一个月收益率)和Momentum_3m(最近三个月收益率)作为例子:
\n
经过测试,在对70%以上不同类型但衰减速度相同的因子做多因子IC半衰期加权时,半衰期参数𝐻等于因子本身的半衰期H_Factor时,组合的表现可以达到最好或者接近最好,另外IC半衰期加权组合的表现一般比所有因子等权组合、大类因子间等权大类因子内IC均值加权组合好。这个规律在沪深300、中证500指数样本内同样存在。
IC_IR半衰期加权方法
这一节我们测试多因子的IC_IR半衰期加权方法的效果。经过测试,我们发现与IC半衰期加权方法类似,大部分因子当因子组合的半衰期参数𝐻等于因子本身的半衰期H_Factor时,组合的表现最好或者接近最好,另外IC_IR半衰期加权组合比因子等权组合、大类因子间等权大类因子内IC_IR均值加权组合好。具体可以看下面例子:
首先同样是SaleEarnings_SQ_YoY(单季度营业利润同比增长率)和Sales_SQ_YoY(单季度营业收入同比增长率)两个成长因子的合成方法效果对比:
然后是Momentum_1m(最近一个月收益率)和Momentum_3m(最近三个月收益率)两个反转因子的合成方法效果对比: 最后是EP_TTM、BP_LYR和TurnoverAvg1M共3个选股因子,其中EP_TTM、 BP_LYR属于价值因子,而TurnoverAvg1M属于技术因子,3个因子的衰减速度一样(半衰期H_Factor都为3)。
\n
下面两图是3选股因子组合的IC均值和第一分位组合超额收益图:
单因子时间序列衰减加权方法
我们在前面两节探讨了多因子在横截面上的因子衰减加权方法(包括IC半衰期加权和IC_IR半衰期加权),下面开始我们探讨因子衰减在单因子时间序列上的加权方法。
我们在第二节的单因子衰减分析可以看出,所有因子都有一定的衰减时间(不管是因子IC还是因子IC_IR),如EP_TTM(市盈率)因子的IC和IC_IR半衰期均为3期,这也表明最近3期的市盈率因子暴露值均对未来一期的因子收益有影响,而我们一般在对未来一期的因子收益率做预测时仅用当期的因子暴露值,而忽略之前历史因子值的影响,这种处理方法对于一些有较长衰减期的财务类因子例如价值、成长、质量等因子显然不太合适。因此从直观上看,我们应该搭建一套针对单个因子不同历史期限暴露值的时间序列加权方法。
单因子时间序列衰减加权方法(EP_TTM各期因子等权)
下面我们首先看下等权方法在单因子时间序列上的加权效果,下面以EP_TTM为例,下表中的“单因子”列为仅用当期因子值,“过去1期”列为用当期和过去1期共两期的因子值等权合成,“过去2期”列为用当期、过去1期和过去2期共三期的因子值等权合成,以此类推。所有因子值都做了横截面标准化处理: 从上面对EP_TTM(市盈率)单因子时间序列上的加权效果可以看出,利用过去1-5期因子值等权合成后的选股效果均不如仅用当期的因子值(从IC和IC_IR值可以看出),而当期和过去1期因子值等权合成的因子超额收益最高,结合两者来看没有显著的规律。因此我们需要探讨一种更为有效的因子合成方法以最大化地利用历史因子暴露值。由于我们主要看复合因子的IC_IR来判断选股效果,因此我们可以尝试利用过去N期的因子暴露值,采用复合因子IC_IR最大化的方法来合成。
单因子时间序列衰减加权方法(最大化复合因子IC_IR加权方法介绍)
下面我们来简单介绍下复合因子IC_IR最大化的方法。假设我们有N个因子,各因子的IC均值为 ,IC的协方差矩阵我们定义为Σ。每个因子的权重我们定义为w=(w1,w2,…,wN),则可得: 其中IR为复合因子的IC_IR,为了使得IR最大化,可以对因子权重w求偏导数,得到: 对这两者的估计质量直接决定了复合因子的IC_IR准确度。
我们在计算因子IC的协方差矩阵时,最简单的是使用协方差矩阵的无偏估计即样本协方差阵。但问题在于,如果我们的因子数量较多,其协方差矩阵就不一定可逆。即便它是可逆的,样本协方差矩阵的逆矩阵也不是协方差矩阵逆矩阵的无偏估计。 其中N指的是因子个数,T指的是样本期(即往前取几期的数据),如果T接近或小于N,样本协方差矩阵逆的估计偏差将非常之大。
基于以上问题, Ledoit在2004年提出了一种压缩估计的估计方法。它的基本思想使用一个方差小但偏差大的协方差矩阵 另外我们后面的测试样本主要取过去5期的因子值计算(即因子个数M=5),为了使协方差可逆,我们需要选取一个较长的样本期T,这里采用过去24个月的历史样本(样本期T=24)来计算IC和Σ,然后采用Ledoit(2004) 压缩估计量方法求出因子IC协方差矩阵Σ。下面我们采用复合因子IC_IR最大化的方法来对EP_TTM(市盈率)因子进行时间序列加权: 下面两图是各组合的IC均值和第一分位组合的超额收益图: 不管是选股组合的IC、IC_IR还是第一分位超额收益、夏普比率,利用过去的因子值进行加权的效果总体上比仅用当期因子值要好。值得注意的是,我们利用过去3期的因子值进行最大化复合因子IC_IR加权的效果最好,复合因子的IC达到6.64%,IC_IR达到1.04,第一分位组合年化超额收益达到18%。而从我们的前面分析中,EP_TTM因子的半衰期H_Factor为3期,通过检测样本期取最近3期的因子值做加权的效果最好,因此在做单因子的时间序列加权,因子的半衰期H_Factor是否也是最优参数呢?
我们接下来再看下在其他样本池选股是否具有相同规律,下面是EP_TTM因子在中证500指数样本池内的选股效果,具体选股方法和前面的基本一致,只是选股样本池变为中证500指数样本池,另外组合做了行业中性处理(即组合在各行业的市值分布与对应指数样本池一致): EP_TTM因子在中证500指数样本池的效果同样很好,效果最好的仍然是利用过去3期的因子加权合成,即样本期T与EP_TTM因子的半衰期H_Factor一致。另外我们也测试了其他因子在不同样本池的效果,发现大部分因子都符合这个规律。即在做单因子的时间序列加权上,单因子的半衰期H_Factor仍然是个最优参数,这和我们前面在横截面上做IC、IC_IR半衰期加权时的最优参数一致。这也证明了因子的半衰期H_Factor在多因子加权方法上的重要性,由于因子的半衰期H_Factor在足够长的测试样本内基本不会变化,因此其在多因子选股里可以作为一个稳健的最优参数,后期我们可以对其进行拓展和深入研究。
动态IC半衰期加权多因子组合展示
这节我们重新回到多因子IC半衰期加权方法,第三部分主要介绍的是相同半衰期的因子IC半衰期合成,如果是不同半衰期的因子我们怎样进行多因子加权呢?下面我们展示多种不同半衰期因子的多因子加权组合进行对比,选取了EP_TTM、BP_LYR、TurnoverAvg1M、Volatility1M、Momentum_1m、Momentum_3m、SaleEarnings_SQ_YoY、Sales_SQ_YoY共8个选股因子,各因子的因子描述和半衰期如下图所示:
\n
因子值用的是当期因子值,单因子处理方法和前面一致,多因子组合方法选取了9种不同的方法如下表。第1和第2种方法为我们常用的方法,即按因子所属的类别来分类,大类因子间等权合成,大类因子内按照因子IC过去12个月的均值加权或IC半衰期加权(半衰期参数任意取一个数,设为3),后面7种方法为按因子的半衰期分类,大类因子间等权,大类因子内按照因子IC过去12个月的均值加权或IC半衰期加权,最后5种IC半衰期加权方法的半衰期参数𝐻均取固定的参数。而第3种标红色IC半衰期加权方法的半衰期参数𝐻取各因子本身的半衰期H_Factor,由于相同半衰期的因子已经归为一类,因此每个大类的半衰期参数𝐻一致,此方法为动态IC半衰期加权方法。最后在全市场里每期选择因子打分排名前100的股票作为投资组合。最近10年的超额收益对比如下表所示:
\n
可以看出,标红色的动态IC半衰期加权方法表现最好,最近10年的累计超额收益达到727%,年化超额收益为23.52%,夏普比率为2.08。这种方法可以简单归纳为:1、按因子的半衰期分类,而不是按照传统的因子类别来分类;2、大类因子内做IC半衰期加权,半衰期参数𝐻=因子本身的半衰期H_Factor(把相同半衰期的因子归类后,从前面分析可知在对相同半衰期因子做IC半衰期加权时这种方法可以达到最优或者接近最优的效果)。
另外,我们看下动态IC半衰期加权方法多因子组合各年度的超额收益和累计超额收益净值,这里由于是在全市场选股,因此基准指数选了中证全指。我们看到除了2017年市场风格比较极端(极个别大盘蓝筹股暴涨)跑输指数之外,其余年份都能够取得超过10%的超额收益,2009年和2015年的超额收益甚至达到50%以上:
\n
总结和思考
因子IC的时间衰减是被提及最多的一个因子衰减概念,用以衡量一个因子对未来的预测能力能持续多久。可以简单的用IC半衰期来衡量IC时间衰减的快慢,IC半衰期的定义为月度IC下降到一半所用的时间。同理,我们也可以计算IC_IR的半衰期和衰减速度。
从单因子衰减分析可知大部分因子的IC衰减速度较快,所以在做因子IC加权时理应对因子近期的IC给与更大的权重分配,这样才能更好地适应市场短期的变化。这里,我们引入半衰期权重来衡量其影响。半衰期权重可以定义为,给定一个半衰期𝐻,每隔𝐻期IC的权重值会以指数下降的方式降低一半。
在做因子IC半衰期加权时,半衰期参数𝐻取因子本身的半衰期H_Factor时,组合的表现最好或者接近最好。由此可见,我们在做因子IC半衰期加权时可以按照因子衰减速度进行归类合并而不是按照因子类型进行合并。
大部分因子当因子组合的半衰期参数𝐻等于因子本身的半衰期H_Factor时,多因子的IC_IR半衰期加权方法的组合表现也是最好或者接近最好。
我们利用复合因子IC_IR最大化的方法搭建了一套基于单个因子不同历史期限暴露值的时间序列加权方法,发现利用历史因子值进行加权的效果总体上比仅用当期因子值要好,当历史样本期T等于因子的半衰期H_Factor时,效果最佳。
不管是在横截面上做IC、IC_IR半衰期加权,还是单因子的时间序列加权上,单因子的半衰期H_Factor均为一个最优参数,这也证明了因子的半衰期H_Factor在多因子加权方法上的重要性,由于因子的半衰期H_Factor在足够长的测试样本内基本不会变化,因此其在多因子选股里可以作为一个稳健的最优参数,后期我们可以对其进行拓展和深入研究。
我们构建一个动态IC半衰期加权方法多因子组合,组合方法按因子半衰期分类,大类因子间等权 ,大类因子内按照因子IC半衰期加权(即半衰期参数𝐻取各因子本身的半衰期H_Factor),每期选择因子打分排名前100的股票作为投资组合。组合最近十年的累计超额收益达到727%,年化超额收益23.52%,夏普比率为2.08,除了2017年市场风格比较极端跑输指数之外,其余年份都能够取得超过10%的超额收益。