用xgboost模型可以提高单因子的MAE、因子的风格轮动秩相关系数,并提高多因子组合的收益和回撤表现,显示出不错的择时效果。
本文共分为四个部分,具体如下:
一、数据准备和处理;
二、预测因子的未来IC: 用xgboost静态模型、滚动模型来预测因子的下一期IC;
三、单因子选股比较:比较6个因子择时和不择时的表现。
四、多因子实证分析:利用xgboost预测的IC值合成因子,并构建组合比较合成因子的效果
备注:深度报告版权归优矿所有,禁止直接转载或编辑后转载。
一、数据准备和处理
该部分耗时 15分钟
该部分内容为:
获取6个因子的值
将因子值进行标准化
获取13个外部变量的因子值,作为模型的输入特征
计算因子的历史IC,作为模型的输入特征
将需要预测的目标(因子IC)和特征对齐,即 model_data
1.1 确定universe
![](https://i-blog.csdnimg.cn/blog_migrate/5b0c4e1d72fe736f8f970ec2d7b4917b.jpeg)
查看完整代码请前往优矿量化社区
1.2 取因子数据,并对数据进行标准化
![](https://i-blog.csdnimg.cn/blog_migrate/03dc84e08a168bb026c8377c35fc806d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/3dd78f846dd5636c2f3e736eade85232.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b3943d5e1e591e36a8a3ab772cdee4ed.jpeg)
查看完整代码请前往优矿量化社区
1.3 取外部变量因子数据,作为模型特征的一部分
![](https://i-blog.csdnimg.cn/blog_migrate/f65091deb207eebf051d09253241d60f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/7c4288542796acda1e74749b62378ec8.jpeg)
查看完整代码请前往优矿量化社区
上面是所需要的数据,已经更新到2018-05-31,下面的代码需要根据自己的需要更改回测时间。
1.4 计算因子的IC,用历史IC作为模型特征的一部分
![](https://i-blog.csdnimg.cn/blog_migrate/5155eec5acb3aa6ffd6538e2a57e20cd.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/031c82165426e1a4172ec403c89be64c.jpeg)
查看完整代码请前往优矿量化社区
1.5 将预测值、特征值对齐
![](https://i-blog.csdnimg.cn/blog_migrate/8fab3dcf758519155ca9362f5b3ebfec.jpeg)
查看完整代码请前往优矿量化社区
二、预测因子的未来IC
该部分耗时 2.5小时左右
参照组:以上一期的IC来预测下一期的IC
用xgboost模型,分别以静态和滚动的方式预测IC
通过MAE、风格轮动秩相关系数比较不同预测方法的表现
2.1 参照组,以过去一期的IC代表未来一期的IC
baseline_frame的格式为:[trade_date, 各个因子的真实IC值(以_IC结尾),各个因子的预测IC值(以IC_extend结尾)]
![](https://i-blog.csdnimg.cn/blog_migrate/2881d9b0c2c1f9cf91376c502ee7c69e.jpeg)
load上面的数据,重启时候接上
![](https://i-blog.csdnimg.cn/blog_migrate/a45afb132972256adf4cf4a7e53eec43.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/25638180f72a671981a1075a4dd57aea.jpeg)
查看完整代码请前往优矿量化社区
2.2 用xgboost对因子IC进行预测
static: 代表不进行滚动建模,2008-2013数据进行训练,用训练得到的模型预测因子值(6个模型)
rolling: 代表滚动建模,从2014年开始,每一个季度后将训练数据滚动一个季度训练得到新的模型,并用在下一个季度的预测上
得到的static_result/rolling_result 为 dataframe,列为 trade_date, 【各个因子的实际IC】,【各个因子的预测IC】
xgboost有很多超参数可以调整,在本文中,我们对max_depth in [3, 4], eta in [0.01, 0.02, 0.1, 0.2]进行了调参,最终选择了 max_depth=3, eta=0.01
时间说明: 该部分耗时较长,跑static的模型,在30分钟左右,跑rolling模型的时间在1-2个小时
![](https://i-blog.csdnimg.cn/blog_migrate/60841151118672541fe61af5cfb102b4.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/96bcd7f89f269cdfa53e22805d9f8f11.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/30fe17cca30e350183fd8c70a5737a77.jpeg)
查看完整代码请前往优矿量化社区
2.3 比较MAE、风格轮动秩相关系数
![](https://i-blog.csdnimg.cn/blog_migrate/cb27c9c15c8093091eea835776a347eb.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/a1a01f097e37b029cec270a385b1b0ca.jpeg)
查看完整代码请前往优矿量化社区
从MAE来看,用xgboost模型预测的IC明显比baseline要高
![](https://i-blog.csdnimg.cn/blog_migrate/f1a65fdc9484bb10ec6df70298bfa3f5.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1445cd4f857646aa6fd0ccee2460e501.jpeg)
从风格轮动秩相关系数来看,xgboost预测的结果秩相关系数更高,且更稳定。
三、单因子选股比较
该部分耗时 15分钟
![](https://i-blog.csdnimg.cn/blog_migrate/32022296ee9065965c25eaa3c0646637.jpeg)
查看完整代码请前往优矿量化社区
![](https://i-blog.csdnimg.cn/blog_migrate/3dcc02965266b9fc03cbf3d59601afbb.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/83e4a225c78a5673099525f778b1bb53.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/108fb37d6103f6352178197d2c6503f3.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/08760c2e28289771332ba2c48b7f35bb.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/df87f48acc1708de6bf6b7f59c93beea.jpeg)
查看完整代码请前往优矿量化社区
![](https://i-blog.csdnimg.cn/blog_migrate/4aa406dc3c16a5905769e7929596ded0.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/58fd4039971012ec004c03210ed29bd1.jpeg)
四、多因子实证分析
根据预测的IC值合成因子
对合成后的因子构建组合并进行回测
4.1 合成因子
合成方法:
正向因子,下一期预测的IC为正,因子权重为预测的IC值
负向因子,下一期预测的IC为负,因子权重为预测的-IC值
所有因子都相反,则等权合成
最后进行归一化
等权合成因子作为对比
![](https://i-blog.csdnimg.cn/blog_migrate/a7284ce9ecd7f9c9d1c67933e24ab7ba.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f85c6c76847a703913f77984477a4c48.jpeg)
查看完整代码请前往优矿量化社区
4.2 利用合成后的因子构建组合并回测
组合构建和回测说明:
中证500成份股、剔除ST、停牌股票
等权买入合成因子值最大的一组(分成10组)
回测期:2014年1月到2017年12月
![](https://i-blog.csdnimg.cn/blog_migrate/faee7ce1f5a3de54a27e0872383af594.jpeg)
查看完整代码请前往优矿量化社区
4.2.1 等权合成组合
![](https://i-blog.csdnimg.cn/blog_migrate/eb3e2b760df6d203d643b2fbdc516ed3.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2534c2864aea0d0e88a1b45eaad1e173.jpeg)
查看完整代码请前往优矿量化社区
![](https://i-blog.csdnimg.cn/blog_migrate/4b7e846d8a679b3f0e253dcbdd3e067d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/b74ca1bf9f4862f03b28e42c698be9eb.jpeg)
4.2.2 xgboost静态组合
![](https://i-blog.csdnimg.cn/blog_migrate/b691facd18a36fc1333e3659ed9c2d39.jpeg)
查看完整代码请前往优矿量化社区
![](https://i-blog.csdnimg.cn/blog_migrate/9fcbdcbea3850ee8b477519383622041.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2e1c6ee2a23cea528fab59a68654a85b.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c4ce6c1d3bf05b8986588605eaa9722c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/156702881b16a25e44e0ff090b439f8c.jpeg)
查看完整代码请前往优矿量化社区
4.2.3 xgboost的rolling组合
![](https://i-blog.csdnimg.cn/blog_migrate/8e42a99eba59a409417c9989395be918.jpeg)
查看完整代码请前往优矿量化社区
![](https://i-blog.csdnimg.cn/blog_migrate/eacd5f0111fd057119ba3a9f49ba474d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2e1c6ee2a23cea528fab59a68654a85b.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/910a1fb7fa66c1d08a621c8005ec8b93.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9be1403eed1fd5747a9a17791e9fb38e.jpeg)
查看完整代码请前往优矿量化社区
从上表来看,xgboost能够有效的提高多因子表现(收益比等权多,回撤也更小),年化收益为负可能是由于特征选择的因素,可以通过增加更多的因子以及外部变量来增强模型的效果。