强化学习(Reinforcement Learning)在量化交易领域如何应用?


(小马哥) #1

首先,强化学习和(无)监督学习并不是完全分开的概念,强化学习的很多方法中都用到了监督学习,比如DQN。

监督学习中要求数据集是独立同分布的,但由于金融数据集的特殊性,有时候并不能满足这一要求,这时候如果直接把监督学习应用到金融数据集上,就可能会导致很多问题。而强化学习并没有这样的要求假设。

监督学习模型相当于是输入输出之间的一个黑盒子,模型的可解释性较低,而强化学习在某一个状态下采取某种行为,获得某些奖励,根据奖励反馈来对行为进行比较选择的这种逻辑,与在金融市场上进行买卖操作的逻辑也是一致的。

以下是一些具体应用的方向,感兴趣的朋友可以在BigQuant AI平台上动手实践一下,并且很快可视化的强化学习模块也要在平台上线了,敬请期待。

  1. 相比(无)监督学习,强化学习在量化领域应用时,首先需要建立一个环境,在环境中定义state,action,以及reward等。定义的方式有多种选择,比如:

state: 可以将n天的价格,交易量数据组合成某一天的state,也可以用收益率或是其他因子组合作为某一天的state,如果想要定义有限个的state,可以定义为appreciated/ hold_value/ depreciated这样3类。

action: 可以定义为buy/sell两种, 也可以定义为buy/sell/hold三种,或者定义为一个(-1,1)之间的一个连续的数,-1和1分别代表all out 和 holder两个极端。

reward: 可以定义为新旧总资产价值之间的差,或是变化率,也可以将buy时的reward定义为0,sell时的定义为买卖价差。

  1. 需要选择一个具体的强化学习方法:

2.1 Q-table (具体可参考:Reinforcement Learning Stock Trader)

个人认为这不是一个很好的办法,因为Q-table里面的state是有限的,而我们定义的state里面的数据往往都是连续的,很难在有限个state里面去很好的表达。

2.2 Deep Q Network(参考:Reinforcement Learning for Stock Prediction

在1的基础上,将Q-table的功能用一个深度学习网络来实现,解决了有限个state的问题。

2.3 Actor Critic (参考:Deep-Reinforcement-Learning-in-Stock-Trading

用两个模型,一个同DQN输出Q值,另一个直接输出行为。但由于两个模型参数更新相互影响,较难收敛。

2.4 DDPG(参考:ml-stock-prediction

加入了不及时更新参数的模型,解决难收敛的问题

  1. 由于多数方法中都用到了深度神经网络,我们还需要对神经网络的模型,深度,还有其他参数进行一个选择。

  2. 比较简单的应用逻辑是对单个股票某一时间段进行择时,如果需要也可以在这个基础上进行一些调整,对某个股票池的股票进行分析,调整为一个选股策略。