DeepAlpha-DNN在不同市场下的表现
由wintersp创建,最终由wintersp 被浏览 351 用户
作者:wintersp
DeepAlpha 的优势
DeepAlpha相比stockranker等机器学习的优势在于不用去刻意的构造寻找因子,网络结构本身就已经是一个因子的构造过程。可以专注于策略的适用性以及轮仓选择上面。拿到模型之后时间也比较短,做了一些试验。篇幅有限,有些内容我就不贴上来了。
参数选择
3年训练1年滚动的方式
[[["2017-01-01", "2019-12-31"], ["2020-01-01", "2020-12-31"]], [["2018-01-01", "2020-12-31"], ["2021-01-01", "2021-12-31"]], [["2019-01-01", "2021-12-31"], ["2022-01-01", "2022-06-06"]]]
{"_stock_count": 30, "_weight_i": 2, "_freq": 5, "_max_onestock": 0.15} 分别为当日买入股票数量, weighti代表权重,0为等权,freq为轮仓日期,maxonestock为单只股票最大允许仓位。
所有试验不做调参,只对策略想法、构架、结合实盘的经验给出调整。
所有股票采用真实价格回测,不存在回测过程中的过拟合。
实验结果(全市场)
在不做任何市场限制的情况下,分别测试了5日轮仓,2日轮仓,是否带权重的试验,结果如下:
5日轮仓:
{"_stock_count": 30, "_weight_i": 2, "_freq": 5, "_max_one_stock": 0.15}:
sharpe ret ret_b alpha max_dd max_dd_p 1.126 0.984 0.175 0.279 -0.2459 126
在2022年的情况下取得了不错的超额收益。
{"_stock_count": 20, "_weight_i": 2, "_freq": 5, "_max_one_stock": 0.15}:
sharpe ret ret_b alpha max_dd max_dd_p
0.37 0.245 0.175 0.0547 -0.2971 122
只是降低了持股数量的情况下,绩效并没有得到提升,5日轮仓全市场的情况下,头部收益性较模糊。进一步降低至10只,绩效进一步下降。
2日轮仓
{"_stock_count": 10, "_weight_i": 0, "_freq": 2, "_max_one_stock": 0.15}
sharpe ret ret_b alpha max_dd max_dd_p
0.692 0.571 0.175 0.17 -0.4194
采用2日轮仓,考虑到50%左右的换手率,应进一步提高头部的收益,这里选择了10只股票进行轮仓,采用等权形式。2022年收益12%,但是整体绩效并不出色,尤其是2020年后半段和2021年前半段。
改变了label的标注形式,采用不同方法的相对收益方式,最终提升绩效如下:
1.039 1.008 0.175 0.3061 -0.3039 156
period:2020-01-01~2020-12-31|sharpe:0.883|ret:0.2879|ret_b:0.1683|info:0.0343|md:-0.2316|alpha:0.1458|beta:0.9228|corr:0.7525 period:2021-01-01~2021-12-31|sharpe:1.98|ret:0.7149|ret_b:0.1278|info:0.1217|md:-0.1177|alpha:0.5854|beta:1.0428|corr:0.9604 period:2022-01-01~2022-12-31|sharpe:-0.693|ret:-0.0824|ret_b:-0.1587|info:0.0773|md:-0.2471|alpha:0.1883|beta:0.8623|corr:-0.8758
实验结果(高活跃市场)
对市场做出限制,通过条件选取高活跃股票,追逐热点。
最佳绩效如下:
{"_stock_count": 10, "_weight_i": 0, "_freq": 2, "_max_one_stock": 0.15}
sharpe ret ret_b alpha max_dd max_dd_p 1.528 2.091 0.175 0.5837 -0.2802 173
period:2020-01-01~2020-12-31|sharpe:1.477|ret:0.6357|ret_b:0.1683|info:0.091|md:-0.1911|alpha:0.4681|beta:1.0185|corr:0.8864 period:2021-01-01~2021-12-31|sharpe:2.353|ret:0.9003|ret_b:0.1278|info:0.1519|md:-0.1775|alpha:0.7565|beta:1.0742|corr:0.9763 period:2022-01-01~2022-12-31|sharpe:-0.201|ret:-0.0371|ret_b:-0.1587|info:0.0806|md:-0.232|alpha:0.2964|beta:0.7406|corr:-0.6159
3年的滚动绩效还可以,能够战胜市场,可以作为实盘的候选考虑。同时因为是高活跃股票,成交量足够大,能容纳较大的资金。
实验结果(高活跃市场2)
对市场做出限制,通过条件选取高活跃股票,追逐热点,更为激进。
最佳绩效如下:
{"_stock_count": 10, "_weight_i": 0, "_freq": 2, "_max_one_stock": 0.15}
sharpe ret ret_b alpha max_dd 1.023 0.967 0.175 0.2963 -0.2804
period:2020-01-01~2020-12-31|sharpe:1.751|ret:0.6055|ret_b:0.1683|info:0.1168|md:-0.1221|alpha:0.4384|beta:0.8771|corr:0.9154 period:2021-01-01~2021-12-31|sharpe:0.991|ret:0.3013|ret_b:0.1278|info:0.0461|md:-0.2112|alpha:0.1962|beta:0.9984|corr:0.9067 period:2022-01-01~2022-12-31|sharpe:-0.541|ret:-0.0826|ret_b:-0.1587|info:0.0573|md:-0.2804|alpha:0.196|beta:0.8384|corr:-0.6904
3年的滚动绩效还可以,应为更为激进,可以作为互补。
实验结果(中证800指增)
对市场做出限制,只选择906指数范围内的股票,最佳绩效如下:
{"_stock_count": 30, "_weight_i": 2, "_freq": 5, "_max_one_stock": 0.15}
sharpe ret ret_b alpha max_dd 0.597 0.401 0.175 0.095 -0.3311
period:2020-01-01~2020-12-31|sharpe:0.816|ret:0.2223|ret_b:0.1683|info:0.0295|md:-0.1725|alpha:0.062|beta:0.9389|corr:0.726 period:2021-01-01~2021-12-31|sharpe:1.044|ret:0.2475|ret_b:0.1278|info:0.0636|md:-0.1291|alpha:0.0946|beta:1.188|corr:0.8032 period:2022-01-01~2022-12-31|sharpe:-1.346|ret:-0.1299|ret_b:-0.1587|info:0.0485|md:-0.2843|alpha:0.0372|beta:0.8855|corr:-0.836
绩效一般,说明指数股池范围内的指增还是效果有限,应当放宽范围至全市场。
实验结果(高活跃市场(涨停))
对活跃市场进一步限制,追逐涨停热点、龙头,最佳绩效如下:
{"_stock_count": 10, "_weight_i": 2, "_freq": 2, "_max_one_stock": 0.15}
sharpe ret ret_b alpha max_dd max_dd_p 1.063 0.991 0.175 0.2977 -0.295 108
period:2020-01-01~2020-12-31|sharpe:1.471|ret:0.5181|ret_b:0.1683|info:0.0889|md:-0.1216|alpha:0.3575|beta:0.9048|corr:0.9144 period:2021-01-01~2021-12-31|sharpe:1.257|ret:0.3747|ret_b:0.1278|info:0.0666|md:-0.1755|alpha:0.2558|beta:1.0191|corr:0.9712 period:2022-01-01~2022-12-31|sharpe:-0.581|ret:-0.0728|ret_b:-0.1587|info:0.0774|md:-0.2512|alpha:0.2082|beta:0.8326|corr:-0.6119
3年的滚动绩效可以战胜指数,可以作为实盘储备。
实验结果(机构、私募主场票)
{"_stock_count": 10, "_weight_i": 2, "_freq": 2, "_max_one_stock": 0.15}
sharpe ret ret_b alpha max_dd max_dd_p 1.104 1.278 0.175 0.3858 -0.334 73
period:2020-01-01~2020-12-31|sharpe:1.7|ret:0.7551|ret_b:0.1683|info:0.1101|md:-0.1954|alpha:0.5806|beta:0.999|corr:0.854 period:2021-01-01~2021-12-31|sharpe:1.712|ret:0.668|ret_b:0.1278|info:0.1106|md:-0.1409|alpha:0.4928|beta:1.3487|corr:0.9436 period:2022-01-01~2022-12-31|sharpe:-1.829|ret:-0.2408|ret_b:-0.1587|info:-0.0515|md:-0.334|alpha:-0.2523|beta:0.8542|corr:-0.8702
2022年比较惨烈,这里没有贴图,但是最近2个月的绩效较不错,符合市场,可以考虑择时。
实验结果(新股、次新市场)
{"_stock_count": 5, "_weight_i": 0, "_freq": 2, "_max_one_stock": 0.15}
sharpe ret ret_b alpha max_dd max_dd_p 1.181 1.445 0.175 0.4571 -0.3239 108
period:2020-01-01~2020-12-31|sharpe:0.77|ret:0.2684|ret_b:0.1683|info:0.0243|md:-0.269|alpha:0.1735|beta:0.8007|corr:0.7731 period:2021-01-01~2021-12-31|sharpe:2.263|ret:0.9935|ret_b:0.1278|info:0.1341|md:-0.2084|alpha:0.9148|beta:0.8916|corr:0.9217 period:2022-01-01~2022-12-31|sharpe:-0.212|ret:-0.0443|ret_b:-0.1587|info:0.0745|md:-0.2211|alpha:0.3214|beta:0.8111|corr:-0.536
策略多样性的补充。
结论
1.近3年,在不同的市场情况下都能有战胜指数的表现,总体绩效较为稳定。
2.不需要考虑因子的构成,能够较快的实现策略思想的构建。从而通过多策略进一步平滑曲线战胜市场。
思考
- 细节决定成败,对原版的DL已经进行了大量修改,在label标注,轮仓策略,标准化方式等数据处理上都进行了符合个人习惯的修改,也是部分来自于实盘和sr的经验积累。使用原版DA模型并不能得出上述结果,请注意。
- DL类模型与SR是一个互补的模型,在提高模型多样性,增加整体实盘鲁棒性上有贡献。
- DA模型在考虑训练时间、训练收益方面做到了平衡,比LSTM,CNN类快。
在实验中部分曲线与头部私募高度一致,意味着量化其实都是同源,由于市场不能做空,收益都是高度雷同的。
\
下一步计划
- 在模型整体前置环节,考虑增加CNN+LSTM,但是考虑到训练收益比,绩效提升不一定划算。
- 对98因子进行选择,以上述结果为baseline进行调优。
- 形成策略库,优化轮仓、择时,为实盘补充做准备。
- 测试更短时间的ROLLING绩效。
\