五、小结
第7章 量化选股
一、量化选股综述
本章是本书的重点之一。对量化投资而言,择时、选择风格、资产配置都是非常难的,量化选股是相对容易的一个环节。择时的胜率其实是比较低的,好的择时能做到60%就已经非常不错了。但量化选股的目标是追逐阿尔法,在一个较长的时间段里,例如1年,取得阿尔法的难度要小很多。投资者可以查阅国内指数增强型基金,大部分都能战胜基准,而且从2012年开始,几乎每年都如此。对于投资,非常重要的是广度和准确率之间的关系。
IR是衡量投资组合的重要指标,即超额收益/投资组合偏离基准收益的标准差,主要用来衡量超额风险所带来的超额收益。breadth代表独立的投资个数。这个公式说明了风险调整后的投资收益等于预测的准确性(IC)乘以投资广度的平方根。量化投资的优势在于投资广度,一个好的选股因子,IC能达到5%以上就不错了,但因为可以应用在上百的投资上,所以可以得到不错的IR。反观做基本面投资的,对IC的要求就高得多,因为广度上达不到很高,所以力求能够一局定胜负。
纵向来看,量化选股是整个量化投资体系里先发展起来的一个环节。早在20世纪80年代计算机开始普及的时候,华尔街的研究人员就尝试着用简单的计算机程序来选择债券和股票,也是巴尔·罗森伯格(Barr Rosenberg)开始创建现代量化选股旗舰软件BARRA的时候。到了20世纪90年代,采用量化选股的各类量化股票基金开始大行其道,在公募基金中的占比从0开始,一路狂飙到20%,诞生了像Dimensional Fund Advisors、State Street Global Advisors、Barclays Global Investors等超级大基金。同时,风格也从单纯的股票量化多头演变成股票多空、市场中性、指数增强、套利等多种形式。
2007年,随着金融危机的爆发,一些宣称“市场中性”的量化基金也遭受了较大回撤,被称为“Quant Meltdown”(量化崩盘)。股票市场中性策略的主要风险来自其模型,根据历史数据建立的模型通常很难长期有效,可能阶段性地失效,甚至不再有效,投资经理需要不断修正模型。同时,依赖数学模型的投资策略可能会因为策略趋同而出现意想不到的损失。2007年8月上旬,许多历史上非常成功的量化对冲基金突然出现大幅亏损,净值波动幅度远远超过历史平均水平。例如之前以业绩优异著称的文艺复兴科技公司就向投资者报告,旗下一只主要基金8月初损失达8.7%。重要原因就是当时主流量化模型类似,股票市场仍处于牛市,各家对冲基金基于类似研究成果建立的量化模型都给出了趋同的操作建议,短期内各家对冲基金获利颇丰。但许多对冲基金使用的是相同的第三方风险评估模型,根据模型评估结果,对冲基金又开始实施类似的风险调整。短期内大量类似的交易需求对市场造成了冲击,放大了对冲基金的损失。Quant Meltdown很快就平息了,但给投资者留下了不太好的印象,可谓“一丑遮百美”。
2007年之后,量化基金管理人开始思考其在金融危机中的表现,同时大分化出现:公募类型进行中低频率调仓(月度或双月度)的传统量化选股基金规模开始走平,没有太大的发展;而私募类量化基金开始突出其策略或者产品结构的独特性,像文艺复兴、桥水、二西格玛(Two Sigma)、城堡(Citadel)开始走强,策略逐步走向高频交易、套利等。但在公募领域里,指数基金和类指数的策略指数基金异军突起。金融危机之后,以贝莱德(BlackRock)、先锋(Vanguard)集团为代表的被动投资市场份额不断上升,直接挤压了传统主动基金和主动量化基金的市场份额,成为当前发达国家资产管理领域里最大的变革之一。
我国的量化投资起步较晚,基本上可以分为三个阶段。
第一个阶段是2010年之前的初期探索阶段,彼时股指期货还没有上市交易,量化策略类型相对较少,公募基金产品以指数型基金为主。2004年,华夏上证50ETF上市交易,成为国内第一只ETF(交易型开放式指数基金)。之后的几年里,公募量化基金主要是指数和类指数产品。私募产品主要以信托方式存在,包括ETF套利基金和封转开套利等。在2010年之前,国内的证券公司是量化研究的主力,在产品设计、投资策略和衍生品上做了大量研究,为之后量化投资的迅速普及奠定了基础。
第二个阶段是2010—2015年指数增强和量化对冲类策略大发展。2008年,在美国次贷危机的影响下,海外量化基金人才大量回国,为市场提供了大量专业化人才。2010年4月,我国第一个股指期货沪深300期货开始在中金所交易,标志着对冲时代的正式来临。从2011年开始,量化基金快速发展。公募基金的专户产品里开始出现量化对冲专户的身影,同时越来越多的基金公司开始发行量化纯多头(主动)基金。2016年是量化基金全面收获的一年,在当年股票型基金收益排行榜里,有两个是量化基金;同时在量化基金里,出现规模过百亿的巨量基金。2012—2015年,是量化对冲类产品的大发展阶段,包括市场中性类和期现套利类策略。这一阶段的对冲类产品有两个阶段性的有利条件,一是期指的正基差,二是持续的小盘股风格,使产品收益非常突出,也获得了大量资金,尤其是稳健风险偏好资金的追捧。
第三个阶段是从2016年至今,期指限手制约量化对冲,量化策略类型逐渐丰富。2015年股灾之后,监管层对股指期货投资的监管力度加强,但金融衍生品的发展并没有因此停止,场内期权产品在2016年之后发展壮大,做到了目前名义成交量过百亿的规模。因此,管理人在其他方向上的拓展,进一步丰富了量化产品,比如CTA、期权策略、量化多策略、FOF(投资于其他证券投资基金的基金)等。此外,商品期权、原油期货等衍生品种陆续上线。在这个阶段,传统量化基金也开始转型。之前非常有效的一些选股因子,在2017年严重失效,使量化基金管理人开始思考之前构建研究模型的逻辑,公募量化基金的体系开始自我变革。同时,随着保险等大型机构投资者越来越青睐指数型产品,指数增强型基金在2017年之后进入规模增长期,2017—2018年增长了50%。
本书所提到的量化投资,除特别指出以外,都是以中低频率调仓为基础的,因为笔者身处公募基金公司,而公募基金对交易频率的要求是不能太高,也不能造成太高的交易成本。下文入门篇介绍一些简单的方法进行股票筛选,提升篇介绍BARRA的选股体系,最后介绍利用数据挖掘和基本面投资相结合等来选股的研究方法——最近几年兴起的新研究方法之一。
二、量化选股入门篇
初期的量化选股其实是很直观的,最简单的为单因子选股,例如投资者用PE因子选股,步骤是:
(1)选择使用哪一个指标(因子)。在下面的例子中使用静态PE来选择股票,PE越低,则打分越高。PE在一定条件下可能是负数(也就是公司发生了亏损),为了单调性,我们使用PE的倒数EP,EP越高,则该项得分越高,这样即使PE为负数,也是有经济意义的。
(2)选择要进行回测的时间和每次回测间隔的时间。如果是中低频的选股,一般来说设置为1个月,在月初或者月中进行调仓。下面的例子选用月度选股,假设在每个月最后一个交易日以当日收盘价来调仓。
(3)选择在哪一个股票池里选股。这个股票池可以是上市的所有A股,也可以是某个指数,例如沪深300或者中证500成分股,也可以是大家自定义的某一个选股池,一般称为“Universe”。如果是指数,值得注意的是,这个指数的成分股是随着时间变化的,例如沪深300每过半年就会重新调整成分股。在这种情况下,如果要在沪深300内选股,时间跨度是2010年年初至2017年年末,每月选股;使用2012年年初的沪深300成分股就不是准确的,因为没有考虑指数成分股调整的因素。在下面的例子中,以沪深300为选股的股票池。
(4)每只股票给予的权重。下面的例子使用的是平均权重法,因为选用了沪深300,所以最终结果是30只股票形成的股票池,每只股票的权重就是3.33%。
图7-1 简单的PE因子选股结果
资料来源:天软科技
(5)在每个时间节点,利用成分股每个因子值的大小进行排序。选择排名靠前(或者靠后)的10%的股票,取其下个月的收益平均值作为当月回测结果。然后滚动起来,回测时间段内每个月进行这样的测算。最后把每个月的收益进行滚乘,得到回测区间的总收益。
以上步骤完成后,测试结果如图7-1所示,直观感受是选股效果还可以,但波动比较大,而且在2010年选股效果不是很明显。
2012年12月31日的选股结果如表7-1所示,权重都是3.33%,所选的股票集中于银行、建筑、房地产等周期性行业。
表7-1 简单的PE因子选股结果
资料来源:天软科技
上述步骤往往是量化投资入门者最直接的想法,但其实细细一想,问题还是很多的:首先,怎么确定这种选股结果是好的呢?其次,选出来的股票偏重于某些板块或者风格,因为每只股票的权重是一样的,也就是“等权”,这和真实指数的权重分配差异是比较大的。除了道琼斯指数以外,大部分指数的编制实际上是流通市值加权或者总市值加权的。再次,在真实的交易过程中,是有交易费用的,但这样的回测,显然没有考虑交易费用。最后,在每月最后一个交易日以收盘价成交也不是严格的假设,下一个交易日(也就是下个月第一个交易日)的开盘价和上一个交易日的收盘价实际上还是有差异的,这个差异可能会达到0.1%~0.5%,长期累积下来也是一个不小的数目。
此外,在A股市场里经常出现停牌,也有可能股票开盘就涨停或者跌停,上述回测过程是否考虑了这几点呢?
如果假设每只股票的换仓成本为0.3%(包括买和卖,分别是0.15%),并且强制使选股出来的组合在每个行业的权重和指数的分布是一致的。
怎么使选股的组合和指数保持一致呢?这其实是一个比较复杂的问题。可以用一种比较直观的方法处理,就是在每一个行业里打分,取前三名平均分配其在指数里的权重。例如在钢铁行业里,假设用EP选出来甲、乙、丙三只股票,而钢铁行业的当期权重是4%,那么每只股票就分配1.33%的权重。
在沪深300里并不是每一个行业都有3只以上的股票,因此进一步假设某个行业中的股票数小于分组数,就不对这个行业进行分组,而是让每个组中都包含这个行业的股票;如果行业中样本个数大于分组数,就正常地对这个行业中的股票分组。假设沪深300在某行业只有2只股票,该行业权重为1%,那么每只股票的权重为0.5%。
图7-2 添加限制后的PE因子选股结果
资料来源:天软科技
其他限制条件不变,这样最后的选股结果如图7-2所示,和之前的回测结果有了较大差别,直观感觉就是收益降低了,一方面是因为做了一些行业中性的处理,另一方面是因为考虑了交易手续费,影响了收益。
以上就是因子模型的一个简单练习,非常直观,但大家深入思考,或者亲手做一遍(即使不会编程,也可以做3个月的简单回测),就会发现问题越来越多。这其实会驱动我们不断地修补模型,把不合理的假设放弃,或者修正到更贴近真实情况。
这时,更重要的一个环节是把单因子模型升级为多因子模型。
多因子模型是比单因子模型更加有力的一个选股手段。可以直观地想一下:用PE(或者EP)选股的本质意义是选择低市盈率的股票,可是有时会希望选择低市盈率、近期跌得多的股票,或者低市盈率、跌得多、有很好的毛利率的股票,或者低市盈率、跌得多、有很好的毛利率和ROE的股票……把选股的逻辑要素越拓越广,就形成了多因子模型。
多因子模型也有几种处理方法,最严谨的方式是类似于BARRA的选股方法:
方法1:在因子数不多的情况下,先用第一个因子,筛选出一个股票池;再用第二个因子,再次筛选;然后用第三个因子……这种方法适用于因子数不多,而且原始股票池足够大的情况。
方法2:利用因子打分的方法,先对股票的每个因子进行打分,再把多个因子的分数加起来,最终得分就是股票的多因子分数。例如某股票的EP因子分数为0.5(范围为0~1),动量因子分数为0.7,两个因子的权重分别为50%、50%(因子权重总和必须为1),那么最终因子得分为:0.5×50%+0.7×50%=0.6。
如何选择多因子是关键,问题在于选择什么样的因子,赋予多少权重。在这种选股模型下,并不是选股因子越多越好,尤其是同一个大类下的因子,太多容易产生很强的相关性。例如PE和PB,通常情况下PE低的,也是PB低的,所以同时给PE和PB因子权重,就类似于把这两个因子的权重加起来。表7-2列出了一些比较常用的因子,供大家参考。
表7-2 常见的多因子
续表
续表
资料来源:天软科技
注:因子方向栏为1,表示该因子数值越大越好;因子方向栏为0,表示该因子数值越小越好
大家如果要构建因子,可以先从简单的入手,例如市值、市盈率等。也可以继续加工,从而产生复杂一点的复合因子,例如市盈率在板块中的百分比位置。当然,在这种因子模型下,因子数目不宜过多,也不宜为了追求结果而改造出一些超级复杂的复合因子。经济学和金融学意义是构造因子的基础,失去了意义,那么再美妙的数学结果也无用。
根据前文所述,相信大家可以通过编程来构造一个简单的多因子模型,接下来就涉及如何评价多因子模型效果的问题。假设某多因子模型的结果如图7-3所示。
图7-3 某多因子模型的回测结果
资料来源:Wind
上述结果只体现了直观意义上因子得分最高的一组超越对标指数的收益。如果选股池和对标的指数一致(即指数样本内选股),那么说明这个因子的选股效果是比较好的。但仔细一想,我们在选股过程中是把股票按照打分来分为10组,潜在的假设是分数越高的,收益越好(或者正好相反,分数越低的,收益越好),说明用这种因子选股具备较好的单调性。但如果结果不是这样的,例如第5组的收益最高,或者第6组的收益最低,就要怀疑这种选股因子的有效性了。此外,有些选股因子的超额收益波动性是比较大的,怎么确定这种选股效果确实是有效的?对于多因子模型来说,每个因子具体的贡献是多少?可用以下几个检验来评价多因子模型:
(1)因子收益率检验:检验每组是否可以取得正的收益率?收益波动率如何?取得正的收益率概率有多大?分组之后,各组在各个时间区间的表现如何?组与组之间在同一个时间区间的区分度如何?
具体的检验方法是统计回测近一年、近三年、近五年或更久的时间段里,各组收益率均值、标准差、胜率等指标,其中胜率指该组战胜基准收益率的概率。
(2)因子显著性检验:每组是否可以取得正的超额收益率?取得正的超额收益率概率多大?
这是为了研究各组超越基准的情况,希望第一组明显超越基准,最后一组明显被基准超越。评价的具体指标有:
超额均值——各组收益率相对基准的超额收益率的均值,均值越大,说明该组超越基准越明显。
跟踪误差——超额收益率的标准差,衡量各组偏离基准的程度,越小越好。
信息比率——风险收益率指标,超额收益率均值÷超额收益率标准差,结果越大,说明超越基准越明显。
T-Stat——T统计量,该值越大,说明超越基准越多。
P-Value——显著性概率,T-Stat对应的T累积分布函数的值,结果越大,说明该组超越基准越多。
超额概率——超基准收益率大于0的概率。
(3)因子区分度检验:第一组收益率是否显著大于最后一组?能否根据因子把表现好的股票和表现差的股票区分开来?
分组之后,我们总是希望第一组显著超越基准(说明分组可以选出好的股票),最后一组被基准超越(说明分组可以剔除差的股票),因此通常会考查第一组相对于最后一组的超额收益率,一般用月度收益率来衡量。具体的评价指标有:
平均收益——第一组相对于最后一组超额收益率的平均收益,越大越好,说明第一组的收益率显著大于最后一组。
标准差——第一组相对于最后一组超额收益率的标准差。第一组相对于最后一组超额收益率的波动越小越好。
胜率——第一组战胜最后一组的概率,越大越好,表示第一组的收益率显著大于最后一组。
夏普比率——超额收益的平均值÷超额收益的标准差,结果越大越好。
T-Stat——检验对象对应的T统计量,结果越大越好。
P-Value——T-Stat对应的T累积分布函数的值,是第一组超越最后一组的显著性概率,越大越好。
(4)因子延续性检验:由因子得到的分组能否在较长的一段时间保持比较好的方向性,即本期表现好的因子,下期是否也能取得好的收益率?
事实上,很难找到某个因子一直保持某个方向。例如“定向增发”可能在牛市时是一个利好消息,在熊市时却是一个利空消息。(因为按常理,人的心理变了,对同一事件的反应不同,最后反映到对股票的购买欲上)既然不能找出方向一直保持不变的因子,就只能希望找出延续性很好的因子,即在比较长的时间里保持方向不变的因子。因子延续性检验就是用来解决这个问题的。延续性检验里的重要考查指标是IC:
这个公式的含义是,t期末各股票的综合因子分数为序列X,t期到t+1期各股票的涨幅序列为序列Y,然后计算序列X和序列Y的相关系数。E(X)为序列X的平均值。
通过各期的IC值可以大致看出因子的延续性,在哪一段是正向的,哪一段是反向的。如图7-4所示,柱状代表对应日期的相关系数,曲线是IC均线。如果IC均线始终在横轴上方(或者下方),说明延续性很好。如果IC均线总是在横轴上下波动,说明因子的延续性很差。比如图7-4显示从2011年8月到2012年8月,所示因子都表现出比较好的反向延续性。
图7-4 某选股因子的IC时间序列
(5)因子贡献度检验:因子反映的信息是否有重叠?各个因子的分数对下期收益的贡献到底有多大?
这个检验是检验各个因子的分数对下期收益的贡献度,以此作为之后调整因子比例的依据。检验方法一般有两种:
第一种方法是做最小二乘参数估计(带常数项),即自变量通过某种线性变换去拟合因变量,寻找各个自变量与因变量的关系。更具体的展现形式是用每期的数据分别去做最小二乘参数估计,或者用所有期的数据去做最小二乘。
得到各个因子对应的回归系数、常数项,以及基于此计算的推荐的配置比例。其中,如果回归系数是负的,那么说明该系数对应的因子对下期收益的贡献是负的,在配置因子时应该把该因子的方向设置为跟原来相反;如果回归系数是正的,说明该系数对应的因子对下期收益的贡献是正的。回归系数的值越大,说明对应的因子对股票的区分度越好,下期收益高和下期收益低的股票被区分得很明显。对收益高的股票,建议配置较高的比例,比例的计算方法如下:
其中,ai是第i个因子对应的回归系数,N是回归系数的总个数,ωi是多因子框架计算的推荐比例。当结果ωi为负数时,建议因子方向调成跟原来的相反。
第二种方法是使用主成分分析法。在实际处理多因子时常遇到两个问题:一是因子的个数太多,可能彼此间存在一定的相关性,使观测到的数据在一定程度上反映的信息有所重叠;二是人们希望知道没有重叠的这些因子对下期收益的贡献如何。
在考虑因变量Y与p个自变量X1,X2…Xp的回归模型中,如果自变量间有较强的线性相关(多重共线性)时,利用最小二乘参数估计法,一般效果较差。采用主成分回归法,首先是计算这些因子的前m个主成分,达到降维的效果,这样既简化了回归方程的结构,又消除了变量间相关性带来的影响。但只有主成分分析的话,因为主成分是原始变量的线性组合,造成了解释上的困难,可以使用逆变换将其变成原始变量的回归方程。检验的指标主要是各因子对应的主成分回归系数、主成分回归常数项,以及基于此计算的推荐的比例配置。
关于具体的主成分分析的数学推导,请大家参考相关数学书籍。
至此,大家应该有种从浅入深,慢慢从直观上的因子概念过渡到偏数学的、系统的多因子模型中的感觉。细细想来,现有模型还有很多不科学、不系统的方面,需要不断修正。如果想更进一步,可能就要从一个新的起点出发了,这就是下文介绍BARRA模型体系的原因。但仅仅是BARRA模型的机理,就可以写成一本书了,所以下文不会面面俱到、写得非常深入。不可避免的是,其中涉及较多数学和金融学的理论和模型,对数学基础不强的人来说可能会有点难,可以跳过这一节,不影响对整本书的理解和把握。
三、量化选股提升篇
BARRA模型是由量化投资大师级人物巴尔·罗森伯格开发的,1978年,他被著名的《机构投资者》杂志称为“现代投资组合理论”的一代宗师。
作为一位教授,罗森伯格在伯克利大学任教,教授金融学、经济学和计量经济学,名利双收。1969年,他和妻子打算将一艘旧船改成自己的住所,却发现还需要一大笔钱。从此,他开始了投资之旅。
1974年,罗森伯格成立了个人公司巴尔·罗森伯格联合公司(BARRA)。1985年,罗森伯格卖掉了他在BARRA的股份。2004年,BARRA公司被摩根士丹利公司旗下的MSCI(Morgan Stanley Capital International)收购。
1985年,罗森伯格和三位合作伙伴创立了罗森伯格机构股权管理公司(RIEM)。该公司后来被AXA Company收购,称为AXA Rosenberg,位于旧金山以东的奥林达(Orinda),用量化模型来管理各种多样化的股票投资组合。20世纪90年代,AXA Rosenberg的资产管理规模突破100亿美元。
金融危机爆发后,罗森伯格被人举报他的模型存在一个问题,在经历内斗和罚款后,最后被SEC(美国证券交易委员会)终身禁止从事投资业务。
虽然罗森伯格已经从投资界淡出了,但他当年所发展的量化模型,今天仍被很多大型量化基金管理人奉为金科玉律。
BARRA模型的实质是认为股票的收益率是可以分解的,即分解成一个多因子表达式。关于早期的多因子模型,有兴趣的人可以参考Fama-French三因子模型,其核心是:
r = Χf + μ
其中,r为股票收益率向量,Χ为n只股票在k个因子上的因子载荷矩阵(n×k),f是k个因子的因子收益向量(或者叫因子值),μ为残差向量或股票自己的特质收益率向量。
BARRA模型的表达式如下:
在这个表达式中,r为股票收益,fC,
,
分别表示国家因子收益、行业因子收益和风格因子收益。而
,I为虚拟变量构成的行业因子载荷矩阵,S为风格因子载荷矩阵或风险暴露。
从这个表达式可以看出,股票的收益是由其所在股票市场的系统性风险、所属行业的风险、所属风格的风险以及残差项u共同组成的。BARRA表达式中的计算方法是截面回归,即每日(更老的版本是每周)回归。BARRA模型告诉我们什么呢?首先,可以看出股票的收益是可以“预测”的。在这个模型的基础上,任何股票的收益都可以根据所在国家、行业、风格和残差等因素来预测。这就类似于Fama-French三因子模型,只不过BARRA模型更加具体、科学。那么这种回归模型的标准方R2是多少呢?根据BARRA公司的CNE5,R2能够达到40%以上,已经是非常不错的效果了。CNE5是BARRA针对中国股市的一个版本,CHE2是另外一个版本。
基于BARRA模型,一是可以预测股票的收益率,二是如果知道股票的收益来源,就可以对冲掉那些不想要的来源,只拿想要的来源,这就是风险控制。BARRA模型出现以后,也被作为一个重要的组合风险控制软件。
因为BARRA是商业软件,很多细节涉及知识产权,图7-5是在BARRA模型上进行选股和风险控制的大致步骤,比原商业模型要简单,仅向大家做简要介绍。
数据清洗
在BARRA模型中,可以根据每个股票的因子原始值特征计算出其因子载荷Χ,再回归计算出最终因子收益f。由于各种原因,因子原始值可能差别非常大,也有可能存在缺失的情况,这就要求我们进行相应的数据处理。一般来说,数据清洗是构造多因子模型的核心步骤,往往占工作量的一半左右。数据清洗包括奇异数据的处理(去极值)、数据标准化、补足因子的缺失数据。
图7-5 风险模型优化后的多因子选股模型
去极值和数据标准化处理一般采用标准差法,即对某个因子k应用下列公式:
(https://www.daowen.com)
为因子原始值,μt为市值加权平均,σt为标准差。通过这个公式,把在时间截面上的股票原始因子值(例如EP、市值等),变换成无量纲的标准因子载荷值。由于个股的原始因子值可能差距很大,例如有的股票市值有上千亿,有的股票市值只有10亿,这样算出的无量纲因子差距也可能很大。为了把标准化的因子值进一步缩小到可以接受的区间里,采用以下方法把标准化的因子值缩小到(-3.5,3.5)的区间里,同时保证标准化的因子载荷值尽可能少重复,也就是说保持原始因子值的排序。
若Xn,t≥3:
其中Xmax,t为该因子在t时刻,截面最大值。
若Xn,t≤-3
其中Xmin,t为该因子在t时刻,截面最小值。
数据缺失是比较常见的问题。当构成因子的描述变量数据只有部分缺失时,解决方案有三种:一是利用其余未缺失的因子来继续构建因子,例如可以假设其缺失期的因子载荷值与上期一样;二是使用其所在行业或风格的平均值来替代其因子值;三是对其他未缺失的部分因子值进行回归,从回归系数中补回缺失的因子值。当某只股票的因子指标全部缺失时,一般在改期计算中忽略该股票,或使用行业平均值代替。
为了使分析更全面、有效,还要进行数据分析。因为很多因子未必能够作为真正的因子值使用,数据分析就是对因子进行稳定性检验。自回归系数(自相关系数)是一个比较有效的检验方法,对因子k的自回归检验做法是:
其中
是回归权重。
这种自回归系数实际是在看因子载荷是否稳定,从而确定统计方面是否稳健。一般来说,自回归系数在0.8以上的因子为稳定的因子,小于0.8的因子不太稳定。
下一步是要看每个因子的统计显著性和因子的共线性。显著性一般使用t检验的方式。共线性决定了因子之间的相关性,强共线性会削弱统计的有效性。因篇幅所限,在此不再赘述。
计算因子收益
本篇所使用的回归模型的因子值其实是回归后的分数,回归是截面回归,而入门篇的因子有效性检验更多的是时间轴的纵向回归。
由于股票收益率存在异方差性,因此以根号市值作为权重,使用加权最小二乘法(WLS)估计以上模型。使用这种加权方法是因为很多研究结果显示,个股的特质风险与股票规模成反比。
在回归方程中,注意XI矩阵实际上是一个行业哑变量的矩阵,由于加入截距项fm,使模型中存在共线性。可通过增加以下约束条件使该模型具有唯一解:
即市值加权的行业因子平均收益为0,其中wi为行业i的市值权重。
这样看来,fc实际上代表了全市场市值加权收益率;而行业因子的回归系数代表了行业的超额收益,风格因子的回归系数代表了在控制行业因素的影响后,风格因子的超额收益。得到因子收益后,使用因子收益的历史,例如最近120个交易日的平均值(更精确的做法是使用半衰期法,即更近期的因子收益赋予更大的权重)作为对预期因子收益的估计。
在这个回归方程中,选用什么样的因子是关键,大家可以参考入门篇进行因子分类。
计算未来收益和协方差阵
在进行前两步工作之后,就可以在每一个预测期,根据每只股票新的因子载荷来进行收益预测,目的是生成风险控制下的组合。这个组合是一个有约束条件下的二次优化模型:
其中,w为待求解的组合权重向量。
该优化问题的目标函数为最大化组合经风险、成本调整后的收益,具体包括三个部分:收益项、风险项、成本项。
﹡
为组合预期收益,r为股票预期收益率向量,在做完因子收益的计算之后,r就容易得到了。
﹡
项为组合风险,Σ为股票收益率协方差矩阵;λ为风险厌恶系数,决定风险与收益的权衡。
﹡
为调仓成本,w0为调仓前的持仓权重。
约束条件包括对组合风格因子暴露、行业分布以及个股权重的约束:
﹡第一个约束条件限制了组合相对于基准指数的风格暴露,X为股票对风格因子的因子暴露矩阵,Sl,Sh分别为风格因子相对暴露的下限、上限,wb为基准指数的权重向量。
﹡第二个约束条件限制了组合相对于基准指数的行业偏离,H为股票的行业暴露矩阵,当股票j属于行业i时,Hij为1,否则为0;hl,hh为组合行业偏离的下限、上限。
﹡第三个约束条件限制了卖空,并且限制了个股权重上限l。
﹡第四个约束条件要求权重和为1。
如果做多因子选股,应该采取一定手段使生成的股票组合权重和基准权重一致,否则生成的股票组合就有可能在行业配置上严重偏离原始组合,容易出现组合风险过大,不好预测和控制的情况。如果控制住行业权重的偏离,那么相当于组合在行业上是零偏离的,没有因过度配置某个行业而造成风险加大。
事实上,不仅行业配置应该遵循这个原则,在风格上也应该遵循这个原则。什么是风格呢?我们常听说“把握小盘股的机会”,用市值来划分,大、小盘就是一种概念,具体数值化也可以作为一种因子。怎么看风格呢?可以预测的、持续稳定的风格因子,可定为一种阿尔法,是驱动股价长期上涨的因素;不可预测的、不稳定的风格因子,就是一种风险,需要控制。
在上述模型中,协方差矩阵Σ的预测是非常关键的。在收益率服从正态分布的假设下,样本协方差是无偏的极大似然估计量,即给定数据下最可能的参数,也就是说“完全让数据说话”。在估计参数时,如果样本数量足够大,那么样本协方差具有良好的性质;而在小样本下,使用该估计量可能会出现过拟合。
样本协方差矩阵为:
其中1为元素全为1的列向量(N×1),I为单位矩阵(N×N)。从样本协方差的计算公式可以看出,样本协方差S的秩最多等于矩阵
的秩,即T-1。因此,当矩阵的维数N超过T-1时,样本协方差矩阵是不满秩的,也是不可逆的。
此外,在样本协方差矩阵中,需要估计
个元素,而总样本量为N×T。在实际应用中,由于收益序列的非平稳性,通常不会取较长的时间区间;而待求解的股票集合往往很大。因此,当股票数量的数量级与样本数量相当,甚至更大时,样本数量的缺少给样本协方差带来较大的估计误差。天风证券研究者曾提出改进股票收益率协方差估计的方法有因子模型、压缩估计、随机矩阵理论模型等,其中效果最好的是压缩估计方法,因子模型相对而言效果一般,但入手比较简单。
﹡因子模型。可以通过给协方差矩阵加以一定的结构,从而减少数据的维数,降低估计误差。这种结构可以来源于因子模型,如单一指数模型(市场模型)、多因子模型(行业因子、宏观因子、基本面因子、统计因子)。然而,因子模型的缺陷在于,关于模型中应当包含几个因子、包含哪些因子,并没有统一的标准。因此不能提前知晓在特定环境下应该使用什么模型,这就使因子模型的设置往往具有一定的“艺术性”。
﹡压缩估计。为了避免因子模型中的因子选择问题,可以将样本协方差矩阵与其他结构化模型进行加权,以此来设定结构。
﹡随机矩阵理论模型。除了在估计中引入结构化,也可以根据随机矩阵理论来分离样本协方差矩阵中的信息与“噪声”,即通过调整相关系数矩阵的特征根来降低协方差矩阵的估计误差。
下文简单展示用压缩估计模型来预测组合的协方差,有兴趣的人可以参考相关研究报告,进一步研究。
关于组合风险的估计,当股票特质收益率与公共因子不相关时,预期风险可以分解为公共因子解释的风险和特质风险,其中公共因子风险使用日度因子收益的协方差矩阵、因子暴露估计,特质风险使用个股特质收益率的波动率估计,即:
Σ = XFXT+∆
其中,F为k个因子(风格因子与行业因子)的因子收益协方差矩阵,X为n只股票在k个因子上的因子暴露矩阵(n×k),∆为股票的特质波动率矩阵(n×n)。
因子收益协方差、特质风险都使用半衰加权计算,给近期的因子波动更高的权重,下面介绍具体估计方法。
因子收益加权协方差可以直接根据因子收益序列计算得到:
其中,σi,j为因子i和因子j的半衰加权协方差,wt为半衰权重,
为因子i半衰加权的因子收益均值。然而,考虑到因子收益之间的相关系数比因子波动更加稳定,先分别估计因子收益的相关系数和各因子的波动性,再计算因子协方差矩阵。因子收益协方差可由因子收益波动率及因子收益相关系数计算得到:
其中,σi,σj分别为因子i,j的因子收益标准差,ρi,j为因子i,j的因子收益相关系数。
这种估计方法的优点是可以对因子收益相关系数、因子波动使用不同的半衰期进行加权计算。由于因子相关系数较稳定,可以选择较长的半衰期;因子波动变化较大,可以选择较短的半衰期,从而更加迅速地反映因子风险的变化。当因子相关系数与因子波动的半衰期相同时,通过这样的方法得到的因子收益协方差矩阵与直接使用因子收益计算的加权协方差矩阵是一样的。
特质风险为特质收益率的方差:
其中,
为股票n特质收益率的方差,wt为半衰权重,fu,n,t为股票n在t期的特质收益率,
为股票n特质收益率的半衰加权均值。根据时间序列估计的特质波动率在样本外不一定具有持续性,尤其是当特质波动率特别高或者特别低时,特质风险存在均值回复的可能性,因此需要对特质风险的估计值进行调整。
整理优化目标矩阵
至此,可以着手整理目标函数:
这个目标函数有一个比较复杂的二次项。为了回避风险厌恶系数选取的问题,可以变通一下,将风险项从目标函数中去掉,而将其作为约束条件,并给予一定的风险上限,从而直观地控制组合的预期风险。此外,由于量化基金、指数增强基金通常使用组合的跟踪误差而不是组合的波动率来衡量风险,对有跟踪基准的基金而言,组合的风险控制也可以设定为跟踪误差的形式。
组合的跟踪误差可以表示为:
其中,Σ为股票收益率协方差矩阵,w为组合权重向量,wb为基准指数的权重向量。
将目标函数中的风险项转变为对组合预期跟踪误差的约束,原优化模型便转化为以下形式:
其中,TE为组合的预期年化跟踪误差的上限。一般来说,国内的普通指数型基金TE为4%,增强指数型基金TE一般在6%~8%。
如此一来,原本的二次规划问题转化成了一个二阶锥规划(SOCP)问题,这两个优化模型在常用软件中均有现成的Python和MATLAB优化包可以使用。
对于以上组合优化问题的约束条件,有如下常见设置方式:
(1)被动指数基金的跟踪误差一般在4%以下,指数增强基金的跟踪误差在8%以下;
(2)对于风格因子的暴露,常见的是市值中性约束,即控制组合在市值因子上的暴露相对于基准指数没有过大的偏离;
(3)对于行业因子的暴露,一般会要求组合行业中性,即要求组合在每个行业上的权重配置与基准指数保持一致;
(4)对于个股权重的要求,通常除了限制个股权重上限、下限外,还应该考虑每次调仓时持仓股票的可交易性,即当持仓股票不可卖出时,可要求该股票权重保持不变。
回测和结果的观察
在每一期的优化模型中,使用的是相同的约束条件,如保持组合具有行业中性、市值中性等。但在实际过程中,风险与收益是同源的,控制风格因子暴露的同时,实际上也控制了超额收益的来源。而严格的风格、行业暴露约束,会缩小优化模型的可行域,使模型的最优解更加偏离全局最优解。约束条件越多、越苛刻,在控制组合风险的同时,也可能会降低组合的收益。为此,天风证券提出了基于动态风险控制的组合优化模型,即动态约束根据时间的不同而发生变化。两种情况(静态与动态)的结果如图7-6和图7-7所示。可见,风险模型的优化对组合优化的结果影响是非常大的。
图7-6 静态风险模型优化后的多因子选股模型结果
资料来源:天风证券、Wind
图7-7 动态风险模型优化后的多因子选股模型结果
资料来源:天风证券、Wind
四、大数据与量化选股的结合
目前,大数据和机器学习的方法开始盛行,虽然并不是主流的量化手段,但笔者觉得有必要向大家简单介绍一下。
“大数据”的概念起源于2010年左右。就数据量的多少而言,其实量化研究人员频繁使用的海量数据库(100GB以上)已经算得上大数据。
大数据(Big Data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。在维克托·迈尔-舍恩伯格、肯尼斯·库克耶写的《大数据时代》中,大数据指不用随机分析法(抽样调查),而采用所有数据进行分析处理。大数据的5V特点是:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
在量化投资界逐渐普及的大数据,其重点在于数据的来源不仅是传统的金融数据库。对国内的公募基金而言,常用数据来源是Wind、同花顺、聚源等,有些大型基金会用Bloomberg、Capital IQ,但它们提供的股价、基本面数据等同质性很强,差别是在分析师预期数据等方面。在研究过程中,如果数据同质化非常强,再加上大家都趋同的因子设置,那么结果可想而知了。
所以量化研究人员开始寻求非传统的一些数据,他们广泛与众多企业接触,发现很多数据是有作用的。例如某支付平台,每日都有数亿条支付信息,以数据库的形式存储。如果把收款的商家对应到上市公司,就能够从电子平台的支付信息得知该上市公司的销售情况。在很多情况下,一家公司在一定渠道的收款量占比是较固定的,这样就可以提前推测公司的收入情况。行业也是如此,可以通过一些渠道,获知行业的景气程度,有时候会有惊人的精确性。如图7-8所示,我们利用某电子平台的地产交易数据,制作了地产交易的景气指数。再利用相关统计机构公布的30个大中城市商品房成交面积、地产成交金额,根据商品房价格的变化,制作了相应指数。结果发现该电子平台的数据有非常好的预测效果。
图7-8 某电子平台的地产交易情况
证券市场也有一些非常有价值的数据。例如投资者经常有追涨杀跌的行为,所以过分受关注的股票往往在风潮过后会跌,形成一种“反转”效应,如图7-9所示。这种投资者的行为数据,就是在财务数据、价格数据之外,非常有价值的一种信息。
图7-9 某行为数据的因子效果
资料来源:Wind
传统的数据都是可以以典型的SQL形式记录在数据库的。但有些数据不太规范,例如声音、颜色等,因为研究困难,以前研究人员常常忽略了这种数据。目前,由于一些程序包得以创新,大家越来越重视这种数据。例如,从卫星云图上传来商业区人群密度的颜色图片,可以进一步规范化,变成指数,为我们提供一个地区商业活动的有价值的信息。更复杂的算法,可以在不规范数据与不规范数据之间迭代计算,从而得到很多有趣的信息。
在大数据的利用方式上,除了本章介绍的因子选股方法之外,还有自下而上法和机器学习法。
自下而上法是一种数据科学和主动投资相结合的投资方法。例如研究某A股上市公司,想验证和预测它的收入,可以通过“爬虫”的方法,从占其30%收入来源的电商渠道获取订单信息,从而提前预知其销售的好坏。此外,针对某海外上市的互联网公司,也可以通过运营商去搜集其真实的访问时长和数量,从而验证其在App Store的下载量以及公布的ARPU值是否和真实情况一致。这种和传统基本面不一样的数据科学在华尔街越来越风靡,很多传统基本面基金开始配备数据研究人员来研究。
今后,更有希望成为潮流的是机器学习法。
机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等。该学科专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构,不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合,而不是演绎。
用机器学习来处理数据,一般的工作有归纳和预测。归纳就是根据数据来总结一般的规律。预测是人工智能的一个突出特点,这种预测和前文提到的多因子模型的线性化、数学化的预测机理完全不同。机器学习是一种“硬学习”,通过一定算法来进行推测,其中往往并没有太多的数学理论。自2016年以来,海内外市场已经有一些打着“人工智能”旗号的基金出现。大浪淘沙,确实有一些基金的核心算法是基于机器学习的。这种机器学习会把传统的价格数据、基本面数据当作验算的基础,自己迭代给出买卖的信号。断定“人工智能”基金的业绩未来一定好于传统的主动投资基金或者量化基金还言时过早,但至少表明在投资策略上已有新变化。
五、小结
本章介绍了基本面量化投资中非常重要的一个环节——选股,入门篇里是比较直观、线性的打分选股法,提升篇里是目前主流的BARRA模型及其应用,有兴趣的人还可以进一步参考经典书籍Active Portfolio Management(国内已经有译本《主动投资组合管理》)和Quantitative Equity Portfolio Management:Modern Techniques and Applications。
量化选股是一个系统性的工程。目前在国内的公募基金里,号称采用量化选股的基金已经接近百只,但实际效果表现差距非常大。要做好量化选股,有很多需要注意的地方:
﹡处理好细节。我们由浅入深地来看模型,有些假设是合理的,但很多时候都忽略了一些不能不考虑的细节。例如对行业中性和风格中性的理解,如果不考虑行业的偏离,那么做出来的组合很容易出现非常大的偏离。这要求基本面量化的研究人员经常回顾(review),看到自己之前所做工作的偏差。
﹡风险归因。如前所述,回顾自己的组合,做风险归因是一个非常好的方法。对于我们生成的组合,或者已经投资运行过的组合,定期或不定期地进行收益分解,分析投资好的结果与坏的结果的原因。例如一个股票组合的风险归因,我们应该知道选时方面的能力怎么样、行业配置方面的得失怎么样、选股方面的能力怎么样。大家不应该把风险归因看成后台人员应做的事情,而应当视为跟投资一样重要。
﹡不要过分挖掘数据。量化研究人员的重大误区就是过度重视结果。诚然,做出一条好看的回测曲线是很有成就感的,但离成功的投资结果还差得很远。90%的漂亮的回测曲线,在考虑各种细节之后都被打回了原点。
﹡重视对基本面的理解和研究。量化研究人员很容易对自己的数学和编程技能感到得意,却忽视了对基本面的理解。我们建议量化研究人员多读书,多和基本面投资人员交流,从而加深自己的理解。割裂两种投资方法论是很不可取的。例如在多因子模型框架里,一个有基本面研究经验的研究者知道选用哪个财务因子可能会获得好的结果,甚至采取不同的因子对不同行业进行选股,从而获得更精细的选股效果。
综上所述,量化选股还有很长的路可以走,未来机器学习的引入可能会促进量化选股的进一步发展,我们拭目以待!