多因子模型系列7-多因子模型水平测试题试答

作者:江嘉键

因子部分

前一段时间,李腾、陈烨、邓岳、陈志岗几位老师在知乎上发布了一份多因子模型的测试题,其中囊括了多因子建模过程中大部分需要考虑的理论和实践问题:

多因子模型水平测试题 – 科学投资 – 知乎专栏

在过去几个月时间,米筐科技(RiceQuant)量化策略团队对这套经久不衰的量化模型进行了系统研究,相关的产品项目也即将发布。我打算通过回答这份测试题的形式,分享这个过程中获得一些经验和想法。由于题目众多,在这里先对测试题的第一部分的问题进行试答,希望对大家有所帮助。

*************** 多因子模型测试题回答开始 ***************

问题2: 常见的因子类别?

答:我个人倾向于以下简单的分类方式:量价因子、基本面因子和外部响应因子。

量价因子包含一些简单的指标,例如成交量、换手率和日内最高/最低价等;有一些量价因子则较为复杂,例如一些技术分析因子和数据挖掘得到的统计因子;

基本面因子通常是一些反映企业经营状况(市盈率、负债率等)和经营特征(行业因子)的变量。其包括来自于企业自身公布的报表,也可以是其它专业机构发布的一致预期预测(Consensus Forecast)。

外部响应因子则取决于交易选择的证券池。例如如果一个机构是只做股票类证券的交易,那么和债券市场相关的指标对他们而言就是外部响应因子;如果一个机构是做全球资产配置,涉及多个市场和不同类型的证券,那么像某些国家和地区的通胀率、GDP等,对这个机构来说才是外部响应因子。

问题1: A股市场驱动因子能分为哪几大类?

答:因子分类同问题2。

以上三类因子应用于A股市场各自存在优缺点:

量价因子通常对行情变化非常敏感,能够有效捕捉市场的趋势,但简单因子因为广为人知,其影响早已体现在证券价格中(有效市场理论);一部分技术分析因子由于流传甚广,可能存在一定的自我实现效应,但同样地,其影响可能已体现在证券价格中;而另一部分技术分析的描述接近于玄学,存在一定的模糊性;通过数据挖掘获得的,意义不明的统计因子容易出现多重比较谬误(multiple comparison fallacy)的问题。

基本面因子通常被做长期资产配置或者信奉价值投资理念的投资者采用。而在应用中过程中,存在以下困难:1 基本面因子数据获得时间点不统一(取决于企业发布报表的时间和机构发布预测的时间);2 相比量价因子,其数据噪声大、缺失值多,数据质量取决于审计机构的专业性和企业的诚信程度;3 因子取值的分布通常远远偏离正态分布,对于离群值的判断不能用标准差这个常用的统计量; 4 一致预期的数据采集难度较大。

外部响应因子在某些情况下有很强的解释力,但在建模过程中,由于不同因子的量纲千差万别,通常要先估计其响应系数,因此会引起变量误差(error-in-variables)的问题,另外,部分外部响应因子来源于政府发布的数据,其可能存在采样质量差,而且数据被人工删改等问题。

问题3: 除了最常用的回归法,还有没有其他方法可以进行单因子测试?各自优劣是什么?

答:在不使用回归的前提下,如果我们希望测试单因子对于预期收益率的预测能力:

1 直接计算其信息系数(Information Coefficient,IC),并应用精炼预测公式(refined forecast)进一步预测其效果;

2 构建因子对应的投资组合,其构建方法可以简单也可以复杂,例如选择不同的证券池和不同的中性化处理方法,计算其累计收益率;

3 如果希望捕捉非线性关系,也可以考虑使用距离相关系数(distance correlation)或者最大信息系数(Maximum Information Coefficient)等统计量。但任何非线性关系的分析和应用都存在过拟合的风险。

在不使用回归的前提下,如果我们希望测试该因子是否适合于风险预测模型:

可以计算该因子的自相关系数、和模型其它因子的共线性程度、和基准组合的相关程度等。

问题4:单因子测试是否需要纠正版块、市值偏离等问题?如何纠正?

答:对于收益预测而言,是否需要纠正取决于你对该因子的判断。如果你认为该因子对于行业的预期收益率没有预测能力,就应该实现行业中性,反之不应该实现行业中性;市值偏离是否需要纠正亦是同理。

对于基于净值的业绩归因而言,中性化处理是必须的。市场和市值和影响力很大,不进行中性化处理的话,因子之间的共线性会导致系数估计的方差变大。

问题5:行业归属因子是否应选择动态变化的数据?

答:应该。答案如几位老师所言,不使用动态数据会出现使用未来数据的问题。

问题6:混业经营的上市公司,其行业因子有哪些处理方式?利弊?

答:对于混业经营的上市公司,其行业因子不能简单使用取值为 0 或 1 的哑变量(dummy variable)来表示。此时对行业因子暴露度的处理有两个思路:

1 继续使用哑变量代表行业因子,而虚拟变量的权重可以直接使用等权重,或通过一些财务数据分析来确定;

2 不再使用哑变量,而使用连续变量表示行业因子。其暴露度可以通过该上市公司的收益率对行业收益率做多元回归决定。

第 1 种方法受数据噪音干扰减少,但可能存在欠拟合(underfitting);第 2 种方法受数据噪音干扰较大,可能存在过拟合的问题。而且选择什么变量进行回归存在主观性。

问题7:行业因子采用GICS、证监会、申万、中信等第三方数据更好?还是利用相关性、聚类分析等算法来动态确定更好?各自利弊?

答:就其使用而言,行业因子一般都是模型中风险控制的维度。它的选择应当符合市场上大部分投资者的认知。我个人的观点是,用复杂统计分析或机器学习来构建行业因子一来没有必要,二来由于引入额外的数据和分析步骤,模型的误差也会随之增加。

问题8:规模因子(Size,也叫市值因子)为什么在中国具有如此重大的影响?选择长期暴露小盘股有哪些利弊?

答:就一般而言,中国A股市场的四个特点导致小盘股更受青睐,市值因子影响巨大:

1 证券市场不规范,内幕交易盛行。部分机构投资者(所谓庄家)和公司股东存在不当的合作关系,利用小盘股股价易于操纵的特点获利;

2 相比成熟的证券市场,中国股票市场个人投资者比例偏高,个人投资者而且对股票市场的认识不成熟,希望通过投资股价变化更快的小盘股短时间内获利;

3 大盘股对应的通常为大型国有企业,其分红意愿不强,投资者难以通过价值投资的方式获得收益;

4 此外,《主动投资组合管理》的一个理论分析和模拟给出了一个很有意思的角度:如果做空个股受限,只能通过基准组合实现对冲的话,阿尔法对冲策略的优化结果通常是在小盘股上持有正头寸,而在大盘股上持有负头寸。这个结论也适用于A股市场。

问题9:市值因子应该怎么取?取市值本身、市值对数、市值平方根有什么区别,哪种更好?你认为流通市值和市值哪个信号更强?

答:取市值平方根计算或市值对数,会减少个股之间市值暴露度的差距。具体哪一种因子计算方式更好,流通市值还是市值哪一个更好,可以通过因子测试验证。就直觉而言,流通市值是一个更能精确地反映股票市值变化的变量,效果可能更好。

问题10:换手率应该怎么计算?如遇长时间停牌,如何处理?

答:换手率一般定义为 交易量/流通股本。由于换手率一般是衡量股票流动性的指标,所以根据多因子模型的调整频率,可以用周换手率、月换手率或年换手率作为指标或者流动性因子。

对于长时间停牌的股票,我个人认可的处理方法是剔除该股票。因为停牌通常意味着有重大消息要发布,其复牌后的收益出现异常波动的可能性较大。这种消息面因素导致的特异收益 (specific return) 通常是无法被多因子模型解释的,所以会给模型的参数估计带来额外噪音。

问题11:若某一因子包含长期平均数据(比如5年平均净利润),而中间有数据缺失的片段(比如最近5年中有2年的年报缺失),应该如何处理?现有两种参考方法:设为空值,或取现有数据的平均值充作长期均值。哪种更好?还是无所谓?

答:作为例子,假设我们在处理一个盈利因子,其第2,3年的数据缺失,考虑三种情况:1 存在缺失值的企业盈利线性增加;存在缺失值的企业盈利线性减少;存在缺失值的股票经营情况来回波动。

如果企业盈利线性增加,剔除缺失值再取平均会导致盈利因子暴露度被高估;

如果企业盈利线性减少,剔除缺失值再取平均会导致盈利因子暴露度被低估;

如果在5年时间区间内企业盈利大幅波动,剔除缺失值再取平均对盈利因子暴露度的暴露度误差的影响无法估计。

对于缺失值的处理没有一劳永逸的方法。其合适的处理方式依赖于数据特点、缺失情况(个别缺失还是大段缺失)、我们计算的目标是什么,等等。因此必须要对具体的问题和数据仔细斟酌,才能找到相对合适的处理方法。

问题12:财务数据应该在哪个时点进行更新?比如月频的多因子模型,年报公布时间可能为 3 月或 4 月,是在3月底的时候即时更新那些已出的数据,还是在4月底统一更新使用?
答:在用历史数据对基本面因子取值进行计算的时候,我们应当保证因子所包含的信息和当时市场上投资者获得的信息一致。对于题目中的例子,如果企业是在 3 月份公布年报,则这些股票的因子暴露度应当在 3 月底进行更新;对于没有公布年报的企业,因子暴露度则维持原来的取值。

问题13:有哪些指标可以用来衡量单因子测试的结果?

答:如果希望判断但因子的预测能力,最常见的基本指标是信息率(Information Ratio, IR)。一些业绩评价的常用指标,例如夏普比率,最大回撤等也可以用于单因子效果判断。

问题14:依据单因子测试结果,如何对因子的有效程度进行排序?或者说,如何用单一指标衡量因子有效性?

答:用问题13的指标对因子进行排序则可。在排序的时候,更常见的方法是采用多个股票池对因子进行多次测试 —— 橘生淮南则为橘,生于淮北则为枳。

问题15:所谓的 “alpha因子” 和 “风险因子”,应该怎么进行区分?

答:alpha 因子通常是对特定证券的预期收益率有预测能力的因子;而风险因子通常是投资者认为他们的信息或者策略对于该维度没有预测能力,并希望实现中性化处理的因子 (先验),或对投资组合的风险存在显著边际贡献的因子 (后验)。由此可见,一个因子是 alpha 因子还是风险因子,部分取决于投资者的信息和经验—— 此之蜜糖,彼之砒霜。

问题16:你理解中有效且有逻辑的因子应该包括哪些?有逻辑但效果较差的因子应该包括哪些?如果采用某种方法组合出一个古怪的因子解释力很强,但是看不出因子的经济意义,你该怎么办?

答:如果我知道有效又有逻辑的因子,那当然不能告诉你了;有逻辑但效果差的话,可能是因为该因子的效应已经体现在证券价格中(有效市场理论)。对于表达式非常复杂难解的因子,可通过计算其对特征组合的暴露度来判断其经济学意义。

问题17:如何打磨旧的因子,提高其有效性?

答:一个思路是,把旧因子和新因子进行组合。在旧因子的预测能力未完全衰减至0,且和新因子存在相关性的前提下,旧因子可以增强新因子的预测能力,或者对冲其风险。

问题18:构建因子的新信息源如何寻找?有哪些思路?

答:略。

问题19:现在常用的因子都是易于量化的因子,对于基本面因子、事件驱动因子、市场情绪因子等不易量化的因子,有无合适的处理方法?

答:在我看来,这些因子不难量化,尽管量化的方式可能因人而异。

风险预测部分

本期嘉宾:流川枫。*************** 多因子模型测试题回答开始 ***************

1 用于风险预测的多因子模型,在拟合时应侧重考虑哪些方面?

答:这里假定题目中所说的 “拟合” 是 Barra 的结构化风险模型的回归系数估计步骤,那么:

1 仔细检查离群值,剔除错误或不合理的离群值,把合理的,但在三个标准差以外的离群值拉回到三个标准差;

2 用市值平方根近似股票的特异波动率,对股票进行加权。一方面减轻残差异方差性的影响,另一方面保证在所有风险暴露相同的组合之中,因子组合是风险最小的组合 。

详细可见 Barra 发布的 USE4 (The Barra US Equity Model)或 CNE5(Barra China Equity Model)研究报告。

2 是否有必要预测收益的波动率?如何预测收益的波动率?是否要在优化中使用波动率?

答:第一个和第三个就不说了,第二个问题比较奇怪。

在使用多因子模型对资产风险进行预测时,我们一般使用 Rosenberg (Barra创始人)1974 年提出的建模思路,先估计因子收益的协方差矩阵,再预测组合收益的协方差矩阵。

如果直接对资产组合收益的波动率建模,由于多期的资产收益波动率通常是一个自相关性不稳定的非平稳时间序列,使用多因子模型进行时间序列回归的话,残差时间序列也可能是非平稳的。因此会造成以下问题:

1 最小二乘法不再是最优线性无偏估计(Best Linear Unbiased Estimation,BLUE),需要采用广义最小二乘法(Generalized Least Square, GLS)进行回归系数估计;

2 残差自相关性导致一些基于残差分析的绩效指标和统计量(信息率和T统计量)不再适用。

因此,如果希望对资产组合的波动率直接进行预测,一般会使用 Garch 模型等时间序列模型。不过广义来说,时间序列模型和多因子模型具有相同的数学形式。如果把自回归项、移动平均项和长期均值视为因子,那么 Garch 模型也可以认为是一个多因子模型。但必须注意的是,Garch 的参数估计方法是极大似然估计(Maximum Likelihood Estimation)而不是回归模型常用的最小二乘法。

3 多因子模型预测出的协方差矩阵是否会有发生高度接近奇异的情况?

答:有可能。如果因子收益的协方差矩阵是奇异矩阵,则估计出来的资产收益协方差矩阵也可能是奇异的。所以一般要通过特定的处理,例如矩阵收缩(matrix shrinkage)等对因子协方差矩阵进行降噪。USE4 给出的模型主要改进就是协方差矩阵的降噪处理。
4 设我们称风险预测模型中的因子为“风险因子”,称收益预测模型中的因子为“alpha因子”。如果一个alpha因子也入选了风险因子,会对组合优化结果产生什么影响?如果在风险模型中特意剔除所有alpha因子,会对组合优化结果产生什么影响?

答:如果一个 alpha 因子进入了风险结构化模型,且在组合优化时对其进行了中性化处理,那么该 alpha 因子理论上不会产生收益。

组合优化中,哪些因子是阿尔法因子,哪些是风险因子,取决于测试结果和投资者本身对于该因子的理解。就一般而言,对越多因子进行中性化处理,资产组合的风险就越低,同时预期收益也会越低;反之风险和预期收益都会增加。

5 BARRA的多因子风险预测模型主要在哪些细节上做了精细处理?

答:我已经把 USE4 和 CNE5 背下来了。没有任何细节再让我感觉到精细了。

6 BARRA在不同市场上的多因子风险预测模型之间的细微差异,反映了各个市场的哪些特点?

答:对比 USE4 和 CNE5 的话,USE4 中的因子组比 CNE5 多出了两个:Dividend Yield 和Non-Linear Beta。

对于 Barra 的因子取舍问题,我也存有疑问。从直觉而言,Dividend Yield 在美国市场的的影响力大于中国市场是可以理解的。但从 USE4 给出的统计检验结果来看,Dividend Yield 在美国市场的显著性并不高(T统计量绝对值的均值为 1.37),在所有因子中排名倒数第二。因此在效果不佳的前提下,为什么在 USE4 保留而 在CNE5 中舍弃呢?我个人推测如下:

1 CNE5 的模型(2012年发布)比 USE4的模型 (2011年发布)更为领先,Barra 发现该因子在中国市场效果同样不佳,予以舍弃;

2 Dividend Yield 在美国长期使用,为了保证模型作为商业化产品的稳定性,没有放弃该因子,而在中国市场没有类似的顾虑;

3 美国的投资者非常关注组合对于 Dividend Yield 的暴露情况,因此作为后面中性化处理的重要维度予以保留,而中国的投资者并不太关心组合对于Dividend Yield 的暴露情况。

Non-Linear Beta 因子是一个数学或者物理意义上设计非常精巧的因子。第一次看到该因子的构建方式时,我有一种 “哇,好漂亮的思路!”的感觉。但我一直不能理解这个因子对应的投资逻辑。

依据这个因子的数学形式和 Barra 的解释,该因子对应一个 “barbell portfolio”,其思路是做空高贝塔值股票和低贝塔值股票,同时做多贝塔值处于中间的股票。也就是说,其投资思路是贝塔值高和贝塔值低的股票有类似的走势,而贝塔值处于中间的股票有相反的走势。

高贝塔值意味着该股票和市场整体走势大致相同,而低贝塔值意味着该股票和市场走势相关性不大,这两类型股票走势相近的合理解释是什么?我其实也不能理解。

7 用日数据vs用月数据估计协方差矩阵,各适用于什么需求?用日内(例如分钟级)数据来估计协方差阵的好处与坏处是什么?

答:由于这是一套多因子模型的测试题,因此问题的语境应该限定为 “用多因子模型进行风险预测” ,而不应该是讨论其它协方差矩阵的估计方法(例如单因素模型或者历史协方差矩阵)。如果使用分钟级别的数据,所选的因子必须有一致的时间尺度——这意味不能使用任何基本面因子,而只能使用量价因子。用一套量价因子来做收益预测是完全可行的,但我个人认为,仅仅使用量价因子做风险分解和预测未必妥当。

下面我们仅仅比较月频率和日频率的数据使用:

理论上,Barra 的结构化模型中,相当部分的风险因子都是基本面因子,其时间尺度较大,因此每月计算一次因子收益即可。

但在对因子收益的经验协方差矩阵(empirical covariance matrix)进行估计时,我们会面临以下的两难问题:

1 假定我们的模型中包含20个因子,那么我们至少需要 21 个月的数据。而对于政策变化频繁,投资理念不成熟的中国A股市场,21个月的时间已经足够让市场发生结构性的变化,从而使协方差矩阵的估计失去意义;

2 如果用日频率的因子收益计算,则其中包含的噪音相对较多,而且在得到日频率的因子收益协方差矩阵以后,我们对其进行时间尺度的转换,而且需要对其噪音进行严格控制。

8 怎样衡量或评估风险预测模型的有效性?

答:对于因子的有效性,USE 4 主要提到以下标准:

1 选用的因子组应该能够有效把系统性风险分解出来——即特异收益率没有相关性。特异收益率没有相关性也是结构化风险模型的假设之一;

2 在有效分解系统性风险的前提下,因子数目越少越好(parsimony),降低模型过拟合的可能性;

3 持续的统计显著性。对于具体某个因子,我们可以通过多期回归得到一组因子T统计量,如果这组T统计量的绝对值的均值大于2,或者在该组T统计量中,其绝对值大于2的比例较高,则认为该因子有很好的效果;

4 因子暴露度的稳定性。理论上,结构化风险模型更新频率是每月一次,因此因子暴露度时间尺度应该与之一致;

5 因子的共线性。因子之间存在共线性会导致回归系数的估计方差变大,因此在因子选择时应尽量避免出现共线性问题。

6 因子的经济学意义符合直觉。因子意义容易理解,一方面是模型质量的要求;另一方面,在组合优化的时候,我们需要根据自己的理解选择中性化约束。如果因子的意义难于理解,是否有必要对其进行中性化处理自然也无从判断。

除此以外,USE4中,也给出了因子的年化收益率、年化波动率、年化夏普率等指标。但我个人认为,如果以风险预测为目标,这些指标并不是必要的。

对于整个模型的有效性检验,USE4 提到以下标准:

1 可决系数(coefficient of determination),也就是我们常说的 R^2;

2 Bias Statistics ,这个测试的思路和我们开发策略常用的信息系数类似,是比较模型的预测和实际情况的差距;而基于 Bias Statistics 的 Mean Rolling Absolute Deviation(MRAD)会提供更多关于模型精度的信息。

 

 

多因子模型系列目录

1.多因子模型系列1-数据预处理之离群值处理
2. 多因子模型系列2-多因子模型的步骤梳理
3. 多因子模型系列3-Fama Franch三因子及其拓展五因子模型
4. 多因子模型系列4-验证Fama French三因子分解的有效性
5. 多因子模型系列5-套利定价模型的应用
6. 多因子模型系列6-沪深300指数的风格因子暴露度分析
当前阅读> 7. 多因子模型系列7-多因子模型水平测试题试答
8. 多因子模型系列8-基于组合权重优化的风格中性多因子选股策略框架
9. 多因子模型系列9-阿里巴巴与101个alpha
10. 多因子模型系列10-因子分析
11. 多因子模型系列11-绩效分析之Brinson模型