利用强化学习进行股票操作实战(四)

时间:2024-04-01 10:43:29

本次实战代码仍是在之前基础上进行了一些修改。之前只在一支股票上进行训练,这次我将模型放在多支股票上训练,并在多支股票上进行了测试。对于多支股票的训练策略,没有参考过别人的训练方案(做这个的比较少)。我按自己的理解去训练,每一轮训练,都将每支股票从头到尾走一次。核心代码如下:
利用强化学习进行股票操作实战(四)
结果:
股票1:
不加均线的回测结果:
利用强化学习进行股票操作实战(四)
加均线的回测结果:
利用强化学习进行股票操作实战(四)
股票2:
不加均线的回测结果:
利用强化学习进行股票操作实战(四)
加均线的回测结果:
利用强化学习进行股票操作实战(四)
股票3:
不加均线的回测结果:
利用强化学习进行股票操作实战(四)
加均线的回测结果:
利用强化学习进行股票操作实战(四)
从上图可以发现,加了均线系统限制股票买卖效果不一定好,但是可以从一定程度上规避风险。在下跌趋势比较明显的股票中,均线系统能够很好的保护账户,减少损失。(如股票3)我这个均线策略设计的比较粗糙,如果细化一点,效果应该会好一些。

我本想依靠强化学习实现自动加减仓的功能,但发现这个似乎不太好做。

我最开始尝试了DDPG模型(ActorCritic中的一种),想利用Critic进行评价当前动作能够得到的收益(或是当前动作有多优秀),但是我发现critic很难训练,可能跟我使用的姿势不太对。我是将当前状态和当前动作当做特征输入critic网络中进行评价,这样输入可能很难让神经网络从中学到,应该输入当前状态,评价不同状态的得分。(现在才想到可以这么做,也有可能是神经网络需要精心设计过才好)

然后我又尝试了强制每次交易不满仓,只买入1/5仓位或只买入1/3仓位,每次卖出也同样。但我发现多数情况下这种分批次加减仓操作的效果都不如每次满仓操作效果好。我尝试了两种训练方式:1、在训练中满仓操作单,回测时分批买入;2、在训练中分批买入或卖出,回测同样。这两种训练方式效果都表现不好。

于是我就放弃了加减仓的设计。其实加减仓也可以结合大盘和个股的走势情况进行一个判断,可以通过建模得到当前风险状况来评估仓位设置。(这个后期再考虑了)

最后我再说下我对强化学习用在股票交易上的看法,我个人觉得强化学习用在股票交易上就是大材小用。强化学习适合当前动作对于之后影响没法立刻体现的任务,而在股票交易上,你今天买入或卖出第二天就知道当前操作是否正确。当然可以看一个长期的收益,但如果看一个长期的收益,似乎就不需要强化学习了,可以利用传统的机器学习算法或因子模型等。可能确实可以用强化学习,但我个人还是觉得有些大材小用,有监督学习就可以较好的解决股票交易这个问题。

代码github:
https://github.com/wbbhcb/stock_market

对量化、数据挖掘、深度学习感兴趣的可以关注公众号,本人不定期分享有关这些方面的研究。
利用强化学习进行股票操作实战(四)

个人知乎:
https://www.zhihu.com/people/e-zhe-shi-wo/activities