DQN个股择时策略研究与改进
由clearyf创建,最终由qxiao 被浏览 1044 用户
导语
之前在社区分享过一个初版的强化学习策略,之后我们在那个基础上做了一些调整和优化,本文主要是关于新版策略的一些介绍和结果分析。
与初版策略的区别
新版策略与初版的主要区别在于state的定义不同。初版用当天的OHLCV和7个常用因子数据作为一条state。新版设置了一个window_size参数,从当天向前取window_size天的收盘价数据作为一个block,之后对block中的数据依次计算1/e^(-(block[i+1]-block[i])),得到一条state数据,具体如下图所示: 新版的回测也做了一些修改,初版是在有买入信号时,买入一定数量的股票,如果有连续的买入信号,在资金允许的情况下将连续买入,卖出同理。新版改为当出现买入信号时,用全部资金买入,有卖出信号时将全部持有股票卖出,同时输出在期初买入并持有到期末时的收益率,便于将两者进行比较分析。
结果分析
我们将之前提到的在期初买入并持有到期末时的收益率作为基准收益率,在多只股票上进行了训练和测试,其中部分结果如下表所示:
股票 | DQN收益率 | 基准收益率 |
---|---|---|
000523.SZA | -0.09 | -0.16 |
000333.SZA | 0.44 | 0.47 |
000001.SZA | -0.01 | -0.021 |
000004.SZA | 0.49 | 0.08 |
300003.SZA | -0.14 | -0.21 |
可以看到,在大部分股票上DQN的收益率都高于基准收益率,虽然我们只测试了某些股票,但已经覆盖了趋势上升,趋势下降,宽幅震荡等价格走势,已经能初步体现出强化学习的优势。
Tips
初版策略分享后有用户反映没有提供调参的接口,因此这次添加了batch_size, window_size, total_episode, learning_rate等可调节的参数。
另外还有一些关于深度神经网络的参数,比如网络层数,各层的输出维度,激活函数等,封装起来有一些困难,因此没有在模块里直接提供参数接口,后续我们会继续调整,尽可能的支持更多的参数调节。
新版策略依然有很大的调整空间,我们会继续在这个基础上进行研究和改进,这次版本更新也只是给大家提供一个调整的思路,欢迎大家和我们一起尝试调整和讨论。
参考文献
2.《Introduction to Deep Q-network》
3. 深度强化学习(一): Deep Q Network(DQN)
5. Simple Reinforcement Learning with Tensorflow Part 4: Deep Q-Networks and Beyond
https://i.bigquant.com/user/iquant/lab/share/DQN -v2-Clone2.ipynb?_t=1565753002599