DQN个股择时策略研究与改进

策略分享
精选
dqn
rl
标签: #<Tag:0x00007f60ad355c18> #<Tag:0x00007f60ad355a88> #<Tag:0x00007f60ad3558f8> #<Tag:0x00007f60ad355718>

(iQuant) #1

之前在社区分享过一个初版的强化学习策略,之后我们在那个基础上做了一些调整和优化,本文主要是关于新版策略的一些介绍和结果分析。

1. 与初版策略的区别

新版策略与初版的主要区别在于state的定义不同。初版用当天的OHLCV和7个常用因子数据作为一条state。新版设置了一个window_size参数,从当天向前取window_size天的收盘价数据作为一个block,之后对block中的数据依次计算1/e^(-(block[i+1]-block[i])),得到一条state数据,具体如下图所示:
1

新版的回测也做了一些修改,初版是在有买入信号时,买入一定数量的股票,如果有连续的买入信号,在资金允许的情况下将连续买入,卖出同理。新版改为当出现买入信号时,用全部资金买入,有卖出信号时将全部持有股票卖出,同时输出在期初买入并持有到期末时的收益率,便于将两者进行比较分析。

2. 结果分析

我们将之前提到的在期初买入并持有到期末时的收益率作为基准收益率,在多只股票上进行了训练和测试,其中部分结果如下表所示:

股票 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的收益率都高于基准收益率,虽然我们只测试了某些股票,但已经覆盖了趋势上升,趋势下降,宽幅震荡等价格走势,已经能初步体现出强化学习的优势

3. Tips

初版策略分享后有用户反映没有提供调参的接口,因此这次添加了batch_size, window_size, total_episode, learning_rate等可调节的参数。

另外还有一些关于深度神经网络的参数,比如网络层数,各层的输出维度,激活函数等,封装起来有一些困难,因此没有在模块里直接提供参数接口,后续我们会继续调整,尽可能的支持更多的参数调节。

4.

新版策略依然有很大的调整空间,我们会继续在这个基础上进行研究和改进,这次版本更新也只是给大家提供一个调整的思路,欢迎大家和我们一起尝试调整和讨论。

参考文献

1.《DQN个股择时策略研究》
2.《Introduction to Deep Q-network》
3. 深度强化学习(一): Deep Q Network(DQN)
4. 2018秋季CS294-112深度强化学习课程
5. Simple Reinforcement Learning with Tensorflow Part 4: Deep Q-Networks and Beyond

https://i.bigquant.com/user/iquant/lab/share/DQN%20-v2-Clone2.ipynb?_t=1565753002599


深度学习前沿 | 利用GAN预测股价走势
DQN个股择时策略研究
(tkyz) #4


这个只能用于单个股票吗?用整个市场的股票运行,出现错误


(focus666) #5

学习了 谢谢分享


(小Q) #6

题目就说的的个股的择时预测哦,不过后期我们会推出全市场的。


(Quant_Squall) #7

赞!太牛了!


(outside) #8

用i+1的数据去预测i的状态,会不会有未来函数呢?


(xgl891) #9

这里的state[i]指的不是第i天的state,每天的state都是个类似list,state[i]指的是一条state数据里的第i个值,每一条state数据都是用的向前取的数据计算的。


(yusheng361) #10

这个策略报错了哦,是否需要升级一下?


(cash01) #11

DQN报错!!!
image


(High2) #12

原因是平台TF升级了,解决方案请参照这篇帖子:克隆社区的DQN策略,为啥出现这错误呢


(cash01) #13

感谢答复,但是按照帖子里换了最新的模块,好像一直在跑,但没有结果


(ddocan56) #14

无法克隆策略学习啊,只有一个链接还打不开%E6%97%A0%E6%A0%87%E9%A2%98