股票操作之强化学习基础(一)

首先为什么要学习强化学习?之前我一直在研究如何利用机器学习去选股,但选股只是股票操作的第一步。股票买入后往往会有加仓、减仓等操作。之前的选股策略并没有对这些操作进行研究。传统的机器学习方法(SVM、GBDT、LR等)一般适用于分类或回归问题,如果要让传统机器学习模型自动学会加仓、减仓等操作,我个人认为比较难,这其中的建模过程比较复杂。以个人目前的浅薄理解来说,这可能可以建模出来,但其效果不一定好。而强化学习就能很好的胜任股票的加仓、减仓等操作。当然强化学习也可以适用股票选择,在未来的研究中,为了将问题简单化,我们把选股的工作交给传统机器学习模型(这里我们之前用的是树模型LGB模型),个股的操作我们交给强化学习。

然后强化学习是干什么的,有什么作用?一般来说机器学习问题可以分为有监督学习(样本有标签)、无监督学习(样本无标签,如聚类就是无监督学习)以及强化学习。强化学习也是机器学习中的一个重要分支,其本质是解决decision making问题,即自动进行决策。目前很多领域都有强化学习的出色表现,比如在围棋上Alohago战胜了柯洁和李世石,又比如在很多MOBA游戏上(如英雄联盟)AI也战胜了很多职业玩家。

接下来我这里简单描述下强化学习。强化学习主要包含四个元素:agent、environment(环境状态)、action(行动)、reward(奖励), 强化学习的目标就是获得最多的累计奖励。

这里引用一篇博客中的例子 [1]。我们以小孩学习走路来做个形象的例子:小孩想要走路,但在这之前,他需要先站起来,站起来之后还要保持平衡,接下来还要先迈出一条腿。应该迈是左腿还是右腿呢,迈出一步后下一步怎么迈呢?小孩就是 agent,他试图通过采取行动(即行走)来操纵环境(行走的表面),并且从一个状态转变到另一个状态(即他走的每一步),当他完成任务的子任务(即走了几步)时,孩子得到奖励(给巧克力吃),并且当他不能走路时,就不会给巧克力。
股票操作之强化学习基础(一)

(图片来源于博客)

那强化学习如何应用在股票操作中呢?这里我们可以把agent看成股票操作机器,它可以选择加仓、减仓等操作。而动作(action)列表就包含加仓、减仓等。环境(environment)我们可以想象为当前股票及大盘的情况。然后我们的agent通过分析当前大盘和个股环境来给出加仓或减仓情况(这里减仓可以全部减完)。然后将股票在未来一段时间的收益看成reward,这个未来一段时间可以自己设置(比如20天)。通过不断的学习,我们的agent就能够很好的根据股票和大盘的环境来进行决策。

强化学习中也有很多类别,有很多种分类方法。可以包括以下几种分类情况(这里参考了博客[1]):

分类1:

Model-free:不尝试去理解环境, 环境给什么就是什么,一步一步等待真实世界的反馈, 再根据反馈采取下一步行动。举个例子在我们在股票操作中,我们无法预测未来的情况,只能通过当前情况来采取操作。

Model-based:先理解真实世界是怎样的, 并建立一个模型来模拟现实世界的反馈,通过想象来预判断接下来将要发生的所有情况,然后选择这些想象情况中最好的那种,并依据这种情况来采取下一步的策略。它比 Model-free 多出了一个虚拟环境,还有想象力。举个例子在寻找最短路径的过程中,我们到达一个点之后可以预测这个点到终点的距离,而这种情况就是能够对未来情况进行一个预测。

分类2(这种分类方式目前还不太理解):

Policy based:通过感官分析所处的环境, 直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动。(输出概率高的,最终选择不一定会选)

Value based:输出的是所有动作的价值, 根据最高价值来选动作。

分类3:

Monte-carlo update(回合更新):游戏开始后, 要等待游戏结束, 然后再总结这一回合中的所有转折点, 再更新行为准则。

Temporal-difference update(单步更新):在游戏进行中每一步都在更新, 不用等待游戏的结束, 这样就能边玩边学习了。与Monte-carlo update区别在于,Temporal-differenceupdate进行一个动作之后就能进行更新,而Monte-carlo update需要等有动作完成(游戏结束)才更新。这里我认为两种方法的适用范围在于:Monte-carlo update适用一回合动作较少的情况(如果动作太多可能不易更新),Temporal-difference update适合进行一个动作之后能马上给出评价的游戏。

分类4:

On-policy:必须本人在场, 并且一定是本人边玩边学习。代表方法:Sarsa。

Off-policy:可以选择自己玩, 也可以选择看着别人玩, 通过看别人玩来学习别人的行为准则。代表方法:Q-learning。

这两种的区别主要在训练更新时不一样。这里讲起来有些复杂,需要结合具体算法讲解,在之后章节会说明。

最后推荐一个我最近在看的强化学习入门教程:莫烦大神的强化学习视频

https://www.bilibili.com/video/av16921335?from=search&seid=11947802275569836236。

参考

[1] https://blog.csdn.net/qq_39521554/article/details/80715615

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

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