一种基于深度学习的短期股票波动率预测方法
2020-07-17张涵
摘 要:随着改革开放,经济高速发展的过程,我国的金融市场从无到有,再到如今的蓬勃发展,为市场经济发展注入了无数活力与生机。然而,伴随着收获与发展,风险与挑战也将一并存在,1997年的东南亚金融危机,2008年的次贷危机,2010年的欧债危机都在提醒着警惕金融危机,重视金融风险管理的重要性。RNN和LSTM网络作为一种表现良好的时序分析模型,已经被广泛运用于股票信息预测,但在波动率预测方面还鲜有尝试。本文先介绍了金融风险管理的基本概念,回顾了常见的波动率预测方法,然后尝试了基于RNN和LSTM网络的波动率预测方法,并在沪深300指数上进行测试。
关键词:金融风险管理,波动率,深度学习,RNN,LSTM
金融行业作为现代市场经济的核心,能够促进各行各业的高速发展,拉动国民经济,将资本资源高效分配,但是同时,其風险危害也是远超其他行业。由于与各行各业联系紧密,加上自身的虚拟性等因素,金融风险往往会扩散到各行各业,并造成严重后果,以致引发金融危机,危害程度远超其他风险,不仅会危害金融秩序,也会严重影响实体行业,甚至造成社会动荡。因此,研究金融风险并对此科学管理,不仅是金融行业的重中之重,也是政府与各行各业应该关注的问题。
从20世纪80年代初开始,随着一些银行机构由于债务危机而开始倒闭,金融行业开始重视对信用风险的防范与管理。1988年,为了应对更复杂多变的风险管理形势,由巴塞尔委员会制定的在全球范围内主要的银行资本和风险监管标准:《巴塞尔协议》应运而生。到了20世纪90年代以后,随着金融衍生产品的大量推出以及交易量的高速增长,金融风险日益加强,一些国际银行开始指定自己的风险模型,来弥补《巴塞尔协议》的不足,如摩根银行的VaR方法,信孚银行的“风险调整的资本收益率”系统等。目前评估金融市场风险最主流的方法就是VaR方法,而在VaR方法中计算和预测市场的波动率是至关重要的一环。随着大数据时代的来临,金融数据呈海量增长,传统经济学模型的精细程度已经无法匹配如今数据的复杂程度,传统的方法已无法对金融市场波动率做出较为准确的预测。随着计算能力和算法的迅速发展,数据驱动的深度学习方法展现出了强大的非线性拟合能力和泛化能力,为金融经济研究,特别是金融市场的风险研究带来了更多的可能,采用深度学习方法不仅能取得良好的效果,而且能大幅减少重复劳动和人力成本。因此有理由相信,随着计算机技术和人工智能的不断发展,金融市场的发展必将在科技的助力下开启全新的篇章。
一、波动率研究综述
波动率是金融资产价格的波动程度,是对资产收益不确定性的衡量,用于反映金融资产的风险水平。经过多年的研究发展,现在已经有多种较为成熟的波动率预测方法。最知名的波动率预测方法是Engle于1982年提出的ARCH族模型,之后由Taylor提出了SV模型,这两种模型是之后大多数波动率预测模型的基础。Bollerslev对ARCH模型进行改进,加入了条件异方差的移动平均项,提出了GARCH模型。Engle,Lilien和Robbins引入了条件标准方程,提出了GARCH-M模型。Nelson提出了指数GARCH模型。近几年,国内学者开始向GARCH模型之外的方法探索,2012年,杨科,陈南浪应用了基于幂转换以及不设定扰动项的具体相关结构和分布形式所构造的半参数短期预测模型,张珍将隐式马尔可夫模型运用到波动率预测。传统的基于GARCH波动率预测方法已经十分成熟,然而由于股市是一个十分复杂的非线性系统,受很多不稳定因素的影响,加上随着金融市场的不断复杂导致的数据量高速增长,使得传统的方法已经不能满足要求。随着大数据时代的来临,数据驱动的深度学习方法体现出强大的非线性拟合能力和泛化能力,在许多领域都表现出强于传统方法的效果,在波动率预测上也不例外。本文在查阅一些基于深度学习的波动率预测方法的基础上,提出了一种基于RNN和LSTM模型对短期内股市波动率进行预测的方法。
二、RNN与LSTM网络模型概述
近年来,深度学习神经网络在图像处理,自然语言处理,推荐算法等方面取得了突出成效,在很多领域都得到了超出传统方法的效果。然而对于时序信息,传统的神经网络并不适用。对于传统神经网络而言,每次的输出结果只依赖于当前的输入,与之前时刻的输入没有任何关系,与输入序列的顺序也没有关系。这是因为传统的神经网络并没有实现“记忆”的功能,无法理解“时间序列”的概念。针对时间序列信息,有一种专门设计的神经网络,称为循环神经网络(RNN),而现在使用的一般是其改进形式:长短期记忆网络(LSTM),下面先对网络的基本结构进行介绍。
(一)RNN基本结构
RNN的结构与传统的神经网络不同,可以理解为一个传统神经网络在时间方向上的多次复制。它的隐藏单元之间按时序方向进行连接,使得上一时刻的信息得以传到下一时刻,以实现“记忆”功能
根据图表1可以看出,一个RNN的输入包括两个值,一个是当前时刻的输入值xt,用于实时更新状态,一个是上一时刻的隐藏层状态ht,用于维持记忆信息。而在不同时刻的网络共用一套参数。与传统神经网络的结构对比,可以很容易地看出,RNN的改进之处就在于添加了一个隐藏层之间的相互连接关系,使得上一时刻的隐藏信息得以保存,以实现记忆能力。普通的神经网络在优化过程中使用反向传播算法,根据链式法则传播梯度。而RNN在优化中使用带时序的反向传播,称作BPFT,其与普通的反向传播区别在于损失函数的值不仅取决于当前时刻的输出,还依赖于下一时刻。这导致了在更新参数时,当前时刻的梯度会一直传导到之前的每个时刻,带来梯度爆炸和消失的问题。除此之外,RNN的记忆不具有长期性,之前时刻的状态在前向传播过程中会逐渐消失,慢慢地就失去了该“记忆”。针对这些问题,LSTM网络被提出。
(二)LSTM基本结构
为了解决上面RNN存在的问题,长短期记忆网络(Long short-term memory)被提出。它与RNN的最主要的区别在于多了一个记忆单元(memory cell)。这个记忆单元有专门的开关来控制记忆信息的更新,以此来实现时序方向上记忆单元的逐渐更新。
相比于RNN直接将隐藏层状态作为记忆值传给下一时刻,LSTM的记忆单元要复杂许多。如图表2所示,LSTM的记忆单元有三道闸门,分别是Input Gate, Forget Gate和Output Gate。当Input Gate打開时,外界信息才能传入记忆单元,Forget Gate用来控制是否忘记上一时刻的记忆状态,Output Gate控制是否将记忆状态输出。由此可以发现LSTM的一个记忆单元需要四个输入来控制,故参数量也比一般的RNN高四倍。这三个闸门的开关状态是模型的参数,即通过训练得到。
将许多这样的记忆单元按照神经网络的方式进行连接就得到了完整的LSTM,通过三个闸门,就可以完成对长期记忆的保存,让模型自己训练出记忆的长短。需要注意的是,LSTM不仅将样本xt作为模型的输入值,还将上一时刻的记忆状态ct-1和隐藏层的输出ht-1都作为这一时刻的输入值,以保证充足的信息量。如图表3所示,与RNN进行对比可以看出他们的基本思想是一致的,但是在具体结构上LSTM有很多改进。
三、基于沪深300指数的模型实证
(一)数据预处理
本文使用从2013年1月4日到2017年12月29日沪深300指数数据,数据格式为xlsx文件,其中第一列为日期,第二列为开盘价,第三列为收盘价,第四列为最高价,第五列为最低价,第六列为净值,第七列为交易量。计算波动率的公式有很多,这里选择较为简单的方式,设ct为当前t日的收盘价,定义波动率vol=abs(■)。其中abs()代表绝对值。共得到1214天的波动率数据,如图表4所示。
(二)模型超参数与训练过程
取1090天的波动率作为训练集。将每两天的波动率作为一组样本,下一天的波动率作为标签,即在t日,以volt-1和volt作为一组训练样本,以volt+1作为标签值进行训练。
网络结构上采用2层4个隐藏单元的RNN和LSTM网络,后接一个全连接层以匹配输出维度。模型输入格式为(seq,batch_size,feature_size),其中seq代表单个序列的长度,batch_size代表一次喂入的序列个数,feature_size代表特征维度,输入的数据格式为(trainsize,1,2),即将所有数据当作一个序列输入,不分batch,每个数据有两个特征值。模型的输出为(seq,batch_size,100),这个100就对应着多分类的类别数,每一位的数值对应着属于该类别的概率。由于直接采用连续值进行训练的效果不佳,将标签值进行离散化,等分成100分,将问题转化成一个多分类问题,并使用交叉熵损失函数。使用Adam和LBFGS作为优化器,分别训练2000轮和100轮,学习率设为1e-03,Adam的step size为2000,lr_scheduler的gamma为0.7。运行配置为Windows10, Python3, Pytorch, intel CORE i7 ,未使用GPU。
(三)训练与预测结果
选用2017年12月15日至29日的共11天数据作为测试集,预测效果如图所示。由于预测波动率的目的是想判断股市风险大小,需要关注的是波动率的变化趋势而不是绝对数值,最后得到的预测结果均显著大于真实值,故将所有预测值向下平移0.02,保持变化趋势不变,以便于在图表中更加直观。如图表6所示是RNN的预测效果,可以发现预测值的整体趋势与真实值非常接近,拟合出了1-2-3,4-5-6,8-9-10这几个真实值里的波峰波谷,但是整体存在偏移的现象。如真实值中5-6时间段中的下降在预测值中直到6-7时间段才出现,真实值中8-9时间段中的上升在预测值中7-8时间段就出现了。接下来使用LSTM进行训练和预测,效果如图图表7所示,可以发现LSTM的效果反而比RNN的差,仅拟合出了真实值中3-4-5这一个波谷,并且整体的趋势也没有很符合真实值的情况。LSTM相对于RNN的改进之处在于增加了长期记忆功能,我认为这可能是因为股市的短期波动比较剧烈,无法体现长期记忆,故只考虑短期记忆的RNN效果更好。
结束语:
本文提出了一种使用深度学习方法对股票波动率的预测策略,并使用沪深300指数进行实证。结果表明RNN能够较好地预测出一段时间内的股市波动率变化情况,并且效果好于LSTM。在实际中可以使用该方法预测一段时间内股市的波动率变化情况,为金融市场的风险管理提供参考意见。由于股市是一个非常复杂与不稳定的系统,对其进行长期准确的预测是极其困难的,上述模型能对未来一段时间内的波动率变化趋势做出较为准确的预测,证明了其是一个行之有效的方法。
参考文献:
[1]席悦欣,卢万青.深度学习在金融风险管理领域的应用[J].合作经济与科技,2018(16):79-81.
[2]于水玲.基于深度学习的金融市场波动率预测和风险值计算[D].长春理工大学,2018.
[3]李卓.基于深度学习的VaR测算研究[D].兰州财经大学,2017.
[4]于振,丁冰冰,刘永健.深度学习在农村金融行业风险管理中的应用研究[J].科技资讯,2017,15(15):248-249.
[5]陈之星.基于隐马尔科夫模型的沪深300市场波动结构突变研究[D].成都理工大学,2015.
作者简介:张涵(1999-),男,江西省抚州市人,湖北省武汉市武汉大学信息与计算科学专业,本科。