本发明属于股市风险预测模型技术领域,具体涉及深度神经网络模型的结构设计,特别是涉及一种基于多任务学习和多指数协同注意力机制的股市预测方法。
背景技术:
深度学习是机器学习领域中一个重要的研究方向。近年来,得益于数据的爆炸性增长和硬件技术的飞速发展,深度学习在多个领域取得了突破性的进展,包括图像识别、视频分类、文本挖掘、语音合成、自动驾驶等。不同于以往机器学习算法,深度学习网络通过使用大量的数据、先进的硬件设备和合理的网络结构,获得了强大的模型非线性表征能力,因此能够对复杂的场景和任务进行建模和计算。在这之中,数据的量级决定模型的能力上限,硬件的算力决定模型的迭代频率,而深度学习网络结构设计是否合理,直接决定了能否将数据和硬件的效能发挥到最佳。
根据数据形式的不同,深度学习网络结构可以分为卷积神经网络(如alexnet、googlenet、resnet)和时序神经网络(如lstm、gru、bilstm);根据任务数目的不同,深度学习网络结构可以分为单任务学习模型和多任务学习模型;根据任务属性的不同,深度学习网络结构可以分为分类模型和回归模型等。由于股市数据的时序性特点,本发明采用时序神经网络作为基础架构,并利用多任务学习框架作为多指数模型的训练框架。
在大盘波动甚至大跌的时候,如何有效进行避险止损,是投资策略中非常重要的一个环节。股市风险预测模型是量化投资的一类重要模型,它从大量的股市历史数据中选择出各种节点,进而确定更好的投资方案,避免投资者由于情绪影响而出现非理性投资策略的情况。风险预测问题可以转化为“分类”问题,通过回顾过去一段时间的大盘走势,预测近一段时间是涨是跌。传统的股市风险预测模型是多个机器学习算法的融合,例如arima-svm方法融合了差分自回归移动平均模型(arima)、支持向量机(svm)和小波分解(wd)联合预测股票价格。但是,此类模型依赖于严格的假设条件,即使数据量不断增大,该方法的预测效果也很难得以改善,因此,许多研究者尝试引入深度学习技术进行股市风险预测。例如,2018年由王浩等人提出的股票助手(stockassistant)利用股票的评价信息和价格变动信息,对不同的数据采取不同的处理方式,最后再将数据特征进行整合,从而预测股票的未来走势。但该方法一方面由于需要同时处理时序数据和新闻文本数据,从而不可避免地引入了大量噪声文本,不利于模型训练;另一方面模型结构简单,且依赖文本特征提取模块,进一步限制模型的学习。2020年李炜等人提出的长短时关系图卷积神经网络(lstm-rgcn)将每支股票当做图中的节点,股票之间的联系当做图中的边,通过图神经网络对股票的关联度进行建模,进而预测股票涨跌。但该方法需要提前获取股票关系数据,且关系的种类有限,收集难度大,不利于模型的迭代训练。此外,投资者往往关注整个大盘的走势,以便根据大盘走势调整仓位。目前已有的技术只预测单支股票的趋势,未能预测整个大盘走势,从而在实际投资中很难为投资者提供关于大盘的有效信息。
技术实现要素:
为了解决上述技术问题,本发明提供一种基于多任务学习和多指数协同注意力机制的股市预测方法,具体包括以下步骤:
s1、采集股市指数数据的多指数特征,并对所述多指数特征进行标准化处理;
s2、将处理后的多指数特征输入到多任务编码层,得到多个指数编码特征;
s3、将多个所述指数编码特征进行拼接,得到指数特征总和;将所述指数特征总和输入到任务协同注意力网络中,得到任务协同注意力矩阵;
s4、将多个所述指数编码特征和所述任务协同注意力矩阵输入到指数相关性特征学习层,得到多个指数相关性特征;
s5、将多个所述指数相关性特征输入到残差全连接层,得到具备两种性质的特征;
s6、将所述具备两种性质的特征输入到指数预测层,得到股市指数风险预测结果。
优选地,所述指数数据采用日频交易数据。
优选地,所述步骤s2具体为:将经过所述标准化处理后的所有指数特征输入到长短期记忆型循环神经网络lstm中,并取所述lstm最后一个时间步的输出作为指数数据的多指数编码特征;
所述多任务编码层采用多个独立的单层全连接层对多个指数特征进行抽取。
优选地,所述步骤s3中的任务协同注意力网络包括键网络和查询网络,二者都采用单层的全连接层形式;
将所述指数特征总和输入所述键网络,得到特征键;将所述指数特征总和输入所述查询网络,得到特征值,然后计算所述特征键与所述特征值的相似度,得到所述任务协同注意力矩阵。
优选地,所述步骤s4具体为:
将所述多个指数编码特征和所述任务协同注意力矩阵输入到指数相关性特征学习层,每个指数按照与其他指数的相似度,以加权形式融合其他指数特征,得到所述多指数相关性特征;
所述每个指数的输出特征包括自身属性、其他指数关联性较大的指数属性。
优选地,所述步骤s5具体为:
将所述多指数相关性特征输入到具有残差结构的残差全连接层,将所述多指数相关性特征通过独立的任务编码器得到任务相关性特征,再与所述多指数相关性特征进行拼接,获得具备所述任务相关性和所述多指数相关性的两种特征;
所述任务编码器采用单层全连接层形式。
优选地,所述步骤s6具体为:
将所述具备两种性质的特征输入到指数预测层,得到一个输出值,将所述输出值通过指数预测目标函数进行归一化处理,并将处理后的值与实际值进行对比;最后采用所有指数的隔天预测值的平均值对股市进行多指数风险预测。
优选地,所述指数预测目标函数采用sigmoid函数;
所述归一化处理后的值介于0到1之间。
优选地,所述多指数风险预测的方法是将所述多指数风险预测问题转化为预测涨跌的二分类问题,得到整个大盘的涨跌趋势。
本发明的有益效果在于:
(1)本发明根据a股市场主要指数的特点,使用多指数协同注意力机制,提取不同指数间的共性,保留各自指数的特性,同时采用多任务学习框架,对每个指数做各自的风险预测,有效地解决了传统技术中的“模型结构简单,依赖文本数据”的问题;
(2)本发明采用a股市场直接反映大盘走势的主要指数的特征作为模型输入,且在模型训练时分别预测各个主要指数的走势,很好地解决了传统技术中“预测结果未能反映大盘走势”的问题;
(3)通过利用本发明提出的方法,能够对整个大盘的走势进行智能化的涨跌预测,从而为投资者确定更好的买卖时机。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法框架图;
图2为本发明回测结果图;
图3为本发明按月划分的回测结果图;
图4为本发明按日划分的回测结果图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例1
参照图1所示,本发明提供一种基于多任务学习和多指数协同注意力机制的股市预测方法,具体包括如下步骤:
s1、采集股市指数数据的多指数特征,并对所述多指数特征进行标准化处理;
a股市场包括上证指数(sh)、深证成分指数(sz)、上证50指数(sh50)、沪深300指数(csi300)、中小板(zxb)和创业板(cyb)在内的多指数特征。
本发明采用指数数据均为日频交易数据,且获取渠道容易,不依赖股市新闻数据。为了避免极端值对模型训练造成干扰,指数数据的所述多指数特征作为输入数据进入网络前,都会经过标准化处理。
s2、将处理后的多指数特征输入到多任务编码层,得到多个指数编码特征;
数据处理完毕后,将处理后的多指数特征输入到多任务编码层,由于不同指数有不同的数据分布特点,本发明采用不同参数初始化的模型编码指数特征。在编码模型选择上,由于指数数据在时间维度上具有一定的关联性,而长短期记忆型循环神经网络(lstm)对于此类数据有较强的编码能力,因此本发明以长短期记忆型循环神经网络作为指数编码模型,并取lstm最后一个时间步的输出作为指数数据的编码特征。
s3、将多个指数编码特征进行拼接,得到指数特征总和;将指数特征总和输入到任务协同注意力网络中,得到任务协同注意力矩阵;
任务协同注意力网络:该网络由两部分组成:“键网络”和“查询网络”。
多任务编码层输出的所有指数编码特征通过拼接得到所有指数的特征总和。将特征总和作为“键网络”(knet)的输入,得到特征键;将特征总和作为“查询网络”(qnet)的输入,得到特征值。通过计算特征键与特征值的相似度,可以得到任务协同注意力矩阵,其中,每一行代表的是每个指数特征与其他指数特征之间的相似度。两个指数的相似度越高,说明在特征高维空间中越有关联度。由于指数编码特征具有较强的表示能力,因此“键网络”和“查询网络”并不需要复杂的网络结构。本发明采用单层的全连接层作为两个网络的实际实现形式。
s4、将多个指数编码特征和任务协同注意力矩阵输入到指数相关性特征学习层,得到多指数相关性特征;
在得到任务协同注意力网络输出的任务协同注意力矩阵和多任务编码层输出的编码特征后,每个指数按照与其他指数的相似度,以加权形式融合其他指数特征,最终得到多指数相关性特征。对于每个指数而言,输出的特征中不仅包含了自身属性,还包含了其他关联性较大的指数属性,从而能为后续任务提供更丰富的特征表示。
s5、将所述多个指数相关性特征输入到残差全连接层,得到具备两种性质的特征;
指数相关性特征学习得到的特征已建立了多指数的关联,但这些特征处于耦合状态,尚未建立和任务间的关联性。为了既保留特征的多指数相关性,又获得特征的任务相关性,本发明采用残差全连接层进一步提取特征。具体来说,每个指数的多指数相关性特征经过独立的任务编码器获得任务相关性特征,再与多指数相关性特征进行拼接,从而获得具备两种性质的特征。在实际中本发明采用单层全连接层作为任务编码器。
s6、将所述具备两种性质的特征输入到指数预测层,得到股市指数风险预测结果。
得到残差全连接层的输出特征后,便可以进行指数风险预测了。由于每个指数的数据涨跌分布、特征分布有明显区别,因此本发明将每个指数的风险预测当作一个任务,采用多任务学习框架进行多指数风险预测。每个指数任务的参数信息与其他指数任务独立,以便建模自身的特征分布。
风险预测问题可以转化为回归问题或分类问题。回归问题预测指数的具体涨跌值,分类问题则只预测指数是涨是跌。由于股市指数数据的噪声多、波动大,因此直接预测具体涨跌值容易使得模型过拟合。因此,本发明将多指数风险预测问题转化为预测涨跌的二分类问题。指数预测层对于每个数据会有一个输出值,该值会通过指数预测目标函数(sigmoid函数)归一化到0到1之间。处理后的预测值会与真实值进行对比,从而促使模型朝着逼近真实值的方向优化。
在实际使用中,获取到多日的多指数特征后,模型会对每个指数得到一个介于0到1的预测值。由于每个指数代表着对a股大盘的一种行情体现,因此本发明采用所有指数的隔天预测值的平均值作为当前a股大盘的走势预测,数值越大,代表模型认为隔天股市涨的可能性越大;反之,则代表模型认为隔天股市跌的可能性越大。
通过这套股市风险预测模型,便可以对a股市场的涨跌趋势进行预测,从而为投资时机提供更好的选择。
股市多指数风险预测模型训练完毕后,本发明在真实a股市场上进行实际验证,根据历史信息预测隔天市场是涨是跌。模型每日会对a股多个指数输出预测值,见表1:
表1
其中,第一列代表的是预测的日期,第二列到第七列分别代表着模型对不同指数预测为涨的概率,范围在0到1之间,预测值越高代表模型认为该交易日指数涨的概率越高,预测值越低代表模型认为该交易日的风险越高。
相比于单个指数单独训练,本发明提出的股市多指数风险预测模型采用了注意力机制和多任务学习框架对指数特征建立关联度。为了说明多指数联合训练相比于单模型训练的优势,本发明在上证50、深圳成指、沪深300和创业板指数分别单独训练指数风险模型,并与本发明提出的多指数模型同时对股市涨跌做出预测,得到的准确率结果对比见表2:
表2
其中,数值代表的是模型预测涨跌的准确率。可以看出,本发明提出的多指数模型在各个指数上相比于单指数模型都有明显的性能提升,证明了基于多任务学习和多指数协同注意力机制的股市风险预测模型的先进性。
为了进一步验证模型的性能,本发明在2020年2月至2020年6月进行回测实验,对比模型和大盘指数在同个时间段的收益率。由于该段时间内股市经历了多次涨跌,且在某些月份存在大跌现象,如果未能准确预测,会对收益造成严重亏损,因此对风险预测模型有显著的挑战性。回测的结果参照图2所示。图中横轴代表预测的交易日,纵轴代表的是指数的累计收益。在回测过程中,本发明采取的策略是:如果模型预测为涨,获得当天的收益(无论正负);如果模型预测为跌,则获得当前的反向收益。从图中可以看出,一方面,模型能够准确地避开大部分的股市大跌情况,从而保住收益;另一方面,模型能够在股市涨的时候及时跟上,从而提升收益。
为了细化模型的收益来源,本发明将上述回测区间按月划分,统计模型和大盘指数在每个月的累计收益。结果参照图3所示。图中横轴代表预测的交易日,纵轴代表收益率。从图中可以看出,模型在整个回测区间的收益率明显优于各个指数。在这之中,模型的超额收益来源主要是二月份、三月份、五月份和六月份。其中,二月份和五月份大盘整体震荡,三月份大盘整体下跌,而模型准确预测大盘趋势,及时止损,使得收益得以保留。而在六月份,模型选择和大盘的同向操作,尽可能的保留指数收益,取得和大盘相近甚至超过大盘的收益,这使得模型整年的累计收益超过大盘。
更进一步地,本发明将2020年2月到2020年6月的回测区间按日划分,并且统计模型在每个交易日的超额收益。超额收益为正,数据在横轴上方,反之在横轴下方。参照图4所示,从图中可以看出,模型在回测区间内大多数时间超额收益为正,且在各个指数上表现一致。
基于上述各实验的结果及分析,可以证明本发明提出的多指数风险预测模型在实际中具有十分优异的表现。
实施例2
1.输入数据:本发明采集了从2005年到2020年的a股指数数据(包括上证指数、深证成分指数、上证50指数、沪深300指数、中小板和创业板),并将2005年到2018年的数据作为训练集,2018年到2019年的数据作为验证集,2020年以后的数据作为测试集。模型输入为的多指数特征具体包括:
开盘点位:当日股市开盘时的股票指数点位;
收盘点位:当日股市收盘时的股票指数点位;
最高点位:当日股市盘中的股票指数最高点位;
最低点位:当日股市盘中的股票指数最低点位;
昨日收盘点:昨日股市的股票指数收盘点位;
涨跌点:当前点位和昨日收盘点位按差价计算出的百分比;
成交量:当日股市总交易数;
成交额:当日股市总交易额;
当日总市值:当日指数总股本数乘以当日股价得出的股票指数总价值;
当日流通市值:当日可交易的流通股股数乘以当日股价得出的流通股票指数总价值;
当日总股本:股份公司发行的全部股票所占的股份总数;
当日自由流通股本:股份公司已发行股本中在外流通没有被公司收回的部分,是指可以在二级市场流通的股份;
换手率:当日市场中股票转手买卖的频率;
换手率(基于自由流通股本):根据自由流通股本计算的换手率;
市盈率:股票指数价格除以每股盈利的比率;
市盈率ttm:截至当日的连续12个月的市盈率;
市净率:每股股价与每股净资产的比率;
输入特征预处理:获取到指数的特征后,由于不同指数,同个指数的不同特征间存在显著差异,因此需要经过标准化处理:
指数标准化特征=(指数原始特征–特征均值)/特征标准差
标注化处理后的特征在时间维度上按天划分,每21天的特征拼接在一起作为第22天的特征输入。
2.多指数风险预测模型
多任务编码层:该层采用长短期记忆型循环神经网络(lstm)作为编码模型。对于每个指数,lstm的层数为1层,神经元个数为32个激活函数为双曲正切函数(tanh函数)。lstm中不对神经元进行随机丢弃(dropout)操作,正则化函数为l2正则化函数。lstm最后一个时间步的输出作为下一个模型的输入。
任务协同注意力网络:该层中的键网络和查询网络均为单层全连接层,神经元个数为16个,激活函数为线性整流函数(rectifiedlinearunit,relu)。两个网络的输出会通过以下公式计算特征相似度:
特征相似度=(特征键×特征值)/特征维数的开方
将特征相似度在特征维度进行归一化,便可以得到多指数注意力矩阵。这里本发明采用的是归一化指数函数(softmax):
注意力矩阵=softmax(特征相似度)
多指数相关性特征学习:该层对任务协同注意力网络输出的指数注意力矩阵和多任务编码层输出的编码特征进行结合:
相关性特征=指数注意力矩阵×编码特征
残差全连接层:该层为32个神经元的单层全连接层,输入的特征和经过全连接层的特征进行相加,从而得到新的特征表示。
指数预测层:每个指数都有对应的预测函数,该函数为单层全连接层,输出为一个预测值,用于分类预测。
训练细节:模型采用adamw作为优化器,初始学习率为0.001,经过1000个迭代后降为0.005,再经过3000个迭代后降为0.0001。每个样本由前21个交易日的特征信息和第22个交易日的涨跌信息组成。模型每次输入32个样本的特征信息,通过将模型输出与对应的涨跌信息进行对比,即可利用优化器进行参数优化。
使用细节:在预测某个交易日的风险时,取出在此之前21个交易日的a股多个指数的特征作为输入,得到多个指数的风险预测后,对其做平均操作。最终的综合分数作为该交易日的风险值。综合分数越高,说明模型认为该交易日涨的概率越高,反之,说明风险越高。
本发明设计任务协同注意力网络建立多个指数间的关系,并采用多任务学习框架联合训练,从而使得模型获得多指数相关性和任务相关性特征,进而显著提升模型性能。该方法的输入为特征标准化后的a股市场多个指数的交易序列数据和量化指标数据,输出为多个指数的涨跌可能性,并基于此得到整个大盘的涨跌趋势。
综上,通过利用本发明提出的方法,能够对整个大盘的走势进行智能化的涨跌预测,从而为投资者确定更好的买卖时机;本发明根据a股市场主要指数的特点,使用多指数协同注意力机制,提取不同指数间的共性,保留各自指数的特性,同时采用多任务学习框架,对每个指数做各自的风险预测,有效地解决了目前类似技术中的“模型结构简单,依赖文本数据”的问题;本发明采用a股市场直接反映大盘走势的主要指数的特征作为模型输入,且在模型训练时分别预测各个主要指数的走势,很好地解决了目前类似技术中“预测结果未能反映大盘走势”的问题。
以上所述的实施例仅是对本发明的优选方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。