【论文 CCF C】Multi-DQN: An ensemble of Deep Q-learning agents for stock market forecasting

Expert Systems With Applications 164 (2021) 113820 (CCF C)
论文链接:Multi-DQN: An ensemble of Deep Q-learning agents for stock market forecasting



摘要

股票市场预测是机器学习最具挑战性的应用之一,因为股票的历史数据带有噪声且不稳定。
大多数成功的方法都是监督学习,将训练数据标记为涨或跌。然而,用这种方法进行训练和分类,可能会遇到过拟合的问题,因为市场行为与其他市场的趋势、政治事件等外部因素有关。
本文中,我们的目标是通过提出强化学习的方法来最小化这些问题,不需要使用标注进行学习,而是学习如何在训练过程中使回报函数(return function)达到最大。我们开发了一个基于DQN的agent,用相同的训练数据进行多次训练,并研究了它在现实世界中主要股票市场的组合。实验结果表明,该策略优于传统的buy-and-hold策略,即使buy-and-hold策略在我们的实验中也表现不错。我们还对实验结果进行了定量和定性的分析。

1. Introduction

这篇论文的主要贡献有:

  1. 将强化学习的agent进行组合,每个agent使用不同的epochs进行训练,再通过不同的协商阈值进行组合。我们采用了DQN算法,应用于单日内的股票市场交易。即使是基础的网络结构,相比基准策略(buy-and-hold),在一些未来的市场中,我们方法的表现更好。据我们所知,这项工作是第一次将DQN方法进行组合,用不同的epochs进行训练,来预测不同的未来市场;
  2. 探索不同的决策组合以适用于特定的市场和交易时期,并对这些决策组合进行分析;
  3. 一种新的特征集,称为multi-resolution,以更有效的方式将不同时间的数据进行拼接,从而总结出agent需要学习的相关信息,以实现更好的收益。

2. Background and related work

2.1. Reinforcement learning 略

2.2. Reinforcement trading

在强化交易(Reinforcement Trading ,RT)中,return、action、R的定义如下:
在这里插入图片描述
算法的目标是最大化一段时间T内的reward:
在这里插入图片描述
算法目标的另一种表示:夏普比率,即最大化基于风险的回报。
在这里插入图片描述
为了实现该目标,需要将特征向量输入agent,特征向量为最后m个return的值:
在这里插入图片描述

3. Proposed approach

在本文中,我们提出了一个多智能体深度强化学习方法用于股票交易,agent用连续不同的迭代进行训练,将这些迭代定义为从现在开始的epochs。

3.1. Trading strategy

我们用agent在单个交易日内执行交易策略:确保在同一个交易日市场收盘前,买卖特定的金融产品(我们使用的是股票期货)。我们对我们的策略进行建模,在单个交易日内,agent必须执行以下的行动(action)之一:

  • long action,多头,买入该产品然后在市场收盘前卖出;
  • short action,空头,卖出产品(使用the uncovered sale机制)然后在市场收盘前买入;
  • opt-out action,选择退出,当天不进行交易;

假设已知当天的价格趋势(无论上涨还是下跌),策略的目标是选择的行动能够最大化当天的回报(即reward)。因此,如果agent认为当天的价格会涨,则执行做多;如果agent认为当天的价格会跌,则执行做空;如果agent不确定价格的涨跌趋势,或者认为价格会保持不变,则执行opt-out action,即选择退出。

3.2. Summary of the approach

我们提出的方法:

  1. 用不同的epochs对多个agent进行训练。由于训练过程中固有的随机性,为了在复杂的环境中最大化reward,导致不同的agent拥有不同经验;
  2. 不同的决策(decision)组合生成一个最终的决策。最终的决策,由不同agent的决策组合构成,并且与不同的协商(agreement )阈值、agent的参数配置有关。我们探索固定策略(一次操作或选择退出)和混合策略(将多头、空头、选择退出进行不同的组合)。
  3. 使用multi-resolution方法。这是我们为了生成agents的输入样本而提出的一项新技术。特征集为不同时间的历史数据和不同历史深度合成的市场观察结果。

对应的流程图如图1所示:
在这里插入图片描述
我们的目标是实现reward的最大化,reward的定义如下:
在这里插入图片描述
其中,open为开盘价,close为收盘价。
agent在环境中经过多次不同的训练迭代后,几个agent在市场中执行不同的action。为了跟踪agent的所有决策,我们将每个历史决策存储在日志文件(Log File)中。

3.3. Multiple DRL agents

我们采用DQN的方法来学习,在测试环境中,DQN输入一种状态(state),输出每种action对应的Q值,然后选择Q值最高的action。
使用带有目标网络(target network)的DQN,可以训练得更快更好,一共两步:

  1. DQN的主网络用于选择最佳的action;
  2. 目标网络用于计算在下个状态(next state)执行某个action对应的Q值;

此外,我们方法中的DQN考虑了dueling networks。
图2展示了主要的网络结构,使用了dueling网络和目标网络。
在这里插入图片描述
DQN中的主要部分是一个简单的网络,由一层flatten、一层包含35个神经元的全连接(用LeakyRelu激活)和N个神经元的全连接层(用线性函数激活,N为action的数量)。
用不同的epochs训练多个agent,agent均是基于DQN的。每个不同的组合是由不同的强化学习分类器构成,每个训练的阶段(epoch)对应一种组合。图3展示了这些agents的常见行为,用训练和验证的reward表示。agent在不同训练阶段的不同行为,相当于是多个agent使用相同的策略但拥有不同的经验,并根据这些决策来形成一个最终的agent(ensembling agent)。这种方法的想法是,这些agents可以互补,因为他们对环境有不同的经验,使得该方法对不确定的股票市场更具有鲁棒性。通过设定阈值(即x%),将不同agent的决策进行组合,即:不同的agent中至少有x%同意该决策时,最终的agent才执行做多或做空操作,否则就选择退出。
在这里插入图片描述

3.4. Multiple combinations of decisions

用深度强化学习来预测股价时,最好对市场的复杂性有一定的了解,以便对agents的行动进行设置。
用不同agent的组合进行股票交易,可以设置为几个action的组合,以适用于不同的股票市场。
我们用以下的决策组合对我们的方法进行设置:

  • 仅执行做多的agent(Only-Long agent):最终的agent由多个agent构成,通过设置,使得在单日内的交易中仅可以执行做多或选择退出(选择退出opt-out是始终允许的)。为了在真实世界中进行交易,输入过去某一天的股价,让所有已经训练好的agent预测要执行的行动,并根据每个agent生成一个日志文件,包含每个交易日对应的决策。通过调整阈值,将所有单个agent的决策进行组合,生成最终的决策,如图4a所示:
    在这里插入图片描述

  • 仅执行做空的agent(Only-Short agent):与仅执行做多的agent类似,每个agent仅允许执行做空或选择退出。如图4b所示:
    在这里插入图片描述

  • 做空+做多的agent(Long+Short agent):agent获取Only-Long和Only-Short agent的决策结果,作为这个agent的输入。如图4c所示,将他们进行组合:当两类agent无法达成一致,或两类agent都建议退出,则选择退出。
    在这里插入图片描述

  • 完全的agent(Full agent):由多个单独的agent组成,这些agent可以执行做多、做空和选择退出,如图4d所示:
    在这里插入图片描述
    给定一个仅执行做多的agent,我们可以训练几个agent,以便学习选择退出或执行做多操作,取决于哪种回报率更高。将要预测的过去的交易日数据输入这些agent。通过选择合适的阈值,agent可以根据出现最多的决策的出现频率,选择是否进行交易,否则选择退出(opt-out action)。
    通过这样的agent设置,我们的方法考虑了不同市场的特殊性。例如,标普500指数(S&P500)从历史上看是显著上升的趋势,因此做空操作产生的收益可能并不可观。此外,可以通过设定阈值,做出更保守或更具有风险性的交易行为。在长期投资中,我们可以选择降低阈值,以避免在可能到来的危机中出现亏损。危机事件可能会影响数据,进而误导大部分的agent,我们的方法可以在最终的决策中排除一部分这样的agent。在短期投资中,我们期望不会发生危机,因此我们希望大部分的agent都能捕捉到价格变化的实质。因此,我们方法是为复杂的市场设计的专门的自动股票交易方法。

3.5. Multi-resolution samples

我们提出了一种multi-resolution的方法,为我们的agents提供输入样本。数据集是一个时间序列,表示市场每小时的观察(observations)。对每个时刻t,生成一个向量S(t):
在这里插入图片描述
此外,H(t), D(t), W(t)中每个观察的计算方式为:(收盘价 - 开盘价)/开盘价,开盘价对应(t-1)时刻,收盘价为t时刻。

4. Experimental setup

4.1. Datasets

我们用两个数据集对我们提出的方法进行验证:标普指数500和德国股指DAX。我们最初使用了每小时的价格数据,其结构见表1:
在这里插入图片描述
这些市场价格信息通常以市场点(market points)的形式显示。标普500指数的点值为50美元,DAX指数的点值为25欧元。
根据原始的时间序列,我们创建了剩余天数和每周的数据集,如第3.5节所述,方式如下:open为每天/每周最开始的价格,close为每天/每周结束时的价格,max为每天/每周的最大值,以此类推。
有了这些数据集,我们可以使用multi-resolution方法,使用l = 40(过去40h), m = 20(过去20天), n = 8(过去8周)作为参数。选择这些参数是因为,考虑到预测日前几个小时内频繁的市场波动,同时随着时间间隔的增加,观察的粒度(granularity )会减小。这三个值是通过初步的实验,根据经验得出的。研究表明,选择l = 40 ± 10 可以获得更好的结果(与该范围之外的值相比);另外,对m和n的选择,我们发现,这些值的增加不会导致结果发生实质性的变化,这些值设置的太低会影响结果。这些设置使得向量样本的维度为68。
我们决定用标普500的数据集进行两个不同的实验,我们分析了大约两年的短周期(称为子数据集S&P500-S)和大约十年的长周期(称为子数据集S&P500-L),为了研究agent在不同长度周期下的行为。标普500指数和DAX指数数据的时间对应相同。数据集的详细情况见表2:
在这里插入图片描述

4.2. Experimental methodology

我们使用一种常见的方法来验证时间序列数据,称为前向验证(walk-forward validation)。在实验场景中,考虑了时刻t的观察与时刻(t+1)的观察之间的语义联系,组成相同的训练集、验证集和测试集。这与常见的交叉验证方法不同,例如leave-one-out交叉验证和k-fold交叉验证,数据在不同的fold中随机取样,不管数据是在什么时候获得的。当应用于时间序列预测时,这种方法的偏差是很大的,因为当使用这种策略时,刚刚过去的时间点(late past)和未来即将到来的时间点(early future)对应的特征可以混合在同一个fold的数据中。前向验证更适合这种情况,因为所考虑的fold是暂时被分割的,并作为训练、验证、测试的数据进行处理。
实验中,选择分组(walks)的个数为:对SP500-L,22组(walks);对SP500-S,5组(walks);对DAX,21组(walks)。虽然SP500-L和DAX的时间段相同,但DAX中缺失的天数导致分组(walks)减少。对每个分组(walk),我们选择了5年的数据进行训练,6个月的数据用来验证,6个月的数据用来测试。例如,假设我们有200天的数据,我们将其分为6组(walks),每组包含100天。一种方法是将每组的前80天作为训练集,剩下的20天作为测试集,如表3的左侧所示:
在这里插入图片描述

4.3. Evaluation metrics 评价指标

4.3.1. Accuracy 准确度

常用于分类问题,用来反映分类的整体表现。准确度为被正确分类的实例数量与实例总数的比值。
在这里插入图片描述

4.3.2. Maximum drawdown (MDD) 最大回撤

最大回撤越小越好。

4.3.3. Coverage (COV) 覆盖率

在这里插入图片描述

只有在不同agent之间达成一致(达到设定阈值)时才执行决策,否则就选择退出(不交易)。

4.3.4. Sortino ratio 索提诺比率

体现了期望回报和风险之间的关系。
在这里插入图片描述
索提诺比率与夏普比率略有不同,夏普比率计算的是所有收益的标准差,而不仅仅只计算负收益。因此,夏普比率会惩罚向上和向下的不稳定性。我们发现,在我们的实验中,索提诺比率以每天和每月为基础,对于无风险比率(risk-free rate),混合金融制度(a compound financial regime)下,我们考虑了美国十年期国债收益率的均值产生的预期回报,保持时间和投资金额相同。

4.3.5. The equity curve 资产曲线

也称盈亏曲线,反映了agent在一段时间内股票市场上的盈亏情况。图中正的斜率表示交易策略产生了盈利,负的斜率则表明该策略产生了亏损。例如,给定初始的投资金额用于股票交易,有确定的进入价格和退出价格,同时考虑了交易佣金:
在这里插入图片描述
我们还考虑了交易过程中总的回报。

4.3.6. Statistical tests

为了检验实验结果在统计学上的相关性,我们使用了Student’s t-test,从而确定两个分布的平均值之间是否存在显著差异。t检验考察了几个指标,包括t统计量、t分布和自由度。
为了在我们的场景中使用t检验,我们用几个样本外的交易日进行了几次t检验。然后,我们计算了索提诺比率的分布,来确定是否有显著性差异。我们将置信水平设为95%,若计算出的p值小于0.05,则表示两个分布之间没有显著差异,零假设被拒绝。

4.4. Technical details

本文的实验使用python的keras-RL库进行开发的,使用adam优化器(learning rate = 10^-3),算法的探索概率为20%,每个agent训练100个epoch,不同agent组合成一个最终的agent的阈值设置为:从60%到100%,每次递增10%。

4.5. Baseline strategy

我们使用buy-and-hold策略(记为BH)作为基准策略,与我们的方法进行比较。BH是一种被动的投资策略,投资者购买股票并长期持有,只要股票能在很长的一段时间内逐渐上涨。BH被广泛用作baseline,用来评估其他投资策略的盈利能力,对我们的实验结果来说也是一个有价值的基准(benchmark)。

5. Results and discussion

我们用真实世界的交易场景对我们的agent进行验证,使用4.2节中的前向验证(walk-forward)方法。
为了检验在未知的测试时间段最终合成agent的表现,我们让多个程序同时运行(我们选择5个),并用公式14计算得到最佳的验证(validation )准确度,以便丢弃过拟合的网络。
在这里插入图片描述
初始的价格分别为:
在这里插入图片描述
所有的策略均采用stop-loss机制,设为open(d) ± 0.05⋅open(d),其中open为每个交易日d的开盘价(5%的偏移量取决于每天的决策,做多还是做空)。我们的所有源码已经上传到github:https://github.com/multidqn/deep-q-trading

对每个场景,我们先分析了每种策略的整体利润风险表现,与buy-and-hold作对比,设定不同的阈值,分别计算每天、每月的索提诺比率。然后,我们讨论了四个相关的评价指标:回报、最大回撤、覆盖率和股票曲线,每种方法均采用最佳的协商(agreement )阈值。如4.3.4节中提到的,为了计算索提诺比率,我们假设无风险比率(risk-free rate)为:对应交易时间的美国十年期国债收益率的平均水平。

5.1. Results on the S&P500-S dataset (short period)

我们使用标普500指数的数据集的一小部分来验证我们的方法,从2015年到2017年,是一个相对较近的时间段。图5总结了实验的结果:
在这里插入图片描述
图5(a)显示,就索提诺比率而言,仅执行做多的agent的表现明显优于buy-and-hold策略,在实验场景中buy-and-hold策略的整体趋势是积极的。图5(b)中的结果加强了这种结论。具体来说,当选择的协商阈值不超过90%时,agent在每天和每月的数据上均有更好的表现。然而,我们注意到:即使将协商阈值设为100%,agent相比buy-and-hold策略仅仅好那么一点点,尽管在表现上有实质性的下降。我们还观察到,在这种场景下,Long+Short agent的表现第二好,表明这是一种能克服市场行为的策略,但是引入做空操作可能会导致更具风险的解决方案,因为短期的分析体现了股价的上升趋势。Full和Only-Short agent在这种场景下的表现不是很好。
图6总结了S&P500-S实验中的其他指标:
在这里插入图片描述
在图6(a)中,当协商阈值在60% - 90%范围内,在短期场景中,Only-Long agent在投资回报方面的表现最好。图6(b)显示了不同策略的最大回撤,Only-Long 和 Long+Short agents 的风险明显低于buy-and-hold策略。根据我们的假设,对于不同的协商阈值,Full 和 Only-Short agent的最大回撤值更大。图6(c)显示了不同协商阈值对应的覆盖率,协商阈值为60%时,Only-Long agent大约有45%的交易日执行决策,Long+Short agent则有大约50%的交易日执行决策。
比较图6(b)和(c),直觉告诉我们,最大回撤会随着交易次数的增加而增大,但我们的agent(除了Only-Short agent)对此具有足够的鲁棒性。在图6(d)中,Only-Long 和 Long+Short agent的表现较好,随着时间的推移,大部分策略的收益都是上升的趋势,其中buy-and-hold策略在刚开始阶段表现较差。
然而,随着时间的推移,Only-Long agent表现得更加稳定,总的利润也始终高于其他策略。
Long+Short agent对后半部分的市场复苏反应更好,其中Only-Short subagent(Long+Short agent的组成部分)的行为更加谨慎(除了最近的几周,大部分时间都选择退出),从而有利于Only-Long subagent。相反,按照实际的设计方法,Full agent在决定做多还是做空时似乎更加激进,在这两个阶段中,在这个特定的场景中,对第一个负周期反应非常好,但基本上无法利用随后强劲的市场复苏。这种行为可以解释,对于Full agent,执行多头或空头可能比选择退出的收益更高。图6显示,对于大多数阈值,这种策略拥有更高的覆盖率和风险。相反,在Only-Long 和 Only-Short方法中,agent学到了选择退出比执行错误的操作(做多或做空)更好,因为无法执行相反的操作。这就是为什么Long+Short的组合比Full agent更加保守(进入市场的次数更少),但对急剧的市场趋势更加敏感。
最后,图6(b)和(c)表明,整体而言,选择更高的阈值将导致覆盖率降低,与人们的认知相反,不仅降低了风险,而且(阈值达到90%时)增加或维持所有策略的预期回报。因此,根据这些结果,我们可以得出结论,Only-Long agent在阈值为90%时,在所有的评价指标中都是表现最好的。

5.2. Results on the S&P500-L dataset (long period)

考虑较长时期的标普500指数,从2007年到2017年。图7显示了实验的索提诺比率:
在这里插入图片描述
根据图7,阈值分别为60%和80%时,与buy-and-hold相比,Only-Long 和Full agents的表现更好。
因此,我们发现,与标普500-S的场景不同,Full agent在较低的阈值(达到80%)时的表现较好。这一事实可以发现:

  1. 更长的训练周期可以让agent更好地学会如何平衡地使用选择退出,而在短期训练周期,基于做多和做空使用更激进的策略可能获得更高的收益;
  2. 这个策略似乎能更好地应对熊市(在标普500-S中已经出现过),因此利用2008年的经济危机的影响,以及随后市场的下跌(特别是由2010年一万亿美元的暴跌和2012年欧洲的信贷危机引起的下跌)。

相反,Long+Short agent在更广泛的场景中表现得不好。这是因为尽管存在上述的危机,如5.1节所述,Only Short agent非常负面的表现,往往采取更保守的策略,即更倾向于选择退出,而不是采取有风险的错误决定(损失更多)。

在这里插入图片描述
图8(a)中,buy-and-hold的表现最好。图8(b)表示,除了Only short agent在阈值为60%的时候,其他策略的风险均小于基准策略。图8(c),Full agent在阈值为80%时表现较好,只有30%的交易日执行了决策。这说明我们方法的灵活性和鲁棒性较好,因为那段时间市场受到上述提到的几次危机的影响。事实上,Full agent学会了面对不确定的时候保持警惕,因此选择退出较多,形成一个更安全、回报更高、风险更低的策略。图8(d)也证实了我们的假设,在2007年到2013年的困难时期,所有的策略均超过了基准策略,而基准策略遭受了上述危机的不利影响。在危机之后基准策略的表现较好,only long的表现类似。总的来说,即使在这种情况下(尽管阈值较低),only long仍然是可靠的,在正周期和负周期有更快的变化,也鼓励采用更加极端的策略,例如full agent提出的策略。

5.3. Results on DAX market

我们最后对德国DAX指数进行了实验。对于标普500指数-L的实验,我们也考虑了2007-2017年的数据。
在这里插入图片描述
图9中的索提诺比率显示,除了only long在阈值为80-100%的时候,在不同阈值下,所有方法的表现均较好。当所有方法使用至少两种阈值时,表现均优于基准策略。该市场中,最好的方法是Long + Short策略,这主要得益于only short的出色表现。该市场与标普500-L相比具有相似的特征,尤其是受到相同危机的时段。然而,与美国市场相比,受到危机的影响更大,且复苏乏力。在这种情况下,Full agent的行为与标普500-L实验中类似,更长的观察期能更有效地平衡这种方法。
在这里插入图片描述
图10(a)中,所有方法在阈值为60%时,收益都比基准策略好。这意味着,在特定市场的不稳定时期,如果追求收益的话,阈值的设定不需要太大。图10(b)显示,所有策略的风险均小于基准策略。图10(d),所有策略的表现均优于基准策略。
因此,我们可以得出当采取一种我们提出的策略时,配置如下:

  1. Only-Long agent适合以上涨为主的市场;
  2. 在较为不稳定的市场,如果主要目标是控制风险(而非被动投资),或更好地利用不利的市场阶段,Full 和 Long+Short是更好的选择;

与基准策略相比,我们的方法经过t检验,设置最佳的阈值,用索提诺比率作为评价指标。对于SP500-S、SP500-L和 DAX,p值分别为 3.68 × 10− 5、0.0219、 0.0034,所以我们拒绝零假设,表明我们提出的方法是有效的。

6. Conclusion

这篇文章中,我们提出了一种方法,将相同的DQN分类器进行组合,分别用不同的环境进行训练,得到不同的经验。
我们的实验支持我们的假设,即我们的方法通过灵活的组合,可以应对不确定的市场:

  1. 几个agent具有不同的市场经验;
  2. 将行动进行不同的组合;
  3. 采用不同的协商阈值,生成一个组合策略;
  4. multiple resolution data,可以互补地表示过去的价格;

以上可以针对不同的市场和交易时间段设计专门的策略,并有可能可以同时应对不同的市场。
不同市场的实验结果,我们可以得出:对比被动的基准策略,我们的方法在不同的配置下有较好的结果,尤其是索提诺比率、最大回撤和资产曲线。首先,Only-Long结合了几个个体agent的决策(仅允许做多或退出),对长期上涨的市场表现较好。由于覆盖率的控制,在没有明显损害预期收益的情况下,大幅降低了风险。另一个比较好的方法是Long+Short 和Full agent。相比Only-Long,这些方法能更好地减轻市场的负面影响,从而优于不稳定的长期交易策略。

尽管我们方法的局限性在于所处理的数据仅包含过去的价格数据,而且他们需要基于新闻数据做进一步分析,以获得更好的交易结果。但我们认为,这可以作为未来的研究方向。因此,其中一个研究目标是将股票交易系统与新闻分类系统结合,以便更好的考虑外部因素对股票市场的影响。还可以考虑使用其他agent来代替DQN,或者尝试其他网络,例如LSTM。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值