【量化策略】如何用PLS方法合成因子,实现一个年化41%的策略?

因本文涉及公式较多,建议大家前往优矿量化社区,获取完整代码。

导读

A. 研究目的:本文提取25个财务、量价因子,利用PLS(Partial Least Square)方法合成因子,验证能否提升因子表现。参考《Aggregation of Information About the Cross Section of Stock Returns: A Latent Variable Approach》(原作者Light)中的研究方法。当面对多因子回归问题时,大家常选用OLS(Ordinary Least Squares)、WLS(Weighted Least Squares)方法,但这两种方法都要求因子间具有非共线性。而PLS(Partial Least Squares, 也称为Projection to Latent Structures)方法的优点是不再需要满足这个假设,PLS主要通过引入隐变量并做多步回归,回归结果会更为准确;但问题是隐变量的含义并不直观。

B. 研究结论:

--用PLS合成因子,在HS300投资域,可以提高每期平均多空(long short)组合收益;

--通过等权、等市值方法构建组合,测试回测效果。

C. 文章结构:本文共分为4个部分,具体如下,

--数据准备和预处理。通过调用DataAPI或自算的方式,得到投资域内个股对应各期因子;

--单因子分析报告。测试每期平均多空组合收益;

--OLS合成因子测试。OLS合成因子作为一种baseline模型,方便后续对比;

--PLS合成因子测试。验证通过本方法能否带来组合收益的提升。

D. 运行时间说明:

--数据准备和预处理,需要20分钟

--单因子分析报告,需要10分钟

--OLS合成因子测试,需要30分钟

--PLS合成因子测试,需要3小时


第一部分:数据准备和处理

*该部分耗时:20分钟

我们先从DataAPI中提取&计算相关财务、量价原始因子,相互之间不做去除共线性的处理。该部分内容为:

--提取论文中所述的25个传统财务、量价因子

--缓存为pls/pls_single_factor.data,避免重复计算

25个传统财务、量价因子(因公式较多且不便展示,大家可点击文末阅读原文移步至优矿社区进行阅读):


第二部分:单因子分析报告

*该部分耗时:10分钟

为了后续比较OLS/PLS合成因子算法,我们将每个因子分为5组,做多Q1并做空Q5,记录该因子每期平均收益及标准差。该部分内容为:

--为每个因子进行单因子分析,包括覆盖度、分组超额收益、多空平均收益及标准差等;

--将因子分为质量、技术、估值、成长等几大类,分别观察各类内因子覆盖度、分组超额收益。

从上图可见:

--我们计算或提取的因子数据,在HS300投资域的覆盖度,大概可以达到90%以上;

--部分期数覆盖率少于90%,是因为因子计算公式至少需要前N个月的数据做rolling,而uqer中相应财务因子从07年有值;

--分组超额收益对比图,也可看出ROE,B/M,E/P,C/P等因子有正向的超额收益贡献能力,而S市值因子有负向的超额收益贡献(即小市值表现好);

--平均对冲收益最高的为E/P因子,可以达到0.012左右。


第三部分:OLS合成因子测试

*该部分耗时:30分钟

有了上述多个因子后,我们希望合成一个更有预测能力的alpha信号。通常做法是假设因子间已经不再共线,分别回归因子收益、个股预期收益,得到合成的因子值。再进行单因子测试,验证是否可以提升选股能力。该部分内容为:

--利用OLS(作为评价基准/baseline)合成因子,得到每期因子预期收益后,测试分组long-short平均收益;

--用不同历史期数的移动平均得到平滑后的因子收益,进一步回归得到每期个股预期收益(即合成后的因子),进行测试。

1、Baseline/OLS模型

2、实验环节

3、实验结论

我们的实验结果,由上表可见:

--用过去12个月的因子收益平滑作为预测值,平均对冲收益最高为0.123,超过了第二章节的E/P因子,说明用OLS因子合成有效;

--用的历史数据过多或过少,平均对冲收益都会变差。论文中显示用越长的历史数据,平均对冲收益会越好,可能是因为美国市场因子较为稳定。


第四部分:PLS合成因子测试

*该部分耗时 3小时,由于我们进行了多组实验

尽管第三部分的合成方法带来平均对冲收益的提升,但仍需因子间满足非共线性这一假设。故此,我们引出PLS合成因子的方法,并进行实验验证。该部分内容为:

--引入隐变量,逐步回归因子在隐变量上的暴露,依次回归隐变量的因子收益,最终回归得到下一期个股的预期收益

--针对隐变量的代理变量,隐变量收益,测试用不同周期历史数据平均值作为当期预测值,所带来的平均对冲收益变化。

关于PLS算法相关文档(点击文末阅读原文移步至优矿社区获取)

--http://scikit-learn.org/stable/modules/generated/sklearn.cross_decomposition.PLSRegression.html

--https://www.stat.washington.edu/sites/default/files/files/reports/2000/tr371.pdf

1、PLS合成因子

2、实验环节

3、实验结论

4、策略回测

接下来我们使用上步合成后的因子,每月初调仓,每次买入因子值排序靠前的60只股票。

总结

--我们对Light的论文进行了复现,从第四部分实验结论可得,PLS合成因子后能带来平均对冲收益的提升;

--以沪深300为投资域,对合成后的因子,每月初调仓,做多排序前60的个股。通过优矿回测,表明能获得年化41%的收益,并且17年后比较稳定。

号外:利用平台强大的资源,优矿特推出2018量化精英养成计划,培养最优秀的Quants,寻找夜空中最亮的那颗星!来自毕业于牛津大学、北京大学、香港大学等高校的地表最强量化金工团队,手把手带你从0到1玩转量化。

@今日话题 

雪球转发:5回复:4喜欢:33

全部评论

云白天蓝 2018-06-30 11:58

先收藏,再赞,要吃饭了,下午再好好学习。

油爆小丸子 2018-06-30 10:02

收藏

量子复利王岩 2018-06-30 09:42

量化钢铁侠 2018-06-30 09:21

这个值得看看。