对股票、债券、期货等金融资产的趋势进行准确预测一直是金融领域极其重要,又极具挑战的工作。 预测的困难主要来源于两个方面:首先,金融领域预测的时间序列数据,往往具有高噪声和高维度等特征。 这些时间序列数据的特征高度依赖于时间变量长度,过短的时间序列,往往不能提取出有效的信息。 其次,预测模型较难选择。 传统计量模型依赖于人工设计特征,不仅主观性较高,而且模型信息较为单一,不能及时反映投资者情绪、心理预期、突发事件等高度复杂的信息。
近年来,随着大数据技术的发展和计算机性能的提升,人工智能的图像识别、自然语言处理等技术改变了一个又一个领域,其中也包括金融市场。 而在众多人工智能解决方案中,能够提取数据深层特征,过滤时间序列市场噪声的深度学习方法,成为目前金融市场中炙手可热的议题。 深度学习是机器学习算法的一种,是一种由多层隐藏层构成的深层神经网络。 目前应用最广泛的深度学习方法有深度置信神经网络(DBN)、循环神经网络(RNN)和长短期记忆神经网络(LSTM)三种。 一些学者对这些深度学习方法在金融市场预测、投资者情绪分析、投资策略改进等方面的应用进行了研究。Xiong et al.(2016)利用Google 国内趋势指数作为衡量投资者情绪和宏观经济因子的变量,建立了S&P500 的长短期记忆模型,结果表明基于深度学习的预测方法比传统计量回归模型精度高出至少31%。 Ding et al.(2015)构建了结合张量神经网络和深度卷积神经网络的事件驱动型股票预测模型,该模型将新闻中的文本信息转换为神经网络输入向量,用以预测事件对股票价格的短期和长期影响。 基于S&P500 和个股的实证结果表明,相较于普通BP 神经网络,该模型的预测精度提高了6%。 曾志平等(2017)将难以线性化的复杂时序数据转换为上升、下降和无规则的三种非结构化曲线,并将此作为深度置信神经网络(DBN)的输入向量,以此来预测沪深股市所有股票的收盘价格。 实证结果表明,该模型在2000年至2014年间的决策正确率高达90.54%。
在金融市场的预测研究中,股票价格的波动一直是学者们研究的热点问题。波动率在资产分配、定价以及VaR 等风险管理指标的计算中起着核心作用,其预测结果对投资组合的构建也起到至关重要的作用。 国内外学者对波动率预测模型进行了大量实验研究,早期对波动率模型的研究由于条件的限制,仅能对低频波动率进行计算,如Engle(1982)提出的ARCH 模型和Bollerslev(1986)提出改进的GARCH 模型,都对金融波动的长记忆性进行了很好地刻画。 近年来,高频数据的可获得性改变了金融波动率的研究方法。 魏宇和余怒涛(2007)全面探讨了各类历史波动率模型和实现波动率的构建方法,选取上证综指高频数据,计算了不同模型下指定波动率的预测值。 结果表明,基于ARFIMA 的随机波动模型和实现波动率模型预测精度最高。 罗嘉雯和陈浪南(2018)将时变稀疏模型以及多元HAR 模型结合起来构建TVS-MHAR 模型,数据选取沪深300 期货、上证综指和国债期货的5 分钟高频数据,对已实现波动率进行预测,发现TVS-MHAR 模型的短期、中期以及长期预测精度均最高,投资改善效果最好;TVS-MHAR 模型比固定参数模型预测效果更好,高频数据比低频数据预测能够获得更大的投资改善。
目前,基于计量模型的波动率研究日趋完善,但是将深度学习方法运用到波动率预测的研究尚少,且波动率预测的应用多集中在期货市场,现货市场的应用研究尚存在空白。 综上所述,本文在以往学者的研究基础上,将深度学习方法应用于金融市场预测,提出一种预测股指高频波动率的新思路。 深度学习的模型选择拟合长记忆性时间序列效果最好的长短期记忆模型,即LSTM 模型。 LSTM 模型相较于RNN、DBN 等其他深度学习模型的优势在于它可以通过一种类似于“门”的结构,选择性地对数据进行记忆或者遗忘,因此对具有长记忆特征的时序数据拟合效果最好。 当前的高频波动率预测模型多是针对波动率序列直接建立模型,但是本文借鉴王春峰等(2003)和黄后川和陈浪南(2003)等学者针对中国股市长记忆性检验的研究发现,股指价格序列的长记忆性比波动率的长记忆性更显著,因此也更适合作为LSTM 模型的训练样本。 此外股指价格序列频率更高,数据样本更大,信息损失更少,更有利于LSTM 模型的特征提取。
本文的创新之处在于:第一,首次使用深度学习的LSTM 模型,以长记忆性的股指价格序列为切入点,计算股指波动率的预测值,对比发现,该方法的预测精度比对波动率序列建模的LSTM 以及ARFIMA 等模型精度更高,为深度学习在波动率的预测上提供了新思路;第二,首次将深度学习方法预测的波动率应用于趋势择时策略,与传统趋势择时方法相比,通过波动率设定的动态阈值能够显著控制投资的回撤风险。
循环神经网络(RNN)是目前应用于时间序列预测最为广泛的深度学习方法。 由于前向BP 神经网络模型等神经元信号只能单向流动,当被处理数据为时间序列数据时,其损失重要时间序列信息的缺点就显现出来了。 所以RNN 网络在各个隐藏单元之间引入了权连接,使得该时点隐藏层能够接收上一时刻隐藏层的输出,即实现了动态时序行为在神经网络各单元内部状态的转换。
由于传统RNN 神经网络的隐藏层权重大小会对网络的学习训练产生至关重要的影响,如果权重过小会导致“梯度消失”;如果权重过大则会导致“梯度爆炸”,以至于无法收敛,即标准的RNN 结构难以传递相隔较远的信息,因此对于长期依赖问题,RNN 网络明显并不适用。 为了处理存在长期依赖问题的数据,本文引入了由Graves 改进提出的长短期记忆(LSTM)模型。 LSTM 是一种特殊的循环神经网络(RNN),解决了传统RNN 的长期依赖问题。该模型的具体结构如图1所示。
图1 LSTM 模型结构图
LSTM 解决长期依赖问题的原因是它在RNN 的基础上增加了一个判断数据保留还是遗忘的结构,这个结构被称为细胞。 细胞通过三扇类似于“门”的结构实现数据的保留与遗忘,这三种“门”分别为输入门、遗忘门和输出门。所谓的“门”就是一个sigmoid 激活函数和一个元素级相乘的计算,sigmoid 层输出0~1 的值,0 值表示不允许信息通过,1 值表示让所有信息通过。“门”结构可以使LSTM 网络筛选出复杂时间序列中的有效信息并传递给下一时刻,同时通过遗忘门遗忘掉冗余的信息。
1.遗忘门
遗忘门的作用是让网络忘掉过去没有用的信息。 它通过当前的输入xt 和上一时刻输出ht-1 计算出一个维度为n 的向量,通过sigmoid 函数计算出一个取值范围为(0,1)的向量ft。 在各个维度的数据中,ft 取值趋近于0 的会被遗忘,趋近于1 的会被保留。 遗忘门的计算公式为:
其中,Wf 是各个变量的权重,bf 是截距项,σ 是sigmoid 函数。
2.输入门
输入门的作用是为当前输入补充新的信息。 输入门的计算分成三个步骤,首先输入门sigmoid 函数根据当前的输入xt 和上一时刻输出ht-1 计算保留的信息it;然后通过tanh 函数计算该时刻输入值,并将输入门it 和输入值˜C t 相乘,形成新的向量,加入细胞中;最后输入门将旧的细胞状态乘上遗忘门ft,遗忘部分旧的信息,加上新的输入信息,形成新的细胞状态。 输入门的计算公式为:
其中,it 介于0~1,tanh 为正切激励函数,Ct-1 表示(t-1)时刻的细胞状态值,˜C t表示从t 时刻输入信息中提取出来的要记录的信息,Ct 表示经过更新的细胞状态值。
3.输出门
输出门的作用是根据更新的细胞状态Ct 形成当前时刻的输出。 输出门和输入门的计算方式相同,根据ht-1 和xt 由sigmoid 函数产生。输出值使用tanh 函数处理Ct,最后ot 和tanh (Ct)相乘得到t 时刻的输出结果。 输出门的计算公式如下:
Andersen and Bollerslev(1998)、Andersen and Meddahi(2005)的研究表明,基于日内高频数据的已实现波动率可以有效降低波动率估计过程中的误差和噪音。 因此本文选择学术界目前普遍采用的方法,用已实现波动率作为真实波动率的代理变量。 根据Andersen and Bollerslev(1998)对真实波动率的定义,真实波动率可以表示为第t 天内高频收益率的平方和,具体计算过程如下:
第t 天的日收益率表示为:
第t 天5 分钟高频收益率表示为:
第t 天的已实现波动率表示为:
之后,Hansen and Lunde(2005)的研究又指出,由于股票市场不是24 小时连续交易,因此真实波动率没有反映出非交易时间段的信息,所以本文参照两位学者的方法,采用某种尺度参数λ0(scale parameter)对已实现波动率进行调整,确定最终的波动率计算方式为:
其中,尺度参数λ0 的计算方式为:
借鉴唐勇(2012)等学者的研究,5 分钟高频数据可以很好地对波动率进行估计,故本文选取2016年1月5日至2018年11月30日的沪深300 指数收盘价的5 分钟高频数据,共709 个交易日,每个交易日可产生高频收盘价48 个,样本总量为34032个。 数据来源于Wind 数据库。 收盘价格序列记为Pt,d,t=1,2,3,…,709,d=0,1,2,…,48。Pt,0 表示第t日沪深300 开盘价,其余Pt,d 表示第t日的第d 个5 分钟收盘价。
沪深300 指数5 分钟高频收盘价格序列如图2所示。从图2中可以看出价格序列是非平稳时间序列,不能采用Garch 族、HAR 族等传统波动率模型。 进一步对价格序列和真实波动率序列进行统计性检验,结果如表1所示。由表1可以看出,收盘价序列不服从正态分布,表现出显著的“有偏”和“尖峰”,ADF 检验结果(-1.29>-3.43)表明存在单位根,是一个非平稳时间序列。 进一步利用R/S 分析方法对价格序列和波动率序列进行长记忆性检验,价格数列的Hurst 指数为0.99,波动率序列的Hurst 指数为0.88,均大于0.5 小于1,具有长记忆性,但是价格序列的Hurst 指数更高,长记忆性更显著。
表1 价格序列和真实波动率序列的统计性检验
注:峰态为超额峰态。
图2 沪深300 收盘价格序列
在获取上述价格时间序列的基础上,本文将使用多层LSTM 网络对收盘价格进行预测,选取前80%的数据作为训练集,后20%的数据作为验证集进行交叉检验,以t 时刻的高频收盘价作为训练的输入t+Timetep 时刻的高频收盘价作为标签。 LSTM网络基于Google 公司开发的Tensorflow 平台搭建。 优化算法使用Diederik and Jimmy 在2014年提出的Adam 优化算法,该算法能够自动调整学习率,是目前优化性能最优秀的机器学习算法之一。损失函数采用TensorFlow 自带的tf.reduce_mean 函数计算损失平均值。
神经网络结构和参数的设定对于模型的预测能力至关重要,但目前学术界并没有一致认可的参数选择方法,多以试验法为主。 LSTM 深度神经网络相对于传统神经网络而言,训练速度慢且参数众多,仅使用试验法难以确定众多参数,故本文在试验的基础上,结合已有学者的研究成果,按照如下方法选择参数,以消除神经网络参数对实证结果的影响。
1.时间步(timestep)
时间步即用过去多长的数据对下一时刻进行预测。 陈卫华(2018)对LSTM 时间步的敏感性分析表明,LSTM 的预测效果受时间步的影响较小。考虑到每天可产生48个高频价格,所以本文的timestep 确定为48。
2.隐藏层数(hiddenlayer)
隐藏层数过低会降低模型的预测能力,过高则会增加训练难度,甚至造成“过拟合”问题。根据Karpathy(2005)的研究,一般的LSTM 模型将隐藏层设定为3 层即可。因此本文最终的LSTM 网络由输入层、三层LSTM 层、输出层组成,其中,输入、输出层均采取全连接的方式。
3.隐层神经元个数(hiddensize)
即每层LSTM 神经元的个数,本文在传统神经网络经验公式m=+a(m是隐藏层节点数,n 是输入层节点数,l 为输出层节点数,a 是1~10 的常数) 的基础上,将隐藏层神经元个数从5 到40 每隔5 进行试验,得到损失函数与隐层神经元关系如图3所示,当隐藏层神经元个数为20 时,损失函数最小,因此将LSTM 网络的隐层神经元设定为20。
图3 隐层神经元个数与损失函数关系
4.训练批次(batch)
batch 是一次传递给网络的数据批次,batch 过小会使训练十分缓慢,难以收敛;batch 过大会降低模型准确度。 batch 的大小一般在16~128,将训练批次大小依次设定为8,16,24,32,64,128,得到训练批次与损失函数的关系如图4所示。当训练批次为128 时,损失函数最小,因此将LSTM 模型的训练批次设定为128。
图4 训练批次与损失函数关系
5.学习率(learningrate)
学习率是LSTM 网络最重要的参数之一。 学习率过小会使网络权重更新较慢;学习率过高则会在梯度下降过程中跳过局部最优点,影响预测精度。 本文在确定了最优LSTM 网络结构和训练批次的基础上,将学习率依次设定为0.0006,0.001,0.003,0.006,0.009,0.03,得到学习率与损失函数关系如图5所示。 根据图像确定适合本模型的学习率为0.006。
图5 学习率与损失函数关系
6.迭代次数(epoch)
一个epoch 周期表示完整地把所有数据遍历一次。 较小的epoch 会使神经网络没有足够的时间进行学习导致“欠拟合”;较大的epcoh 则会降低训练效率或导致“过拟合”问题。图6为损失函数关于epoch 的变化曲线,从图中可以观察到,损失函数在epoch=900 之后不再具有下降趋势,所以将最佳epoch 设定为900。
图6 迭代次数与损失函数关系
7.正则化(regularization)
本文采用Srivastava et al.(2014) 提出的Dropout 方法解决过拟合问题,将Dropout 率设定为0.5。
图7 真实波动率预测值比较
根据Hansen and Lunde(2005)的真实波动率计算公式:
计算出的真实波动率预测值与实际值的图像如图7所示。
从上面的实证结果我们可以看出,先通过LSTM 模型预测收盘价格进而计算出的波动率较好地反映了波动率的真实值。 但仅通过LSTM 模型自身的损失函数不足以准确衡量出波动率的预测效果。 鉴于此,本文参考魏宇等(2015)和陈卫华(2018)的研究成果,选择了目前高频波动率预测效果优异的ARFIMA 模型、直接对波动率建模的LSTM 模型和LSTM-ARFIMA 混合模型作为对比。 其中,ARFIMA 模型的p、d、q 参数使用前80%的训练数据进行估计,然后对其余20%的验证数据进行样本外预测;直接对波动率建模的LSTM 模型记为LSTM(RV)模型,超参数设定方法同上节所述;LSTM-ARFIMA 混合模型先使用ARFIMA 模型对已实现波动率线性部分进行拟合,提取残差作为LSTM 模型的输入,之后将残差预测结果和ARFIMA 的线性预测结果相加得到最终波动率的预测值。
有了上述3 个对比模型之后,需要确定衡量预测偏差的损失函数。 但是目前学术界没有公认的衡量预测偏差最合理的损失函数,所以本文根据Hansen and Lunde(2005)的建议,尽可能多地选择衡量偏差的损失函数,最终确定了均方误差(L1)、均方根误差(L2)、平均绝对误差(L3)、经异方差调整的均方误差(L4)、平均绝对百分比误差(L5)等7 种不同的损失函数,具体计算公式如下:
表2 预测性能比较
图8 模型预测精度比较
表2是四种模型不同损失函数的计算结果,从中可以看出基于收盘价格序列建模的LSTM(Price)模型在所有损失函数中都明显优于其他三个模型,在7 种损失函数中排名均为第一,对比基于已实现波动率建模的LSTM(Rv)模型,该模型充分利用了高频价格序列的记忆性,特征提取能力更强,预测效果更稳健,充分发挥了LSTM模型在长记忆时间序列预测上的能力。 四种模型的拟合情况如图8所示。 基于已实现波动率建模的LSTM(Rv)模型预测性能最差,不及ARFIMA 及LSTM+ARFIMA 混合模型,主要原因在于将已实现波动率Rv 作为LSTM 网络的输入时,数据记忆性不强,难以对其进行特征提取,且数据量较小,容易导致过拟合问题,影响样本外的预测能力。
目前,基于波动率的应用研究大多集中于期货市场,通过Black-Scholes 期权定价公式反推出隐含波动率,通过隐含波动率的大小判断期权是否被高估或低估,进而实现期权套利。 在应用深度学习方法改进已实现波动率预测精度的基础上,进一步将预测的未来已实现波动率应用在沪深300 指数的趋势择时策略中,寻找买入与卖出的信号,研究已实现波动率在择时策略中的适用性。
本文构建的策略为单均线的趋势择时策略,窗口期为2018年7月1日至2019年2月28日,选择这一时期的主要原因在于该段时期包含了沪深300 指数一个局部的下跌及上升周期,更能反映趋势择时策略在不同形势下的收益表现。 指数复制方式为购买嘉实沪深300ETF 基金,追踪误差0.03%,申购费率假定为0.15%,赎回会费率假定为1.5%,收益率回测在优矿量化投资平台进行。 具体策略规则如下:
规则1:选取沪深300 指数的5日均线MA(5)作为择时基础。
规则2:用隐含波动率计算的收益率标准差s 代替历史收益率标准差作为阈值。计算公式参考John(1987)关于波动率与收益率标准差的公式:
其中,s 代表收益率的方差;Rv 代表预测的已实现波动率;μi 代表观测期内的收益率;n 代表观测期,本文以每5 分钟的高频波动率推算收益率日标准差,故n 取48。
规则3:当沪深300 价格突破5日均线即P>(1+s)*MA(5)时买入;反之,跌破时平仓。
为了衡量该策略的收益,选择简单5日均线策略作为对照。 沪深300 指数、设置波动率阈值的5日均线和普通5日均线的走势如图9所示。
图9为两种均线择时策略的走势图。 在2018年7月1日至2019年1月3日的下行周期里,两种均线策略均触发交易14 次,其中,基于波动率改进的均线策略判断正确率42.8%,一般5日均线策略判断正确率21.4%,虽受大盘下行周期影响,两组策略收益均为负,但波动率改进的策略收益依旧高于一般均线策略,且最大回撤1.24%小于一般均线的3.1%。
图9 沪深300 及均线走势图
在2019年1月3日至2019年2月28日的上行周期里,基于波动率改进的均线策略触发交易6 次,判断正确率100%。 简单5日均线策略触发交易4 次,判断正确率100%。 在上行周期中波动率改进的均线策略收益率小于一般均线策略,但最大回撤依旧具有优势。 由此我们可以得出结论,基于预测已实现波动率改进的均线策略虽在收益上不具有明显优势,但得益于动态调整的阈值规则,无论在上行还是下行周期,风险控制能力更强,稳健性更好,为趋势投资的风险管理提供了新的思路。
表3 策略绩效指标
本文提出的基于长短期记忆神经网络(LSTM)的股票市场波动率预测方法,将国内高频股票市场指数收盘价作为输入值,通过多层LSTM 网络对其进行非线性预测,将其预测结果作为计算波动率预测值的基础,充分利用了收盘价格的时序性和强记忆性。
通过对沪深300 指数波动率的实证研究可知,相比于直接针对已实现波动率建模的长短期记忆模型和传统计量经济学模型,本文模型在价格序列具有高频和长记忆性的特征下,通过LSTM 模型对价格序列进行预测,进而计算出沪深300 指数的真实波动率,显著降低了预测的误差。 本文的实证结果还表明,基于深度学习模型的波动率预测方法,虽然具有其独特的优势,但也并不一定总是优于ARFIMA 等计量经济学模型,深度学习模型的预测效果也会受到数据频率、数据特征等多方面的影响,其自身也面临“欠拟合”、“过拟合”等诸多问题。 针对复杂的金融市场预测问题,需要具体结合数据的特征,考虑模型的适用性。 策略研究的分析表明,基于深度学习预测波动率的趋势择时策略能够很好地控制收益率回撤风险,进一步证明了深度学习在金融预测领域的适用性。
本文的研究为深度学习在波动率预测问题上提供了一种新的思路,输入数据的长记忆特征对LSTM 的预测能力至关重要。 虽然深度学习的方法改变了传统计量经济学模型的范式,弱化了解释变量的显著性,但未来仍需要进一步研究深度学习对于金融理论的经济学解释,寻找深度学习与金融理论结合的一般框架。
© 2019-2021 All rights reserved. 北京转创国际管理咨询有限公司 京ICP备19055770号-1
Beijing TransVenture International Management Consulting Co., Ltd.
地址:梅州市丰顺县留隍镇新兴路881号
北京市大兴区新源大街25号院恒大未来城7号楼1102室
北京市海淀区西禅寺(华北项目部)
深圳市南山区高新科技园南区R2-B栋4楼12室
深圳市福田区华能大厦
佛山顺德区北滘工业大道云创空间
汕头市龙湖区泰星路9号壹品湾三区
长沙市芙蓉区韶山北路139号文化大厦
欢迎来到本网站,请问有什么可以帮您?
稍后再说 现在咨询