摘要
本文对101个技术因子进行测试,其中存在具备长期稳定选股能力的因子
本文测试的101个技术因子均是由价量数据计算得来的,有些因子的构建公式较为复杂,难以直观理解其中蕴含的逻辑。我们对不同调仓周期、不同因子处理方式、不同回测区间下的因子测试结果进行对比,筛选出7个比较有效的因子,与4个常见风格因子(对数总市值、过去20日收益率、过去20日平均换手率、过去20日波动率)进行对比,发现筛选出的因子具有长期稳定选股能力,IC_IR(信息比率)值明显高于4个风格因子。观察这些因子的计算公式发现,它们的构建逻辑比较类似,都是选择存在价量背离现象的个股。
因子处理方式、调仓周期的改变会对测试结果造成一定影响
在本文测试的技术因子中,大部分选股效果较好的因子在做行业及市值中性处理时IC_IR值较高,说明剔除了行业、市值这两个最重要的风险因素后因子效果得到了普遍提升。我们筛选出的7个有效因子的Rank IC衰减速度都与过去20日收益率因子相当或稍慢一些,而过去20日收益率因子是比较传统的适于月频调仓的因子,因此可以推测这7个有效因子也适于月频调仓。实际上,通过分层测试法可以证实这7个因子确实都比较适合月频调仓,其中也存在2个因子同时适合月频或双周频调仓。这些因子在周频调仓设置下受到过高的交易成本影响,效果有所降低。
筛选出的7个因子头部选股能力均有限,构建组合时需配置适量数目个股
为了考察因子的头部选股能力,我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,j取值范围为10~1500。测试结果显示,在达到年化收益率最高时,因子Alpha3,13,15,16,44,50,55的最优j取值分别为400,80,80,40,200,80,400,说明这些因子在只选取头部少量个股时效果均达不到最优,需选取适量股票构建较为稳健、分散的投资组合。并且,这些因子头部组合的超额收益并不是十分稳定,而多空收益则稳定得多,说明因子多空收益的良好表现部分源于空头组合,而A股市场很难做空个股,所以要理性看待。
筛选出的7个因子构建逻辑类似,都是选择存在价量背离现象的个股
我们筛选出的7个有效因子构建逻辑比较类似,核心算法都是f(X,Y,d),其中函数f为计算相关系数或协方差的函数,变量X为日频价格数据,变量Y为日频交易量数据,d是一个取值在3~10之间的常数。f(X,Y,d)的作用在于探查个股在过去d个交易日的价量联动或背离属性,结合测试结果来看,这些因子的逻辑都是选择存在价量背离现象的个股。实际上,这些因子的计算公式都是比较简洁、易理解的,说明因子的构建方式并不是越复杂越好,我们在挖掘因子的过程中也可以借鉴本文待测因子中比较好的选股逻辑,通过替换变量、函数等方式获得属于自己的Alpha因子。
风险提示:单因子测试结果是历史经验的总结,如果市场环境改变,存在失效的可能。本文仅对因子在全部A股内的选股效果进行测试,测试结果不能直接推广到其它股票池内。技术因子的构建方式比较复杂,其中一些因子的构建逻辑难以解释,使用需谨慎。
技术因子的选取及测试框架
技术因子的选取
本文是华泰多因子系列研究第十一篇,是单因子测试系列的第九篇。在多因子系列首篇报告中,我们系统地阐述了多因子模型的基本理论,详细描述了多因子模型构建的流程,在多因子系列第二篇到第九篇报告中,我们分别对估值、成长、动量反转、换手率、波动率、资金流向、财务质量、一致预期类因子单独进行详细的研究和检验,通过综合对比评价,筛选出能持续获得稳健收益的优质因子,这正是构建多因子选股模型的关键一步。在多因子系列第十篇报告中,我们对因子合成环节进行了一些粗浅的探讨,本报告作为该系列第十一篇,我们将视角移回单因子测试环节,将主要针对101个技术因子(下文将该待测因子集简称为“101技术因子”)进行分析测试,通过回归法、IC值分析、分层测试法等方法检验各因子的有效性,并试图对某些有效因子的逻辑进行解释。
本文将要测试的101个因子计算公式详见图表2~4,它们大多是由日频的价量数据计算得来,有些因子的构建公式较为复杂,难以直观理解其中的构建逻辑。这一点与多因子系列前作中涉及的风格因子有较大区别,之前测试的估值、成长、波动率等因子可以认为是投资者经验的演绎,“先有逻辑、后有公式”;本文中待测因子则是通过一些技术手段生成的,需要通过检验确定这些因子的有效性,再试图去解释其中一些有效因子的内涵,“先有公式、后有逻辑”。以上两种方式对应于选股方法中的“演绎法”与“归纳法”,都有一定的存在基础,本文中我们就要对这101个技术因子进行详细分析,从中挖掘出适用于A股市场的选股因子。这些因子构建公式中涉及的变量、函数、算符定义如图表1所示。
技术因子的测试框架
101技术因子是基于价量数据计算的,因子值变化比较快,一般而言因子有效时间也比较短。本报告选择5、10、20个交易日作为持仓周期,分别用回归法、IC值分析法对这101个因子进行测试并进行初步筛选,再用分层测试法对重点因子进行回测,主要观察TOP组的表现,最后将几种测试方法的结果综合对比筛选出有效因子,并试图对其中的构建逻辑进行解释。
技术因子与传统价量因子的相关性
我们将全回测期切分为三个时间阶段,时间阶段1(2010/1/4~2015/6/12)对应2010年初至2015年中,时间阶段2(2015/6/15~2016/12/30)对应2015年中至2016年底,时间阶段3(2017/1/3~2019/4/30)对应2017年初至回测期末。我们分别计算101技术因子与对数总市值、过去20日收益率、过去20日平均换手率、过去20日波动率因子的日频截面因子值相关系数,并在三个时间阶段内分别求平均值,如下表所示(若某因子在任一时间阶段与任一因子的相关系数均值都不大于0.2,则略去不展示)。
三个阶段内因子相关情况大体一致、细节略有不同。实际上,大部分因子与4个传统价量因子相关性都不大,可与后文因子测试结果形成参考对照。
单因子测试方法简介及结果分析
在多因子系列首篇报告《华泰多因子模型体系初探》(2016.09)中,我们系统地介绍了有效因子识别(即单因子测试)的理论基础和研究思路,在多因子系列第二篇报告《华泰单因子测试之估值类因子》中我们着眼于实践过程,给出了详细的流程操作说明。之后的第三至第六篇报告中均沿用第二篇报告的测试方法。在第七篇报告中,由于资金流向因子适于更短持仓周期,我们将月调仓改为10日调仓,其余测试细节保持不动。本报告中101技术因子的属性与测试细节与资金流向因子相仿,为避免阅读障碍,我们此处将单因子详细测试流程再复述一遍。
单因子测试方法简介
回归法
回归法是一种最常用的测试因子有效性的方法,具体做法是将第 T+1 期的因子暴露度向量与期的股票收益向量进行线性回归,所得到的回归系数即为因子在期的因子收益率,同时还能得到该因子收益率在本期回归中的显著度水平——t值。在某截面期上的个股的因子暴露度(Factor Exposure)即指当前时刻个股在该因子上的因子值。第期的回归模型具体表达式如下。
在所有截面期上,我们对T+1回归测试,能够得到该因子的因子收益率序列(即所有截面期回归系数构成的序列)和对应的t值序列。t值指的是对单个回归系数的t检验统计量,描述的是单个变量显著性,t值的绝对值大于临界值说明该变量是显著的,即该解释变量(期个股在暴露度)是真正影响因变量(期个股收益率)的一个因素。也就是说,在每个截面期上,对于每个因子的回归方程,我们设:
该假设检验对应的t统计量为
其中SE(a^T)代表回归系数a^T的标准差的无偏估计量。一般t值绝对值大于2我们就认为本期回归系数a^T是显著异于零的(也就是说,本期因子X对下期收益率具有显著的解释作用)。注意,我们在回归模型中加入了市值、行业因子,能在一定程度上规避市值、行业因素对财务质量因子的影响。
回归模型构建方法如下:
1. 股票池:全A股,剔除ST、PT股票,剔除每个截面期下一交易日停牌的股票。
2. 回溯区间:2010/1/4~2019/4/30。
3. 截面期:每个交易日作为截面期计算因子值,与该截面期之后5、10、20个交易日内个股收益进行回归。
4. 数据处理方法:
a) 因子计算方法详见图表1~4;
b) 中位数去极值:设第T期某因子在所有个股上的暴露度向量为D_i,D_M为该向量中位数,D_M1为向量|D_i - D_M|的中位数,则将向量D_i中所有大于|D_M +5D_M1|的数重设为D_i +5D_M1,将向量D_i中所有小于D_M -5D_M1的数重设为D_M -5D_M1;
c) 中性化:以行业及市值中性化为例,在第T期截面上用因子值(已去极值)做因变量、对数总市值因子(已去极值)及全部行业因子(0/1哑变量)做自变量进行线性回归,取残差作为因子值的一个替代,这样做可以消除行业和市值因素对因子的影响;
d) 标准化:将经过以上处理后的因子暴露度序列减去其现在的均值、除以其标准差,得到一个新的近似服从N(0,1)分布的序列,这样做可以让不同因子的暴露度之间具有可比性;
e) 缺失值处理:因本文主旨为单因子测试,为了不干扰测试结果,如文中未特殊指明均不填补缺失值(在构建完整多因子模型时需考虑填补缺失值)。
5. 回归权重:由于普通最小二乘回归(OLS)可能会夸大小盘股的影响(因为小盘股的财务质量因子出现极端值概率较大,且小盘股数目很多,但占全市场的交易量比重较小),并且回归可能存在异方差性,故我们参考Barra手册,采用加权最小二乘回归(WLS),使用个股流通市值的平方根作为权重,此举也有利于消除异方差性。
6. 因子评价方法:
a) t值序列绝对值均值——因子显著性的重要判据;
b) t值序列绝对值大于2的占比——判断因子的显著性是否稳定;
c) t值序列均值——与a)结合,能判断因子t值正负方向是否稳定;
d) 因子收益率序列均值——判断因子收益率的大小。
IC值分析法
因子的IC值是指因子在第T期的暴露度向量与T+1期的股票收益向量的相关系数,即
上式中因子暴露度向量X^T一般不会直接采用原始因子值,而是经过去极值、中性化等手段处理之后的因子值。在实际计算中,使用Pearson相关系数可能受因子极端值影响较大,使用Spearman秩相关系数则更稳健一些,这种方式下计算出来的IC一般称为Rank IC。
IC值分析模型构建方法如下:
1. 股票池、回溯区间、截面期均与回归法相同。
2. 先将因子暴露度向量进行一定预处理(下文中会指明处理方式),再计算处理后的T期因子暴露度向量和T+1期股票收益向量的Spearman秩相关系数,作为T期因子Rank IC值。
3. 因子评价方法:
a) Rank IC值序列均值——因子显著性;
b) Rank IC值序列标准差——因子稳定性;
c) IC_IR(Rank IC值序列均值与标准差的比值)——因子有效性;
d) Rank IC值序列大于零的占比——因子作用方向是否稳定。
分层回测法
依照因子值对股票进行打分,构建投资组合回测,是最直观的衡量因子优劣的手段。分层测试法与回归法、IC值分析相比,能够发掘因子对收益预测的非线性规律。也即,若存在一个因子分层测试结果显示,其Top组和Bottom组的绩效长期稳定地差于Middle组,则该因子对收益预测存在稳定的非线性规律,但在回归法和IC值分析过程中很可能被判定为无效因子。
分层测试模型构建方法如下:
1. 股票池、回溯区间、截面期均与回归法相同。
2. 换仓:在每个截面期核算因子值,构建分层组合,在截面期下一个交易日按当日收盘价换仓,交易费用默认为单边0.15%。
3. 分层方法:先将因子暴露度向量进行一定预处理(下文中会指明处理方式),将股票池内所有个股按处理后的因子值从大到小进行排序,等分N层,每层内部的个股等权重配置。当个股总数目无法被N整除时采用任一种近似方法处理均可,实际上对分层组合的回测结果影响很小。
4. 多空组合收益计算方法:用Top组每天的收益减去Bottom组每天的收益,得到每日多空收益序列r_1, r_2, r_3,...r_n,则多空组合在第n天的净值等于(1+r_1)(1+r_2)(1+r_3)...(1+r_n)。
5. 评价方法:全部N层组合年化收益率(观察是否单调变化),多空组合的年化收益率、夏普比率、最大回撤、月胜率等。
三种方法的关系
首先介绍一下回归法和IC值分析法之间的关系。
我们先介绍一个引理。设X,Y为两个向量,则[corr(X,Y)]^2=R^2,其中R^2为线性回归Y=aX + b或线性回归X=aY+b的可决系数(其中a, b是待回归系数)。
如果我们在单因子测试(线性回归法)中使用模型
(r是股票收益率,X是因子暴露度,c是常数项,c可以理解为市场因子)并且假设我们在计算因子IC值的时候,不预先对因子暴露度进行市值、行业调整了,就使用原始的因子暴露度X,则本期因子IC值为corr(X, r),根据引理,因子IC值的平方就等于单因子测试的回归模型的R^2。
所以,因子IC值本质上反映的是下期收益率和本期因子暴露度的线性相关程度(R^2的平方根),是使用该因子预测收益率的稳健性(IC值越大,这个因子的收益越稳定,波动越小);而回归法中计算出的因子收益率本质上是一个斜率,反映的是从该因子可能获得的收益率的大小,这并不能说明任何关于线性拟合优度的信息(也就是说,因子收益率很大时,也可能出现R^2很小的情形);至于回归法中计算出的t值,在一元线性回归中t值与R^2反映的信息一致(二者对应关系为,当R^2=0时t值也为0,当R^2=1时t值为无穷大),但是由于我们所采用的回归模型包括了行业变量,所以t值仅代表被测因子对股票收益的解释能力(而不能代表模型的整体拟合优度)。实际计算过程中因子会进行一些预处理,回归方程也有可能引入其它风格变量使其表达形式更复杂,导致IC值和t值无法理论上互推,但前面所述结论的本质不变。
总结一下,IC值反映模型整体线性拟合优度,t值反映被测单因子对模型的解释能力是否显著,因子收益率与前两者差别较大,它反映的是可能获得的收益率的大小,而对这个收益是否稳健未知。
其次介绍一下回归法和分层测试法之间的关系。
假设本期因子值与下期收益完全线性相关,满足
。此时IC值绝对值为1,回归法中的因子收益率为
。并且假设本期因子值X服从[0,1]均匀分布,那么当按因子从小到大等分N层测试时,第i层组合的下期收益为
,多空收益(第N层收益减去第1层收益)为
,也即说明分层测试法中的多空收益与回归法中的因子收益率具有一定程度的等价关系。实际上因子IC值大部分在0.1附近波动,所以回归拟合的因子收益率与分层测试下的多空收益也未必完全一致。
单因子回归法与IC值测试结果分析
首先,我们将展示图表2~4中的101技术因子的单因子回归法与IC值测试结果,并挑选出表现较好的因子进行详细展示。101技术因子都是基于价量数据计算的,与基本面类因子从逻辑和性质上都有较大区别,能与101技术因子类比的常见风格因子为动量反转、换手率、波动率因子。在《华泰单因子测试之财务质量因子》中,我们曾对常见风格因子在沪深300成分股、中证500成分股、全A股票池中分别进行测试对比,发现价量类因子一般在全A股票池中选股效果较好,而在沪深300成分股、中证500成分股票池中效果稍弱。实际上,这也与投资者的应用场景是相符的,一般来讲,中大盘股的量化选股模型更加依赖财务数据,小盘股或全市场量化选股模型更加依赖价量数据。所以本文中我们只展示在全A股票池中101技术因子的测试结果。
我们将调仓频率记为T(单位:交易日),当T=20且所有因子暂不做任何中性化处理时,所有因子的回归法、IC值分析结果如下图所示。由于因子数目较多,这里只节选展示IC_IR值在0.3以上的因子,并与四个常见风格因子(对数总市值、过去20日收益率、过去20日平均换手率、过去20日波动率)的测试结果进行对比。101技术因子中有89个在全回测期内的Rank IC均值是正数,有12个Rank IC均值是负数但绝对值都比较小,且IC_IR绝对值都小于0.3(不足以进入下表的展示范围)。我们选做对照组的4个常见风格因子都是负向的,此处先对因子值乘以-1之后再进行测试。另外一点需要说明的是,为了使测试结果更加客观,我们以回测期内每个交易日作为截面,与未来T日(下表中T=20)的个股收益向量做回归或计算IC值,这样得到的测试结果不存在“路径依赖”现象。
我们对上表中排名前7位的因子(Alpha3,13,15,16,44,50,55)与4个对照因子计算日频Rank IC累积曲线并作图如下。从下图中可以看出,4个对照因子的Rank IC最终累积值比较大,但是波动也比较大,排名前七位的101技术因子Rank IC累积曲线则要更加稳定一些,并在全回测期内都没发生明显回撤。这与上表的测试结果可以互相对照来看,排名前7位的101技术因子虽然Rank IC均值不如4个对照因子,但IC_IR是明显优于4个对照因子的。
改变因子处理方式及调仓周期对测试结果的影响
图表7中展示了T=20且因子不做中性化处理的测试结果,那么当改变因子处理方式及调仓周期时,因子的测试结果会发生怎样的改变?在接下来的测试中,我们取了三种可能的T值——20、10、5,分别对应于月频、双周频、周频调仓;同时取了四种可能的因子处理方式——不做中性化处理、仅做行业中性处理、同时做行业及市值中性处理、同时做行业及4个常见风格因子中性处理,其中4个常见风格因子即指图表7中最后4行的对照因子。我们在图表9、10中展示了以上12种情形下的因子IC_IR值(图表9对应全回测期的测试结果,图表10对应2017年初至回测期末的测试结果)。我们按每个因子在12种情形下的IC_IR最大值进行排序,选取前50名进行节选展示。
图表9、10中排序比较靠前的因子基本是一致的,说明这些因子没有因为2017年市场投资风格的改变而失效。大部分排序靠前的因子都是在因子做行业及市值中性处理时IC_IR值最高,说明剔除了行业、市值这两个最重要的风险因素后因子效果得到了普遍提升。在同时做行业及4个常见风格因子中性处理时,有些因子的效果下降比较多(比如Alpha27),说明这些因子的选股效果部分来源于4个常见风格因子,对风格因子做中性处理之后剩余的信息量减少明显。
我们在图表9、10中展示的IC_IR值都是非年化的,因此T=20、10、5时的IC_IR值无法形成直接比较。IC_IR的年化公式是用原始IC_IR值乘以根号下240/T,但IC_IR年化值仅在因子IC无衰减时具有比较意义(详见Qian等2007年的文章《Information Horizon,Portfolio Turnover,and Optimal Alpha Models》),我们将在下一小节中对排序靠前的因子的IC衰减效应进行测试,可以发现这些因子的IC衰减还是比较快的,与20日反转因子大致相当。在实际使用这些因子构建投资组合时,还需考虑调仓成本问题,T取值越小可能面临的调仓成本越大,在下下小节中我们会对排序靠前的因子进行分层测试,届时会涉及调仓成本的研究。
下面两图中,我们分别对因子Alpha13在不同因子处理方式下、在不同调仓周期下Rank IC值累积曲线进行展示。可以发现,曲线最终值稍有差别,但中间的变化趋势差别不大。请注意,根据前文的讨论,由于IC衰减现象的存在,不同调仓周期下Rank IC值的大小没有直接对比意义。
因子的IC衰减效应研究
接下来,我们对图表9、10中排序靠前的因子的IC衰减效应进行研究,此处假定T=20且因子不进行中性化处理。
设因子在交易日K收盘截面上计算得到的因子值向量为X^K,所有股票在K日之后20个交易日内的收益率向量为r_K^{K+20}(该收益率由K+20交易日复权收盘价除以K交易日复权收盘价再减1得来),则因子在该截面上的Rank IC值为X^K和r_K^{K+20}的Spearman秩相关系数。令i=0,1,2,...,则X^K和r_{K+i}^{K+20+i}的Spearman秩相关系数称为因子“滞后i期”的Rank IC值,随着i从0变化到240,因子Alpha3,13,15,16,44,50,55与4个对照因子的“滞后i期”的Rank IC均值(对全回测期所有截面计算均值)变化曲线如下图所示。
半衰期可以更精细地刻画因子的衰减速度,我们此处通过两种方式计算因子的半衰期。第一种,由于Rank IC近似以指数形式衰减,我们用函数y=c*e^{ax}去拟合上图曲线(a,c是待拟合参数),从而计算半衰期。第二种,我们直接找到上图曲线中Rank IC值首次衰减到一半时的滞后期数作为因子的半衰期。观察下表所展示的结果,我们发现这7个Alpha因子的半衰期大致与对照因子中的过去20日收益率因子相当或稍长一些,而过去20日收益率因子是比较传统的适于月频调仓的因子,因此我们有理由推测这7个Alpha因子也比较适于月频调仓,在下一小节中,我们将通过分层测试等方法加以论证。
有效因子的分层测试
在前三个小节中,我们主要通过回归法、IC值分析对101技术因子进行初筛,并选中了7个效果较好的因子,接下来我们将对这些因子逐个进行分层测试,考察它们在实际组合构建中的效果。在回测过程中,以某交易日收盘信息构建的分层组合,将在下个交易日以vwap价完成调仓,所有分层方式均为等权重等数量均分(按预处理后的因子值排序分层),每层组合内股票等权重配置。并且,下文中分层测试的结果均不存在“路径依赖”效应,我们以T=20为例说明构建方法:首先,在回测首个交易日K_0构建分层组合并完成建仓,然后分别在交易日K_i,K_{i+20},K_{i+40},...按当日收盘信息重新构建分层组合并完成调仓,i取值为1~20内的整数,则我们可以得到20个不同的回测轨道,在这20个回测结果中按不同评价指标(比如年化收益率、信息比率等)可以提取出最优情形、最差情形、平均情形等,以便我们对因子的分层测试结果形成更客观的认知。
Alpha13因子
我们对因子Alpha13进行分层回测(分二十层),交易费用取为单边0.15%,在全回测期内,我们统计了不同因子处理方式、不同调仓周期下的每层组合年化收益率均值(均值是指对T个不同的回测轨道取均值,详见图表14下方段落所述),如下图所示。
在不同调仓周期下,组合的年均换手率水平不同,因此交易成本设置方式可能会对回测结果产生比较大的影响。此处我们将交易费用分别取为单边0.2%、0.15%、0.1%,TOP层组合表现如下(TOP层是指分二十层测试中的第一层,下表中所有值均为T个不同回测轨道的均值)。可以发现,在交易费用取为单边0.1%时,三种调仓周期下TOP层表现比较接近,不过一般认为实际交易成本比单边0.1%要大一些,因此对于因子Alpha13还是T=20或10的TOP层更有优势。
投资者往往更关注Alpha因子的头部选股能力。我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,交易成本、调仓周期等设置均与分层测试相仿,在T=20时对每个可能的j取值均能生成20个不同的回测轨道,我们取这20个回测轨道中的年化收益率最大值、平均值、最小值作图如下。可以发现,因子Alpha13在j大于等于80之后平均年化收益率比较稳定,我们将j=80情形下累积超额收益及回撤曲线展示在图表18中(基准为中证500指数)。同时,我们将多空组合的累积收益及回撤曲线展示在图表19中,其中多头、空头组合分别是指分二十层测试的第一层、最后一层。在图表17~19中参数设置方式为:交易费用单边0.15%、T=20、因子做行业+市值中性处理。
Alpha16因子
我们对因子Alpha16进行分层回测(分二十层),交易费用取为单边0.15%,在全回测期内,我们统计了不同因子处理方式、不同调仓周期下的每层组合年化收益率均值(均值是指对T个不同的回测轨道取均值,详见图表14下方段落所述),如下图所示。
在不同调仓周期下,组合的年均换手率水平不同,因此交易成本设置方式可能会对回测结果产生比较大的影响。此处我们将交易费用分别取为单边0.2%、0.15%、0.1%,TOP层组合表现如下(TOP层是指分二十层测试中的第一层,下表中所有值均为T个不同回测轨道的均值)。可以发现,在交易费用取为单边0.1%时,三种调仓周期下TOP层表现比较接近,不过一般认为实际交易成本比单边0.1%要大一些,因此对于因子Alpha16还是T=20的TOP层更有优势。
投资者往往更关注Alpha因子的头部选股能力。我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,交易成本、调仓周期等设置均与分层测试相仿,在T=20时对每个可能的j取值均能生成20个不同的回测轨道,我们取这20个回测轨道中的年化收益率最大值、平均值、最小值作图如下。可以发现,因子Alpha16在j=40时平均年化收益率最高,我们将j=40情形下累积超额收益及回撤曲线展示在图表23中(基准为中证500指数)。同时,我们将多空组合的累积收益及回撤曲线展示在图表24中,其中多头、空头组合分别是指分二十层测试的第一层、最后一层。在图表22~24中参数设置方式为:交易费用单边0.15%、T=20、因子做行业+市值中性处理。
Alpha50因子
我们对因子Alpha50进行分层回测(分二十层),交易费用取为单边0.15%,在全回测期内,我们统计了不同因子处理方式、不同调仓周期下的每层组合年化收益率均值(均值是指对T个不同的回测轨道取均值,详见图表14下方段落所述),如下图所示。
在不同调仓周期下,组合的年均换手率水平不同,因此交易成本设置方式可能会对回测结果产生比较大的影响。此处我们将交易费用分别取为单边0.2%、0.15%、0.1%,TOP层组合表现如下(TOP层是指分二十层测试中的第一层,下表中所有值均为T个不同回测轨道的均值)。可以发现,在交易费用取为单边0.1%时,三种调仓周期下TOP层表现比较接近,不过一般认为实际交易成本比单边0.1%要大一些,因此对于因子Alpha50还是T=20的TOP层更有优势。
投资者往往更关注Alpha因子的头部选股能力。我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,交易成本、调仓周期等设置均与分层测试相仿,在T=20时对每个可能的j取值均能生成20个不同的回测轨道,我们取这20个回测轨道中的年化收益率最大值、平均值、最小值作图如下。可以发现,因子Alpha50在j=80时平均年化收益率最高,我们将j=80情形下累积超额收益及回撤曲线展示在图表28中(基准为中证500指数)。同时,我们将多空组合的累积收益及回撤曲线展示在图表29中,其中多头、空头组合分别是指分二十层测试的第一层、最后一层。在图表27~29中参数设置方式为:交易费用单边0.15%、T=20、因子做行业+市值中性处理。
Alpha44因子
我们对因子Alpha44进行分层回测(分二十层),交易费用取为单边0.15%,在全回测期内,我们统计了不同因子处理方式、不同调仓周期下的每层组合年化收益率均值(均值是指对T个不同的回测轨道取均值,详见图表14下方段落所述),如下图所示。
在不同调仓周期下,组合的年均换手率水平不同,因此交易成本设置方式可能会对回测结果产生比较大的影响。此处我们将交易费用分别取为单边0.2%、0.15%、0.1%,TOP层组合表现如下(TOP层是指分二十层测试中的第一层,下表中所有值均为T个不同回测轨道的均值)。可以发现,在交易费用取为单边0.1%时,三种调仓周期下TOP层表现比较接近,不过一般认为实际交易成本比单边0.1%要大一些,因此对于因子Alpha44还是T=20或10的TOP层更有优势。
投资者往往更关注Alpha因子的头部选股能力。我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,交易成本、调仓周期等设置均与分层测试相仿,在T=20时对每个可能的j取值均能生成20个不同的回测轨道,我们取这20个回测轨道中的年化收益率最大值、平均值、最小值作图如下。可以发现,因子Alpha44在j=200时平均年化收益率最高,我们将j=200情形下累积超额收益及回撤曲线展示在图表33中(基准为中证500指数)。同时,我们将多空组合的累积收益及回撤曲线展示在图表34中,其中多头、空头组合分别是指分二十层测试的第一层、最后一层。在图表32~34中参数设置方式为:交易费用单边0.15%、T=20、因子做行业+市值中性处理。
Alpha3因子
我们对因子Alpha3进行分层回测(分二十层),交易费用取为单边0.15%,在全回测期内,我们统计了不同因子处理方式、不同调仓周期下的每层组合年化收益率均值(均值是指对T个不同的回测轨道取均值,详见图表14下方段落所述),如下图所示。
在不同调仓周期下,组合的年均换手率水平不同,因此交易成本设置方式可能会对回测结果产生比较大的影响。此处我们将交易费用分别取为单边0.2%、0.15%、0.1%,TOP层组合表现如下(TOP层是指分二十层测试中的第一层,下表中所有值均为T个不同回测轨道的均值)。可以发现,在这三种交易费用设置下,都是T=20的TOP层表现比较好。
投资者往往更关注Alpha因子的头部选股能力。我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,交易成本、调仓周期等设置均与分层测试相仿,在T=20时对每个可能的j取值均能生成20个不同的回测轨道,我们取这20个回测轨道中的年化收益率最大值、平均值、最小值作图如下。可以发现,因子Alpha3在j=400时平均年化收益率最高,我们将j=400情形下累积超额收益及回撤曲线展示在图表38中(基准为中证500指数)。同时,我们将多空组合的累积收益及回撤曲线展示在图表39中,其中多头、空头组合分别是指分二十层测试的第一层、最后一层。在图表37~39中参数设置方式为:交易费用单边0.15%、T=20、因子做行业+市值中性处理。
Alpha15因子
我们对因子Alpha15进行分层回测(分二十层),交易费用取为单边0.15%,在全回测期内,我们统计了不同因子处理方式、不同调仓周期下的每层组合年化收益率均值(均值是指对T个不同的回测轨道取均值,详见图表14下方段落所述),如下图所示。
在不同调仓周期下,组合的年均换手率水平不同,因此交易成本设置方式可能会对回测结果产生比较大的影响。此处我们将交易费用分别取为单边0.2%、0.15%、0.1%,TOP层组合表现如下(TOP层是指分二十层测试中的第一层,下表中所有值均为T个不同回测轨道的均值)。可以发现,在交易费用取为单边0.1%时,T=20,10的TOP层表现比较接近,T=5的TOP层表现在三种交易费用下都比较弱。不过一般认为实际交易成本比单边0.1%要大一些,因此对于因子Alpha15还是T=20的TOP层更有优势。
投资者往往更关注Alpha因子的头部选股能力。我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,交易成本、调仓周期等设置均与分层测试相仿,在T=20时对每个可能的j取值均能生成20个不同的回测轨道,我们取这20个回测轨道中的年化收益率最大值、平均值、最小值作图如下。可以发现,因子Alpha15在j=80时平均年化收益率最高,我们将j=80情形下累积超额收益及回撤曲线展示在图表43中(基准为中证500指数)。同时,我们将多空组合的累积收益及回撤曲线展示在图表44中,其中多头、空头组合分别是指分二十层测试的第一层、最后一层。在图表42~44中参数设置方式为:交易费用单边0.15%、T=20、因子做行业+市值中性处理。
Alpha55因子
我们对因子Alpha55进行分层回测(分二十层),交易费用取为单边0.15%,在全回测期内,我们统计了不同因子处理方式、不同调仓周期下的每层组合年化收益率均值(均值是指对T个不同的回测轨道取均值,详见图表14下方段落所述),如下图所示。
在不同调仓周期下,组合的年均换手率水平不同,因此交易成本设置方式可能会对回测结果产生比较大的影响。此处我们将交易费用分别取为单边0.2%、0.15%、0.1%,TOP层组合表现如下(TOP层是指分二十层测试中的第一层,下表中所有值均为T个不同回测轨道的均值)。可以发现,在这三种交易费用设置下,都是T=20的TOP层表现比较好。
投资者往往更关注Alpha因子的头部选股能力。我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,交易成本、调仓周期等设置均与分层测试相仿,在T=20时对每个可能的j取值均能生成20个不同的回测轨道,我们取这20个回测轨道中的年化收益率最大值、平均值、最小值作图如下。可以发现,因子Alpha55在j=400时平均年化收益率最高,我们将j=400情形下累积超额收益及回撤曲线展示在图表48中(基准为中证500指数)。同时,我们将多空组合的累积收益及回撤曲线展示在图表49中,其中多头、空头组合分别是指分二十层测试的第一层、最后一层。在图表47~49中参数设置方式为:交易费用单边0.15%、T=20、因子做行业+市值中性处理。
关于因子构建逻辑的解释性探索
在下表中我们重新罗列了以上7个因子的计算公式,其中涉及的函数定义详见图表1。
可以发现,这些因子的构建方式是非常类似的,它们的核心算法都是f(X,Y,d),其中函数f(·)为correlation或covariance(即计算相关系数或协方差的函数),是整个计算公式中最关键的一环,变量X为日频价格数据(可能的X取法有OPEN、CLOSE、HIGH、LOW、VWAP或将它们进行简单复合计算),变量Y为日频交易量数据(下表中Y均为VOLUME),d是函数f(·)的一个参数,代表该函数正在计算过去d个交易日X与Y的相关系数或协方差,上表中d取值在3~10之间。f(X,Y,d)的作用在于探查个股在过去d个交易日的价量联动或背离属性,当价量变化趋势相同时函数f(·)的值较大,当价量变化趋势相反时函数f(X,Y,d)的值较小。由于因子计算公式前面都乘以了-1,以及我们上文测试结果显示因子值越大越好,所以这些因子的逻辑都是选择价量背离的个股。上表中涉及的其它函数(如rank、sum、ts_max、ts_min)均不影响f(X,Y,d)的本质所用。
在图表9、10中排序8~10位的因子Alpha27,26,40也都具有上述核心算法f(X,Y,d),其本质也是反映个股价量背离属性。实际上,这些因子的计算公式在101技术因子中都是比较简洁且利于理解的,说明因子的构建方式并不是越复杂越好,我们在自行探索技术因子构建方式的过程中,也可以借鉴101技术因子中蕴含的选股逻辑,通过替换变量、函数等方式获得属于自己的Alpha因子。
在这一小节的最后,我们还需要思考两个随之而生的问题:既然这些因子的构建逻辑如此相似,那么它们彼此之间相关度高吗?因子间进行正交化处理后的残差还有选股效果吗?我们分别计算了这7个因子两两之间日频截面因子值相关系数,并在全回测期内求平均值,如下表所示。可以发现,它们彼此之间还是存在比较明显的共线性现象的。
我们按照图表9中因子排序,对这7个因子进行有顺序的正交化处理。具体步骤为:对排名第一的Alpha13因子做行业、市值中性处理,对排名第二的Alpha16因子做行业、市值、Alpha13中性处理,对排名第三的Alpha50因子做行业、市值、Alpha13、Alpha16中性处理,依此类推,直到对排名第七的Alpha55因子做行业、市值和图表51中其它6个Alpha因子中性处理。然后我们对这7个因子在全A股票池中做回归及IC值分析,生成类似图表7的一个测试结果,如下表所示。结果显示,做有顺序正交化处理之后,因子IC_IR值还是有所下降的,若要将这些因子加入自己原有的因子库,还需考虑它们在和因子库中其它因子做正交化处理后是否还有残余价值。
总结与思考
1.本报告主要测试了101个技术因子,全部因子都是由价量数据计算而得。我们使用回归法、IC值分析法对不同调仓周期、不同因子处理方式下的所有因子测试结果进行对比总结,初步筛选出7个比较有效的因子(Alpha3,13,15,16,44,50,55)进行详细分层测试。根据测试结果,我们筛选出的7个因子都具备比较稳定的选股能力,与4个常见风格因子(对数总市值、过去20日收益率、过去20日平均换手率、过去20日波动率)相比,虽然Rank IC均值稍低一些,但Rank IC累积曲线更为平稳,在全回测期内均无明显回撤,IC_IR是明显优于4个对照因子的。
2.回测时间段、因子处理方式、调仓周期的改变都可能对因子测试结果造成不同程度影响。在全回测期(2010/1/4~2019/4/30)及部分回测区间(2017/1/3~2019/4/30)内效果排序靠前的因子基本是一致的,说明这些因子没有因为2017年市场投资风格的改变而失效。大部分排序靠前的因子都是在因子做行业及市值中性处理时IC_IR值最高,说明剔除了行业、市值这两个最重要的风险因素后因子效果得到了普遍提升。不同调仓周期下IC_IR原始值或年化值都没有直接比较的意义(因为存在因子衰减效应),在分层测试中我们发现,Alpha13,44比较适合月频或双周频调仓(T=20或10),Alpha3,15,16,50,55比较适合月频调仓(T=20)。
3.我们考察了7个有效因子(Alpha3,13,15,16,44,50,55)的Rank IC衰减效应,发现它们的半衰期与对照因子中的过去20日收益率因子相当或稍长一些,而过去20日收益率因子是比较传统的适于月频调仓的因子,从这个角度来讲,这7个有效因子更适于月频调仓也是可以理解的。
4.在分层测试中,我们将交易费率分别取为单边0.2%、0.15%、0.1%,发现取值0.1%时,大部分因子在三种调仓周期下TOP层表现接近,不过一般认为实际交易成本比单边 0.1%要大一些,还是T=20(或10)的TOP层表现更有优势。
5.为了考察因子的头部选股能力,我们将所有个股按截面因子值排序,选前j只股票等权配置构建投资组合,j取值范围为10~1500。测试结果显示,因子Alpha16在j=40时平均年化收益率较高,因子Alpha13,15,50在j=80时平均年化收益率较高,因子Alpha44在j=200时平均年化收益率较高,因子Alpha3,55在j=400时平均年化收益率较高,说明这些因子在只选取头部少量个股时效果均达不到最优,需选取适量股票构建较为稳健、分散的投资组合。并且,这些因子头部组合的超额收益并不是十分稳定,而多空收益则稳定得多,说明因子多空收益的良好表现部分源于空头组合,而A股市场很难做空个股,所以要理性看待。
6.通过研究效果较好的几个因子的计算公式发现,它们的构建逻辑比较类似,都是在刻画个股的价量联动或背离属性。测试结果显示,它们的选股逻辑都是选择价量背离的个股。实际上,这些因子的计算公式在101技术因子中都是比较简洁且利于理解的,说明因子的构建方式并不是越复杂越好,我们在自行探索技术因子构建方式的过程中,也可以借鉴101技术因子中蕴含的选股逻辑,通过替换变量、函数等方式获得属于自己的Alpha因子。
风险提示
单因子测试结果是历史经验的总结,如果市场环境改变,存在失效的可能。本文仅对因子在全部A股内的选股效果进行测试,测试结果不能直接推广到其它股票池内。技术因子的构建方式比较复杂,其中一些因子的构建逻辑难以解释,使用需谨慎。
免责申明
本公众平台不是华泰证券研究所官方订阅平台。相关观点或信息请以华泰证券官方公众平台为准。根据《证券期货投资者适当性管理办法》的相关要求,本公众号内容仅面向华泰证券客户中的专业投资者,请勿对本公众号内容进行任何形式的转发。若您并非华泰证券客户中的专业投资者,请取消关注本公众号,不再订阅、接收或使用本公众号中的内容。因本公众号难以设置访问权限,若给您造成不便,烦请谅解!本公众号旨在沟通研究信息,交流研究经验,华泰证券不因任何订阅本公众号的行为而将订阅者视为华泰证券的客户。
本公众号研究报告有关内容摘编自已经发布的研究报告的,若因对报告的摘编而产生歧义,应以报告发布当日的完整内容为准。如需了解详细内容,请具体参见华泰证券所发布的完整版报告。
本公众号内容基于作者认为可靠的、已公开的信息编制,但作者对该等信息的准确性及完整性不作任何保证,也不对证券价格的涨跌或市场走势作确定性判断。本公众号所载的意见、评估及预测仅反映发布当日的观点和判断。在不同时期,华泰证券可能会发出与本公众号所载意见、评估及预测不一致的研究报告。
在任何情况下,本公众号中的信息或所表述的意见均不构成对客户私人投资建议。订阅人不应单独依靠本订阅号中的信息而取代自身独立的判断,应自主做出投资决策并自行承担投资风险。普通投资者若使用本资料,有可能会因缺乏解读服务而对内容产生理解上的歧义,进而造成投资损失。对依据或者使用本公众号内容所造成的一切后果,华泰证券及作者均不承担任何法律责任。
本公众号版权仅为华泰证券股份有限公司所有,未经公司书面许可,任何机构或个人不得以翻版、复制、发表、引用或再次分发他人等任何形式侵犯本公众号发布的所有内容的版权。如因侵权行为给华泰证券造成任何直接或间接的损失,华泰证券保留追究一切法律责任的权利。本公司具有中国证监会核准的“证券投资咨询”业务资格,经营许可证编号为:91320000704041011J。
林晓明
执业证书编号:S0570516010001
华泰金工深度报告一览
金融周期系列研究(资产配置)
【华泰金工林晓明团队】二十载昔日重现,三四年周期轮回——2019年中国与全球市场量化资产配置年度观点(下)
【华泰金工林晓明团队】二十载昔日重现,三四年周期轮回——2019年中国与全球市场量化资产配置年度观点(上)
【华泰金工林晓明团队】周期轮动下的BL资产配置策略
【华泰金工林晓明团队】周期理论与机器学习资产收益预测——华泰金工市场周期与资产配置研究
【华泰金工林晓明团队】市场拐点的判断方法
【华泰金工林晓明团队】2018中国与全球市场的机会、风险 · 年度策略报告(上)
【华泰金工林晓明团队】基钦周期的量化测度与历史规律 · 华泰金工周期系列研究
【华泰金工林晓明团队】周期三因子定价与资产配置模型(四)——华泰金工周期系列研究
【华泰金工林晓明团队】周期三因子定价与资产配置模型(三)——华泰金工周期系列研究
【华泰金工林晓明团队】周期三因子定价与资产配置模型(二)——华泰金工周期系列研究
【华泰金工林晓明团队】周期三因子定价与资产配置模型(一)——华泰金工周期系列研究
【华泰金工林晓明团队】华泰金工周期研究系列 · 基于DDM模型的板块轮动探索
【华泰金工林晓明团队】市场周期的量化分解
【华泰金工林晓明团队】周期研究对大类资产的预测观点
【华泰金工林晓明团队】金融经济系统周期的确定(下)——华泰金工周期系列研究
【华泰金工林晓明团队】金融经济系统周期的确定(上)——华泰金工周期系列研究
【华泰金工林晓明团队】全球多市场择时配置初探——华泰周期择时研究系列
行业指数频谱分析及配置模型:市场的周期分析系列之三
【华泰金工林晓明团队】市场的频率——市场轮回,周期重生
【华泰金工林晓明团队】市场的轮回——金融市场周期与经济周期关系初探
FOF与金融创新产品
【华泰金工】生命周期基金Glide Path开发实例——华泰FOF与金融创新产品系列研究报告之一
因子周期(因子择时)
【华泰金工林晓明团队】市值因子收益与经济结构的关系——华泰因子周期研究系列之三
【华泰金工林晓明团队】周期视角下的因子投资时钟--华泰因子周期研究系列之二
【华泰金工林晓明团队】因子收益率的周期性研究初探
择时
【华泰金工林晓明团队】A股市场低开现象研究
【华泰金工林晓明团队】华泰风险收益一致性择时模型
【华泰金工林晓明团队】技术指标与周期量价择时模型的结合
【华泰金工林晓明团队】华泰价量择时模型——市场周期在择时领域的应用
行业轮动
【华泰金工林晓明团队】“华泰周期轮动”基金组合改进版——华泰行业轮动系列报告之七
【华泰金工林晓明团队】“华泰周期轮动”基金组合构建——华泰行业轮动系列之六
【华泰金工林晓明团队】估值因子在行业配置中的应用——华泰行业轮动系列报告之五
【华泰金工林晓明团队】动量增强因子在行业配置中的应用——华泰行业轮动系列报告之四
【华泰金工林晓明团队】财务质量因子在行业配置中的应用——华泰行业轮动系列报告之三
【华泰金工林晓明团队】周期视角下的行业轮动实证分析——华泰行业轮动系列之二
【华泰金工林晓明团队】基于通用回归模型的行业轮动策略——华泰行业轮动系列之一
Smartbeta
【华泰金工林晓明团队】Smart Beta:乘风破浪趁此时——华泰Smart Beta系列之一
【华泰金工林晓明团队】Smartbeta在资产配置中的优势——华泰金工Smartbeta专题研究之一
多因子选股
【华泰金工林晓明团队】因子合成方法实证分析 ——华泰多因子系列之十
【华泰金工林晓明团队】华泰单因子测试之一致预期因子 ——华泰多因子系列之九
【华泰金工林晓明团队】华泰单因子测试之财务质量因子——华泰多因子系列之八
【华泰金工林晓明团队】华泰单因子测试之资金流向因子——华泰多因子系列之七
【华泰金工林晓明团队】华泰单因子测试之波动率类因子——华泰多因子系列之六
【华泰金工林晓明团队】华泰单因子测试之换手率类因子——华泰多因子系列之五
【华泰金工林晓明团队】华泰单因子测试之动量类因子——华泰多因子系列之四
【华泰金工林晓明团队】华泰单因子测试之成长类因子——华泰多因子系列之三
【华泰金工林晓明团队】华泰单因子测试之估值类因子——华泰多因子系列之二
【华泰金工林晓明团队】华泰多因子模型体系初探——华泰多因子系列之一
【华泰金工林晓明团队】五因子模型A股实证研究
【华泰金工林晓明团队】红利因子的有效性研究——华泰红利指数与红利因子系列研究报告之二
人工智能
【华泰金工林晓明团队】必然中的偶然:机器学习中的随机数——华泰人工智能系列之二十
【华泰金工林晓明团队】偶然中的必然:重采样技术检验过拟合——华泰人工智能系列之十九
【华泰金工林晓明团队】机器学习选股模型的调仓频率实证——华泰人工智能系列之十八
【华泰金工林晓明团队】人工智能选股之数据标注方法实证——华泰人工智能系列之十七
【华泰金工林晓明团队】再论时序交叉验证对抗过拟合——华泰人工智能系列之十六
【华泰金工林晓明团队】人工智能选股之卷积神经网络——华泰人工智能系列之十五
【华泰金工林晓明团队】对抗过拟合:从时序交叉验证谈起
【华泰金工林晓明团队】人工智能选股之损失函数的改进——华泰人工智能系列之十三
【华泰金工林晓明团队】人工智能选股之特征选择——华泰人工智能系列之十二
【华泰金工林晓明团队】人工智能选股之Stacking集成学习——华泰人工智能系列之十一
【华泰金工林晓明团队】宏观周期指标应用于随机森林选股——华泰人工智能系列之十
【华泰金工林晓明团队】人工智能选股之循环神经网络——华泰人工智能系列之九
【华泰金工林晓明团队】人工智能选股之全连接神经网络——华泰人工智能系列之八
【华泰金工林晓明团队】人工智能选股之Python实战——华泰人工智能系列之七
【华泰金工林晓明团队】人工智能选股之Boosting模型——华泰人工智能系列之六
【华泰金工林晓明团队】人工智能选股之随机森林模型——华泰人工智能系列之五
【华泰金工林晓明团队】人工智能选股之朴素贝叶斯模型——华泰人工智能系列之四
【华泰金工林晓明团队】人工智能选股之支持向量机模型— —华泰人工智能系列之三
【华泰金工林晓明团队】人工智能选股之广义线性模型——华泰人工智能系列之二
指数增强基金分析
【华泰金工林晓明团队】再探回归法测算基金持股仓位——华泰基金仓位分析专题报告
【华泰金工林晓明团队】酌古御今:指数增强基金收益分析
【华泰金工林晓明团队】基于回归法的基金持股仓位测算
【华泰金工林晓明团队】指数增强方法汇总及实例——量化多因子指数增强策略实证
基本面选股
【华泰金工林晓明团队】华泰价值选股之相对市盈率港股模型——相对市盈率港股通模型实证研究
【华泰金工林晓明团队】华泰价值选股之FFScore模型
【华泰金工林晓明团队】相对市盈率选股模型A股市场实证研究
【华泰金工林晓明团队】华泰价值选股之现金流因子研究——现金流因子选股策略实证研究
【华泰金工林晓明团队】华泰基本面选股之低市收率模型——小费雪选股法 A 股实证研究
【华泰金工林晓明团队】华泰基本面选股之高股息率模型之奥轩尼斯选股法A股实证研究
基金定投
【华泰金工林晓明团队】大成旗下基金2018定投策略研究
【华泰金工林晓明团队】布林带与股息率择时定投模型——基金定投系列专题研究报告之四
【华泰金工林晓明团队】基金定投3—马科维茨有效性检验
【华泰金工林晓明团队】基金定投2—投资标的与时机的选择方法
【华泰金工林晓明团队】基金定投1—分析方法与理论基础
其它
【华泰金工林晓明团队】A股市场及行业的农历月份效应——月份效应之二
A股市场及行业的月份效应——详解历史数据中的隐藏法则
|
|