策略分享

DeepAlpha-DNN对高频双股轮仓策略的应用分析

由liuhooly创建,最终由liuhooly 被浏览 259 用户

作者:liuhooly

前言

首先感谢平台给了和众位大神一起学习和实践DNN的机会,我应该是这次里面经验比较浅的,因为一直以来使用的都是

StockRanker,因此本文的使用体验上会有一定的两种学习方法的对比理解。不一定准确,大家参考即可。

策略构建

标注

因为是高频轮仓,所以主要是用的第二日收盘价与第一日开盘价的比值来做收益标注(shift(close, -2) / shift(open, -1)-1),同时,将所有股票按照100个区间进行标注区分。其实再过往经验中,该方法不一定是最好的,因为有出现过使用第3日或第5日收盘价反而表现更好,但是这点为什么无法解释清楚。

训练时间

训练时间上我选择了是20年1月1日到22年1月1日,选择该训练时间的原因有两个:

1、根据不完全观测,大部分的策略在20年前有效的,20年后都失效了,可以认为随着市场竞争加剧,针对量化交易的手段变多,简单的策略越来越无法取得正收益。因此如果训练模型和大多数模型一样,使用过去较长的时间,可能会趋同于大部分策略,这样也有可能被反向狙击。

2、大家都知道滚动训练是一种比较有效的方法,滚动训练一般是按照2~3年的周期进行滚动,认为选择近2年,相当于手动滚动。也可以按照半年或者1个季度进行人工滚动。

数据过滤

数据过滤方面,我常用的有两个,股票池和条件过滤。

股票池一定是会剔除ST、停牌、创业板之类的。偶尔会区别的是大盘股或中证500,喜欢中证500是因为大部分时候中证500是所有股票池综合表现最好的,好中选好么。

条件过滤通常会使用的有两个,一种是今日跌,明日买入,一种是只买入有市盈率的(或企业净收入为正)。原因纯粹个人偏好,不一定准确。在本次实验中,发现这2个条件都不怎么好,特别是过滤了之后来喂数据,无论如何调整,换因子,都无法取得好的收益,所以后来就放弃了。最终本次实验剩下的都是没有条件过滤的。这带来一个思考,DNN是否应该彻底摒弃一些人为条件,而完全信赖它呢?

因子

本次尝试了按照模板的98个因子,也有缩减因子,增加因子的对比,但是因子可能不是影响最大的,基础策略高频轮仓本身就会对策略的影响很大。后面对比之后再细说。

回测

回测就不多说了,是主要策略的高频轮仓,2只股票,每只都是今天买入次日收盘卖出,所以其实一直都是满仓状态,需要注意的是,做这个策略大家需要再一定程度上用仓位+现金平衡,所以不能卖多少第二天就买入多少,这样容易出现很快不是均分仓的情况。

时间上,回测的主要是22年1月1日到6月多的数据。

训练和固化

这个是DNN最无法解释的,我多次出现了不改进入数据,但是出现过隔几天,或者隔一周,只是重新跑策略,结果完全不一样的问题,固化虽然能解决这个问题,但是为什么,没法解释总是让心里很没安全感。

回测结果


1、34个因子, 中证500

{w:100}{w:100}模拟盘

{w:100}{w:100}


3、25各因子,中证500

{w:100}{w:100}模拟盘

{w:100}{w:100}


3、131个因子,中证500

{w:100}{w:100}模拟盘

{w:100}{w:100}


4、378个因子,全市场

{w:100}{w:100}

总结和展望

1、不知道大家注意到没有,这些回测都有一个问题:在大盘跌的时候涨,在大盘涨的时候跌,仿佛是做空的感觉,但是实际上是全仓买入的。因此,如果要继续下去,这些策略可能更适合大盘下跌做一些风险。。。

2、模拟盘的表现都不如大盘,特别是最近大盘都是上涨情况,加剧了第一个观测点。造成这个问题的思考:

使用了排序,因为DNN输出的不是像StockRanker那样的分数,而是pred_label,也就是标注区间预测,因此,按照分数最好的来买入这个逻辑不太存在,特别是本次测试中通常是用的升序才有较好的排序(区间最低),对此和因子测试的时候有点像,怎么解释,也没了解透彻。期待有大神能解惑吧

3、DNN是否适合高频策略呢?高频策略的逻辑是,既然可以预测更赚钱的股票,那只要投入这一支来获取超额收益就行了。根据我的测试,DNN在高频轮仓策略上是有潜力的,但是如何优化,可能需要更牛的大神来处理。

最后,实盘这几周,基本跑到了垫底,不知道确实是跑出了几个适合跌盘时候的策略,还是高频轮仓的哪个地方有问题。希望资源啥时候能让我支持1000因子的测试就好了,现在超过400就要崩溃。。。已经是最好的服务器了,大宽加油吧~

\

标签

高频交易
评论
  • 跟因子没关系,你用同一因子修改DNN参数和后面买入主函数策略 也会不一样
  • 个人觉得如果没有主观策略因子,比如(open_*0-close*_1)>1.05这样的,因子影响不大
{link}