一种基于深度强化学习的金融时序数据预测方法与流程

文档序号:16680485发布日期:2019-01-19 00:24阅读:801来源:国知局
一种基于深度强化学习的金融时序数据预测方法与流程
本发明涉及深度学习和强化学习领域,更具体地,涉及一种基于深度强化学习的金融时序数据预测方法。
背景技术
:在全球化盛行的今天,金融市场达到空前的规模,投资领域因此涌现出一大批优秀的分析员依靠个人经验和一些主观分析判断来预测资产未来价格,但是传统的交易员操作显然有些低效,因此人们也会借助计算机进行量化研究,代替重复的一些人为工作,这时也就相继出现传统量化投资领域的算法模型,其中也包括了很多结合机器学习做的一些研究,像众所周知的贝叶斯、支持向量机、循环神经网络等。但是往往传统的那些研究方法都存在考虑的指标单一、人为操作的模型预测泛化能力不够等问题,而传统的机器学习算法应用在金融时序数据也同样存在比较明显的缺陷,很多模型特别是深度神经网络在金融时序数据的预测问题上会导致过拟合。金融市场是很变幻莫测的,非平稳性质是金融时序数据普遍存在的一个特性,这让很多模型预测的时候也表现出不稳定的状况。近些年,随着阿尔法围棋大败各大围棋高手后,强度学习进入了全新火热的探索阶段,同样金融领域也不例外,但是不同的算法效果自然也有所差异,其总体架构如下图1所示,本发明的强化学习算法也可用图1表示。强化学习系列也有很多的算法,大致可以分为基于值函数(value-based)的算法和基于策略(policy-based)的算法。基于值函数的算法典型代表为q-learning,其在金融领域的应用是将市场状态定义出来,然后根据ε-greedy策略去选择交易动作,接着观察环境以及动作得到的奖励,进而更新维护q值表,以此来达到优化交易动作选择的目的,但这种算法的问题在于当状态或者动作的维度很大时,难以用q表的形式来维护,而且非常难收敛。基于策略的算法典型代表为policy-gradient,其在金融领域的应用同样是定义市场状态,然后根据已有策略选择最有利的动作,通过环境反馈得到该动作的奖励,接着反向更新策略算法,这样不断更新使得选择的动作更有可能获利,这种方法虽然可以适用于高维度的动作空间,但是基于策略的算法往往收敛到的是局部的最优解而并非全局最优,而且回合更新导致基于策略的算法更新相对低效。技术实现要素:本发明为克服上述现有技术所述的至少一种缺陷,提供一种一种基于深度强化学习的金融时序数据预测方法。为解决上述技术问题,本发明的技术方案如下:一种基于深度强化学习的金融时序数据预测方法,包括以下步骤:s1:从外部系统的windapi下载原始的金融时序数据;s2:构建数据处理子系统,将下载后的原始的金融时序数据进行数据预处理,并输出预处理后的数据;s3:构建特征提取子系统,将预处理后的数据进行深度特征的提取,输出提取到的深度特征信息;s4:构建强化学习子系统,将深度特征信息与交易环境进行比对,进行强化学习,输出交易动作;s5:根据输入到系统中的数据产生的交易动作,实时调整金融市场的目标仓位,达到交易目的。优选地,所述s1中的金融时序数据包括价量信息与宏观信息;所述价量信息包括:开盘价、收盘价、最高价、最低价、成交量;所述宏观信息包括:市盈率、市净率、市销率、市现率、流通市值、总市值、毛利率、每股净资产、资产负债率、汇率。优选地,所述s2中数据预处理包括计算技术指标、数据缺失值的检查与处理、数据标准化、异常值处理,具体步骤如下:s21:接收外部系统windapi输出的原始的金融时序向量vraw进行数据缺失值的检查,并对缺失值进行标记;s22:利用原始的金融时序向量vraw,根据价量信息与宏观信息计算出对应的技术指标信息;s23:设时间滑动窗口为window=600,即每600分钟计算一次,每次计算会滑动一分钟,计算滑动窗口中vraw每个维度的均值μi和标准差σi,然后分别对每一维度进行标准化其中vi是vraw每一维度未经过变换的值,v'i是每一维度经过标准化处理后新的值,将每一维度的信息都标准化为均值为0,方差为1的数据;s24:使用箱线图法确定异常值,并将这些异常值剔除,用s23中计算得到的均值μi来代替异常值;s25:将s23中计算得到的均值μi填补s21中被标记的缺失值;s26:经过s21至s25对原始向量vraw的预处理得到市场状态特征向量vf作为数据处理子系统的输出。优选地,所述技术指标信息包括:指数平滑移动平均线macd、平均趋向指数adx、顺势指标cci、相对强弱指数rsi、布林带bool、平均真实波动atr、5日指数均线ema_5、20日指数均线ema_20、60日指数均线ema_60、120日指数均线ema_120、价格变化率roc、随机动量指数smi、集散量ad、动量线mom、价格震荡百分比ppo、威廉变异离散量wvad。优选地,步骤s4强化学习子系统的处理步骤是:s41:接收特征提取子系统的输出vdeep并作为本子系统的输入,即状态向量vstate;s42:构建动作网络,以状态向量vstate作为输入向量,经过第一层的128个隐藏层神经元的全连接层,再做relu变换,接着输出一个128维中间向量vam1到第二层有128个隐藏层神经元的全连接层,再进行一次relu变换,最后将第二层隐藏层输出的中间向量vam2经过一层3个神经元的全连接层,输出一个3维的动作向量表示目标仓位,这三维分别表示仓位为减仓1手,仓位为无仓位和仓位为加仓1手的概率p,再由softmax变换得出最终的交易动作a=a(s),此处的s指的是市场的状态,a(s)指的是经过动作网络变换得到的映射值,即交易动作;s43:执行s42中的交易动作a后,得到市场环境根据当前状态的反馈即奖励信息r以及市场环境接下来的下一状态s';s44:构造动作网络的损失函数loss_actor=-log(p)*td_error,其中,p为步骤s42中对应选取到的动作a的概率,td_error为从评估网络得到的时序差分误差,动作网络的优化目标为最小化损失函数loss_actor;s45:构建评估网络,同样是以状态向量vstate作为输入向量,经过第一层128个隐藏层神经元的全连接层,再做relu变换,接着输出一个128维中间向量vcm1到第二层有128个隐藏层神经元的全连接层,再进行一次relu变换,最后将第二层隐藏层输出的中间向量vcm2经过一层1个神经元的全连接层,最后输出一个1维的价值变量v=q(s),此处的s指的是市场的状态,q(s)指的是经过评估网络变换得到的映射值,即表征价值的一个值,也称为q值,表征的是该交易动作的价值;s46:求时序差分误差td_error=r+γ*q(s')-q(s),这里的q(s)表示状态s输入到评估网络得到的q值,而q(s')则表示下一状态s'输入到评估网络得到的q值,这里的γ指的是未来奖励衰减权重,表征的是越未来的奖励考虑的重要程度;s47:构造评估网络的损失函数loss_critic=td_error2,而评估网络的优化目标则为最小化损失函数loss_critic。优选地,步骤s3所述的特征提取子系统具体流程为接收数据处理子系统预处理后的市场状态特征向量vf作为输入向量,经过特征提取子系统的神经网络进行深度特征的提取,得到的深度特征vdeep,作为特征提取子系统的输出。与现有技术相比,本发明技术方案的有益效果是:本发明采用了更高维度的信息向量作为市场状态的描述,除了传统的价量信息,本发明还加入宏观信息以及多个技术指标,能够更加有效地获取市场动态,提高对获利交易信号的捕捉;其次本发明采用的特征提取子系统通过深度神经网络,对市场状态信息进行深度特征的提取,可以分析的特征维度比人工处理的大得多,分析能力也比传统人工判断的更加优秀;基于actor-critic算法的强化学习预测系统中,actor不断迭代,得到每一个状态下选择每一动作的合理概率,critic也不断迭代,不断完善每个状态下选择每一个动作的奖惩值,利用这种方法不仅学习效率更快而且能够很好的处理状态空间很大时的情况。附图说明图1为本发明的系统整体框架图。图2是本发明特征提取子系统的深度神经网络结构图。图3是本发明金融时序数据的强化学习框架。图4是本发明actorcritic的算法流程。具体实施方式附图仅用于示例性说明,不能理解为对本专利的限制;下面结合附图和实施例对本发明的技术方案做进一步的说明。实施例1图1是本发明实施例的基于深度强化学习金融时序数据预测系统的整体框架图。如图1所示,本发明所述系统主要包括:数据处理子系统、特征提取子系统和强化学习子系统。图中还有另外两个部分:外部系统windapi下载原始的金融时序数据以及根据强化学习子系统得到的交易动作调节目标仓位实现交易目的。在具体实施过程中,外部系统windapi下载原始的金融时序数据是指通过wind软件提供的api接口下载到的一些关于价量信息以及宏观信息,此处为了方便查阅,将数据处理子系统的计算技术指标信息部分也一并列在下述表中,具体可见以下的描述:表1windapi下载的原始金融时序数据——价量信息描述名称符号描述开盘价open每一分钟的第一个tick价格收盘价close每一分钟的最后一个tick价格最高价high每一分钟里标的最高的价格最低价low每一分钟里标的最低的价格成交量volume每一分钟标的的成交量表2windapi下载的原始金融时序数据——宏观信息描述表3windapi下载的原始金融时序数据——技术指标信息描述数据处理子系统则负责计算技术指标,处理异常数据,以及预处理工作。技术指标部分正如上表所示。数据处理子系统接收的输入为从外部windapi接口下载到的原始数据,第t分钟可以用一个向量(向量维度为(dim价量+dim宏观)×t,其中t表示时间长度)表示,每一维表示的是标的第t分钟的价量指标或者宏观指标,具体这两个指标包括的上表均已列出,后面的dim技术。异常值处理包括缺失值的填补以及噪声点的修正,本发明首先会检查缺失值和异常噪声值,然后进行标准化的预处理,得到的均值以及标准差。用均值填补所标示的异常值以及缺失值。最终处理完毕,将会输出预处理后的向量(向量维度为(dim价量+dim宏观+dim技术)×t)。特征提取子系统接收从数据处理子系统预处理完毕得到的向量并将其作为神经网络的输入向量,经过神经网络提取出深度特征神经网络的具体结构如图2所示,由三层全连接层组成,其中为了方便画图,隐藏去部分隐藏神经元没有画出,每层全连接层的隐藏神经元个数均为16个。输入向量的维度为dimoutput=dim价量+dim宏观+dim技术,即diminput=31,而输出向量的维度为dimoutput=16。强化学习子系统所采用的算法基于动作-评估算法,不断获取市场每一分钟的状态,通过动作网络选择交易动作,并通过评估网络对选择的交易动作做出评价,不停学习优化如何选取更好的交易动作。本子系统的总体强化学习过程正如图3强化学习框架所示。本发明的系统即是图中的交易智能体,而交易环境指的是市场。交易智能体通过观察市场的状态,智能体根据他的经验以及获取到市场上足够的动态信息做出判断,得到此状态下应采取的交易动作,并将交易动作执行到交易环境中,从而得到交易环境对于此交易动作的反馈(即图中的奖励),然后智能体就根据从系统反馈得到的奖励值、市场状态以及交易动作进行强化学习,一方面不断强化得到在各种复杂的市场状态下应该采取怎样的交易动作更加有利于获利,另一方面不断获取市场的最新动态,保证智能体能够不断应对最新的市场变动,并根据最新的动态信息做出更加合适的交易动作。具体地,下面结合图4介绍本发明强化学习子系统的动作-评估算法actor-critic,强化学习子系统是接收特征提取子系统的输出并作为本子系统的作为输入,即状态向量如同图4所示,构建动作网络学习策略,以状态向量作为输入向量,经过第一层有128个隐藏层神经元的全连接层,再做relu变换,接着输出一个128维中间向量到第二层有128个隐藏层神经元的全连接层,再进行一次relu变换,再将第二层全连接层生成的中间向量输入到最后一层3个神经元的全连接层中,输出一个3维的动作向量表示目标仓位,这三维分别表示仓位为空仓1手(-1),仓位为无仓位(0)和仓位为多仓1手(1)的概率,再由softmax变换得出最终的交易动作,得到交易动作的整个过程可表示为at=a(st),此处的st指的是第t分钟市场的状态;同时构建评估网络学习对动作进行评价,同样是以状态向量vstate作为输入向量,经过第一层128个隐藏层神经元的全连接层,再做relu变换,接着输出一个128维中间向量到第二层有128个隐藏层神经元的全连接层,再进行一次relu变换,最后将第二层隐藏层输出的中间向量经过一层1个神经元的全连接层输出一个1维的价值向量,得到价值向量的整个过程可表示为vt=q(st)。由图4可以看出,当接收到系统输出的交易动作at后,市场环境会根据做出的交易动作at返回强化学习子系统两个值,一个是市场下一分钟将跳转到的状态st+1,另一个是此次选择交易动作at的奖励信息如图4所示,强化学习子系统的评估网络部分会根据所获取到的信息对动作网络选择的动作做出评价,其过程便会求时序差分误差td_error=rat+γ*q(st+1)-q(st),这里的q(st)表示状态s输入到评估网络得到的q值,而q(st+1)则表示下一状态st+1输入到评估网络得到的q值,γ是衰减系数,γ的范围为0≤γ<1。而整个算法要不断更新,则为子系统的动作-评估网络分别构造损失函数。构造动作网络的损失函数loss_actor=-log(p)*td_error,其中,p为步骤s42中对应选取到的动作at的概率,td_error为从评估网络得到的时序差分误差,这个在接下来做介绍,动作网络的优化目标为最小化损失函数loss_actor;构造评估网络的损失函数loss_critic=td_error2,而评估网络的优化目标则为最小化损失函数loss_critic;其每一分钟的具体学习过程为:动作网络和评估网络从环境中观察到这一分钟的市场状态st,这里的状态用状态向量表示;动作网络根据市场状态,进行交易动作的预测at=a(st),预测过程可具体细分为:输入状态向量经过第一层全连接层,并经过relu变换,得到输出其中ωak和bak是动作网络第k层全连接层的权值以及偏置,以下出现的ωck和bck则表示评估网络第k层全连接层的权值与偏置;经过第二层全连接层,并经过relu变换,得到输出经过第三层全连接层,得到各个交易动作的概率并经过softmax变换,得到交易动作at=softmax(pt);环境获取到动作网络的输出at,会产生两个反馈,一个是市场下一分钟将跳转到的状态st+1,同样也可以由状态向量表示,另一个是此次选择交易动作at的奖励信息评估网络根据市场状态,进行评价的预测vt=q(st),具体预测过程也可细分为:输入状态向量经过第一层全连接层,并经过relu变换,得到输出经过第二层全连接层,并经过relu变换,得到输出经过第三层全连接层,得到所求的值向量求时序差分误差其中0≤γ<1;分别通过最小化损失函数来迭代更新动作网络与评估网络的参数。构造动作网络的损失函数为loss_actor=-log(p)*td_error,构造评估网络的损失函数为loss_critic=td_error2,这一最小化过程具体在神经网络的反向误差传播完成。强化学习子系统的总体过程便是:构造一个动作网络,这个网络会根据从交易环境得到的奖励来进行调节不同状态下采取各种交易动作的概率,进而选取出最合适的交易动作,另外还会构造一个评估网络,这个网络是一个以值为基础的学习网络,通过单步更新算法计算每一步的奖惩信息,两个网络结合起来,策略网络选择交易动作,评估网络评估选出的交易动作的优劣程度,然后不断迭代更新,完成对动作(目标仓位)的选择优化。在传统的q-learning算法中,当状态的数量有限时会好处理一些,表示起来也是比较方便的,但当面对市场状态空间很大的时候,传统q-learning则束手无策。在传统的policygradient算法中,这种奖励是通过走完一个完整的episode来计算得到的,这不免导致了学习速率很慢,需要很长时间才可以学到东西。本发明基于actor-critic算法的强化学习预测系统中,则可以很好地解决这两个传统方法遇到的问题,actor不断迭代,得到每一个状态下选择每一动作的合理概率,critic也不断迭代,不断完善每个状态下选择每一个动作的奖惩值。这样一来,使得每次选择的交易动作越来越好,每次评估交易动作的优劣也越来越准。附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1