APP下载

基于多输入多输出深度学习模型的期货价格预测

2022-03-08李英超

上海管理科学 2022年1期
关键词:收盘价价格预测

林 杰 李英超

(同济大学经济与管理学院,上海 200092)

期货市场是资本市场的重要分支,有着套期保值、发现价格等功能。期货分为商品期货和金融期货,其中商品期货的标的一般是大宗商品,比如农产品、化工产品、有色金属等。期货价格的预测研究,对于金融市场和商品市场都有着重要的意义。

对于期货价格可预测性的争论,可以追溯到金融领域的两个基本理论:有效市场理论和行为金融理论。有效市场理论认为,市场中的交易者是理性的,证券价格变化起因于市场上的新消息,并且新消息一出现就立刻被市场消化。由此,股市上的历史数据是无用的,自然也不能通过历史预测未来。行为金融学的观点与之相反,它认为市场中交易者是非理性的,并且是系统性地非理性,即总是在特定的环境下,产生特定的偏差。前景理论指出人们面对收益时厌恶风险,面对损失时却偏好风险。行为金融学间接肯定了“历史将会重现”,这是技术分析的哲学基础,也是价格可预测性的理论背书。

价格预测相关的实证研究,可以分为两类:价格影响因素研究和价格预测研究。

商品期货兼具金融属性和商品属性,其价格的影响因素既包括金融环境因素,也包括商品供需因素。对于金融市场上的影响因素,Melichar等使用SVAR模型,分析了原油市场的冲击对农产品价格的影响,发现石油的需求方显著影响各类农产品的价格,但在供给方向上影响较小。Fernandez-Diaz等利用DCC-GARCH模型研究了农产品与原油价格、宏观经济变量和标普指数之间的关系,文章指出,玉米的金融化与原油价格间存在一定的联动性,标普指数对其联动性的影响较大。对于商品市场上的影响因素,李京栋等选取了大庆原油价格、化肥和农机费用、气温月数据等变量构建VAR模型,分析其对大蒜价格变动的动态影响。结果证明,货币因素、成本因素、气候因素对大蒜价格都具有显著的影响。Radha等通过ECM模型探究了农产品的现货与期货之间的关系,发现现货价格与近月期货合约价格间存在协整关系。可以看出,相关性研究的研究范式如下:首先使用计量模型拟合数据,进而进行变量间的相关关系解释。

计量模型也可以用于价格预测的研究,但是随着技术发展,机器学习模型逐渐成为价格预测领域的主流方法。传统的机器学习方法,如人工神经网络、SVM等模型,适合处理结构化数据,在早期价格预测文献中被广泛使用。对于非结构化的高维数据, 以CNN、 LSTM为代表的深度学习模型是首选建模方法。LSTM适合处理时间序列,最早由Hochreiter和Schmidhuber提出,而后Schmidhuber的学生Alex Graves等将双向LSTM应用于语音识别,并取得了优于隐马尔可夫模型的分类效果;CNN适合处理图像分类,2012年Alex Krizhevsky等人使用深层的CNN赢得了当年的ImageNet视觉识别比赛,并大幅度减低了分类误差。此后,CNN和RNN模型受到了学者的广泛关注,其在价格预测领域也逐渐受到重视。林杰和龚正采用BP神经网络和卷积神经网络(CNN)对沪锌期货价格涨跌进行预测,两个模型都有不错的预测准确度。胡聿文提出一种基于PCA和LASSO的LSTM神经网络股票价格预测模型,经过对比发现,PCA-LSTM模型能够大幅削减数据冗余,并且获得了更优异的预测精度。景楠等提出了一种CNN-LSTM混合网络,并在 LSTM端引入注意力机制进行优化,相比于CNN、LSTM、CNN-LSTM等基准模型,该改进模型显著提高了预测准确度。有些学者也尝试了将深度学习模型与其他模型结合使用。Jin等在股票预测中考虑了投资者情绪因素,并通过EMD模态分解后用LSTM对价格进行预测,提高了预测精度,降低了时延。Kim等将LSTM与GARCH模型进行结合,对股票波动性进行预测,同样提高了预测准确度。

价格影响因素研究和价格预测研究应该是紧密的递进关系。然而在以往的文献中,学者常割裂地看待二者,要么只是研究变量之间的相关关系,要么只是做价格预测而对变量的相关性不加任何证明。对此,本文提出改进,将价格影响因素研究作为价格预测的前置研究:在影响因素研究部分采用计量回归的研究范式,进行回归拟合和相关性分析;在价格预测研究部分采用深度学习研究范式,进行模型设计和预测效果分析。

本文的另一个创新点在于深度学习模型网络结构的设计。通过文献分析可以看出,日度数据是学者在研究中普遍使用的数据粒度,但是日度数据样本量较少,使用深度学习模型容易产生过拟合或陷入局部最优。以往的研究在设计模型结构时并没有重点考虑这一问题。对此,本文设计了一个更为合理的多输入多输出神经网络结构,通过多个预测目标训练共享网络,提高了特征提取的效率,取得了更高预测准确度。

1 方法设计

1.1 研究思路

本文的研究思路如图1所示:首先做相关性研究,验证输入数据与价格之间的相关关系(图中步骤1),而后进行深度学习模型设计和训练(图中步骤二),最后检验该模型的预测效果是否有提高(步骤三)。

本文将采集到的数据分为两类:一类是现货商品的数据,比如现货价格、现货库存等;另一类是期货的交易数据,比如持仓量、成交量等。之所以选择这两类数据,是因为商品期货兼具金融属性和商品属性,金融市场和商品市场的信息同时影响期货价格。

图1 研究思路

在步骤一“相关性验证”中,本文只验证现货商品的数据与期货价格的相关性。这是因为,现货价格、现货库存对期货价格的影响方式简单,易于构建回归方程;而期货交易数据对期货价格的影响是复杂非线性的,且是基于经验的,没有理论支持,难以先验地构建回归方程。由于理论价值不大,以往学者也较少去论证期货交易数据对价格的影响。

在步骤二,本文设计了一个多输入多输出的神经网络,其输入特征为现货数据和期货交易数据,输出的预测指标有三个:期货收盘价、期货短期涨跌和期货长期涨跌。使用多个目标训练共享网络,可以帮助网络提取多维度特征,从而使得深度学习模型在较少的样本下,也可以获得较好的预测效果。

步骤二是本文的研究重点,步骤一对步骤二起到了辅助作用。“相关性验证”一方面弥补了深度学习“黑盒”的缺点,为深度学习模型提供了更多的可解释性;另一方面验证了输入数据与预测指标的相关性,避免了“Garbage In Garage Out”的问题。

在步骤三,本文对模型的预测效果进行量化和对比,证明该模型的优越性。

1.2 相关性验证

本文选取的现货相关因素包括两个,一个是现货的价格,另一个是现货的社会库存。理论上,现货价格和期货价格是正相关的;库存和期货价格负相关,因为库存是商品供需关系的另一种表现。当供大于求时,社会库存将增加,当供小于求时,社会库存将减少。

大多数金融时间序列都是不平稳的,直接对非平稳时间序列进行回归,可能产生伪回归,所以本文通过协整检验进行变量间相关性的验证。协整检验的经典方法是EG两步法。EG两步法的前提是两个序列同阶单整,即两个序列经过相同次数的差分后可以达到平稳状态。序列的平稳性可以通过ADF检验进行验证。

EG两步法的第一步是回归拟合,根据上文分析,可以构建如下回归方程:

future_pricet=a1+b1*inventoryt+ecm1t

(1)

future_pricet=a2+b2*current_pricet+ecm2t

(2)

其中future_pricet表示期货价格,current_pricet表示现货价格,inventoryt表示库存数量。b1和b2应该一个为负一个为正,分别表示负相关和正相关。

EG两步法的第二步是对残差ecmt进行平稳性检验,若残差平稳,则存在协整关系。

“协整”的概念与经济学中“均衡”的概念有本质的联系,即两个统计上协整的序列,在经济学意义上应该存在某种均衡。此时从经济意义上来看,残差ecmt代表了价格理论值与实际值的偏差,当本期价格产生偏差时,下一期的价格将向回调整,此特性正好可以用来预测价格。

1.3 多输入多输出神经网络结构设计

深度学习模型是通过最小化预测误差来进行学习的。理论上,通过监督学习,神经网络可以自动提取特征,拟合样本和标签之间的复杂函数关系。但是自动的特征提取并不总能成功。深层神经网络参数量庞大,表达能力过剩,当样本量不足时,模型训练可能很快陷入局部最优或者出现过拟合。而期货价格预测的研究又天然存在样本量较少的问题。针对这一问题,本文设计了一个多输入多输出的网络结构,通过多个预测目标来训练共享网络,帮助网络提取多维度的特征,一定程度上避免陷入局部最优和过拟合,同时加快了模型的学习速度。

该模型的网络结构如图2所示,左半边为收盘价预测,右半边为涨跌预测。涨跌预测有两个预测目标:短期涨跌(期货收盘价的日度差价)和长期涨跌(期货未来7天的平均收盘价与今天的差价,本文引入这一变量是为了度量期货价格的长期趋势)。两个预测目标共享一个卷积层,使得卷积层提取的特征既包含长期趋势,又包含短期趋势。CNN层后是LSTM,而后是全连接层,最后通过单个神经元输出预测值。收盘价预测网络只有一个预测目标,所以直接使用LSTM提取时空特征,将提取后的特征与涨跌预测网络的提取的长期趋势和短期趋势整合,然后输入全连接层,再通过单个神经元输出预测值。神经网络从上到下,特征在不断整合、提纯、浓缩,特征数依次递减。CNN层提取空间特征,LSTM提取时间特征,最后将提取后的高级特征送入全连接网络。全连接网络的表达能力是最强的,同时学习代价也更高,所有只在最后一步使用。

涨跌预测网络根据CNN和LSTM的结构特点,整合二者进行特征提取。本文用于训练的输入特征是一个二维向量,由多个一维时间序列横向拼接而成,可以形象地将横向看作空间维度,纵向看作时间维度。CNN提取特征的方式是将多个时间序列进行线性组合。假设共有m个序列,使用1 x m的卷积核,CNN便可以自适应地对这m个时间序列进行线性组合。设置多个这样的卷积核,便可以得出原序列的多个不同的线性组合,理论上可以模拟任何基于特征组合的技术分析指标(如布林带)。LSTM提取特征的方式是使用循环核在时间步上移动,LSTM的隐藏层单元将记录下每一个时间步获得的信息,在最后一步输出结果。CNN和LSTM网络的整合结构如图3。

图2 模型网络结构

图3 CNN和RNN整合结构图

收盘价预测网络(图2左半部分)合理利用了涨跌预测网络提取的高级特征。图中abs_feature为收盘价预测网络提取的特征,可以粗略地定位收盘价的位置;long_feature为长期涨跌网络提取的特征,预测了长期趋势;short_feature为短期涨跌网络提取的特征,预测了短期趋势。整合三个特征后输入全连接层,全连接层通过学习,充分理解三个特征后给出预测结果。

该模型的多个目标既有一定的独立性,又相互关联。独立性保证了网络可以提取数据中的多维度特征,关联性使得各个网络提取的特征都有助于帮助其他网络提高预测准确性。

1.4 模型预测效果检验

由于三个待预测序列的结构特点不同,本文使用不同方法对三者进行检验。

期货的价格依照一定的趋势进行波动,规律性较强,预测的准确度较高,本文使用对比实验来检验本模型的预测效果。对照模型是单输入单输出的CNN-LSTM混合网络,这是目前预测效果最佳的模型之一。传统机器学习模型,如SVM,对于非结构化数据的预测效果不佳,这已经得到了许多验证,所以不再将其与本文模型进行对比。用于对比的指标使用预测误差率,计算公式如下:

(3)

期货的涨跌波动十分频繁且类似于白噪声,任何预测模型都难以取得很高的预测准确度,所以本文使用间接法进行预测效果检验。涨跌网络的预测值的大小,某种程度上表示了对涨跌看法的强弱:输出大的正数,表示强烈看涨;输出大的负数表示强烈看跌;输出0,表示观望。为了度量预测结果的有效性,制定如下简单投资策略:预测上涨多少,就买入多少;预测下跌多少,就卖出多少。该策略收益计算公式如式2.4,其中delt_price_truet是真实的涨跌,delt_price_predt是预测的涨跌。

revenuet=delt_price_truet*delt_price_predt

(4)

如果该投资策略可以获得正的收益,则说明模型的涨跌预测是有效的。

2 实证分析

2.1 数据说明

本文选取PTA期货作为研究对象,采集了PTA近5年的数据(2016—2021),数据的概览如表1。

表1 数据概览

表中“PTA华东市场价格”、“PTA到岸价(CIF)”、“PTA社会库存”为现货数据,对于这部分数据,本文将通过计量方法验证其与期货收盘价的关系。表中其余的数据为期货交易数据或金融市场数据,如前文论述,不再验证这部分数据与期货价格的相关性。

验证后的数据将用于深度学习模型的训练。模型的预测目标(训练集标签)共有3个: “PTA收盘价”、“PTA价格1日涨跌”和“PTA价格7日涨跌”。

模型的输入(训练集样本特征)为表中的所有数据(除“PTA价格7日涨跌”),共17个时间序列。对于模型输入,本文进行了严格的时间界定,保证所有的输入数据都比预测目标至少滞后1天。

2.2 数据的有效性验证

将“华东市场现货价格”、“PTA到岸价格”和“PTA社会库存”,分别命名为martketing_pricet、cif_pricet和inventoryt,将期货收盘价命名为pricet。其中cif_pricet原始数据单位为美元,这里已经通过汇率折算为人民币;库存为周数据,构建库存和期货价格的回归方程时,将期货价格以周为单位求平均。

对变量进行ADF检验,所有变量都是一阶单整,满足协整检验的要求(表2)。分别以martketing_pricet、cif_pricet和inventoryt为被解释变量,建立三个一元线性回归方程:

pricet=967.242(0.000***)+0.808(0.000***)*market_pricet+ecm1t

(5)

pricet=926.043(0.000***)+0.933(0.000***)*cif_pricet+ecm2t

(6)

pricet=6203.324(0.000***)-0.622(0.000***)*inventoryt+ecm3t

(7)

可以看出,三个回归方程的回归系数都是显著的,且残差在95%的置信水平下达到平稳(表3),说明三个协整关系都是成立的。由此可得出结论:1)PTA期货收盘价和现货价格存在长期均衡关系,相关关系为正相关;2)PTA期货收盘价和现货的社会库存存在长期均衡,二者负相关。回归方程中的ecmt为价格理论值与实际值的偏差,根据协整关系的误差修正特性,当实际值偏离理论值时,未来价格将向误差的相反方向调整,这一特性说明:现货价格和现货库存都可以作为价格预测的输入特征。

表2 “社会库存”和“收盘价”的ADF检验

表3 残差ADF检验

2.3 价格预测实验说明

本次实验选取了PTA期货近5年的数据,共有样本1231个。对样本进行划分,训练集比例为0.8,共984个样本;测试集比例为0.2,共247个样本。在训练之前,对数据进行归一化处理,收盘价数据归一化到(0,1)之间,计算公式如3.4;涨跌数据归一化到(-1,1)之间,计算公式如3.5)。

(8)

(9)

模型的输入有两个(图2中的两个InputLayer),分别用来预测收盘价和涨跌,两个输入是相同的,由同一份数据复制得到的。该输入特征由17个时间序列横向拼接而成(如表3.1),每个特征序列包含60天的历史数据,即模型的输入为60x17的二维向量。模型输出的预测指标共有3个:收盘价、短期涨跌和长期涨跌,三个预测指标都是标量。

涨跌预测网络(图2右半部分)的卷积层包含10个卷积核,卷积核步长为1,只进行空间卷积,保留序列的时间特征。卷积层经过relu激活函数后输出,其提取的特征simple_feature将作为公共特征,供短期涨跌和长期涨跌预测共用。两个涨跌预测网络结构相同,在CNN后是依次是两个LSTM层,一个全连接层,最后通过单个神经元输出预测值。两个LSTM层隐藏单元个数分别是10和8,对参数设置0.2的dropout,防止训练中出现过拟合。全连接层神经元个数为5,激活函数为tanh。最后的输出神经元不设置激活函数,全连接层的输出值在该神经元进行线性组合,最终输出预测值。

收盘价预测网络(图2左半部分)的两个LSTM层与涨跌预测网络中的两层LSTM结构相同。经过两层LSTM后,网络提取出absolute_feature,将其与涨跌预测网络提取的long_feature和short_feature横向拼接,得到mix_feature。mix_feature输出到全连接层,由全连接层对三个高级特征进行最后的分析和组合。全连接层神经元个数为5,激活函数为sigmoid。最后的输出神经元同样不设置激活函数。

三个预测目标的损失函数均选择均方误差。收盘价网络的预测误差较小,涨跌网络的预测误差较大,所以对三个损失函数设置不同的权重,保证加权后三者大小在同一数量级。经过实验,最终将收盘价预测网络、短期涨跌预测网络和长期涨跌预测网络的损失函数权重设置为10:2:1。选择Adam算法对模型进行优化,这是目前最受认可的优化算法,可以自适应地调整学习步长,适用于大多数优化任务。算法的超参数使用Tensorflow推荐的默认参数,学习率为0.001。经过100此迭代后模型收敛。

2.4 实验结果分析

2.4.1涨跌预测结果分析

涨跌预测结果如图4(数据已归一化),上方图表为短期涨跌预测,下方图表为长期涨跌预测。其中蓝色折线为真实涨跌值,红色折线为预测的涨跌值。可以看出,长期涨跌预测值较好地刻画了真实值,尤其在价格出现明显涨跌时,预测值与真实值很接近;短期预测网络的输出信号在0附近波动,预测值与真实值相差较大,但涨跌的趋势是一致的。这与实际情况相符合:期货交易中有大量的噪声,价格的长期趋势具有较高的可预测性,但短期趋势更多地是噪声主导,可预测性较低。

图4 神经网络预测结果

在测试集上计算各个样本的revenuet,结果如表4,短期涨跌预测网络指导的投资,平均日收益是51.25元;长期涨跌预测网络指导的投资,平均日收益为2774.83元。需要指出的是,长期涨跌的计算方式是未来7天的均价减去当天的均价,这个值是未来的平均值,不是真实存在的,所以也无法以这个“未来价格”进行卖出,这里的买卖是对理想情况的一种模拟。对revenuet进行0均值T检验。结果显示(表4),长期收益在99%的置信水平下大于0,短期收益在95%的置信水平下大于0。由此可以得出结论,长短期预测网络都可以有效地预测收盘价的涨跌值。

表4 收益的0均值T检验

2.4.2收盘价预测结果分析

训练并调整对照模型(CNN-LSTM混合网络)的参数到最优。两个模型的价格预测效果如图4(数据已归一化),其中红色折线为预测值,蓝色折线为真实值。计算两个模型在训练集上的预测误差,对比结果如图5。

图5 模型预测效果对比图

图6 模型的误差对比图

对两组误差数据进行莱文方差等同性检验,得F值为25.58,P值为0.000,在99%的置信水平下,两组误差方差不同。本文模型预测误差的方差更小,预测结果更稳定。进行异方差的T检验(表5),零假设H0为“二者均值相等”,得到P值为0.00,在99%的置信水平否定原假设,即:二者误差均值不相等,本模型的预测精度高于对照模型。

表5 均值相等检验-T检验

3 结束语

商品期货既有金融属性又有商品属性,研究其价格预测具有重要的理论和实践意义。该研究领域很早就受到学者关注,并且如今依旧活跃。与以往文献相比,本文的贡献主要有两点:

(1)本文采用了“相关性验证+价格预测”的两阶段研究设计,将价格影响因素研究作为价格预测的前置研究:在影响因素研究部分采用计量回归的研究范式,进行回归拟合和相关性验证;在价格预测研究部分采用深度学习研究范式,进行模型设计和预测效果分析。变量间的相关性验证一方面弥补了深度学习模型可解释性较弱的缺陷,另一方面也保证了数据质量,避免了深度学习中常见的“Garbage In Garbage Out”的问题。

(2)针对期货收盘价预测问题中样本量偏少(对于深度学习模型来说)的问题,本文设计了一个多输入多输出的深度学习模型。该模型通过多个预测目标训练共享网络,提高了特征提取的效率。文中以PTA期货为算例,证明了该模型的优越性:1)对于收盘价预测,该模型的预测误差显著小于CNN-LSTM混合模型;2)对于收盘价涨跌预测,本文根据预测结果模拟投资,获得了正的收益。

猜你喜欢

收盘价价格预测
无可预测
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
股神榜
股神榜
股神榜
不必预测未来,只需把握现在
股神榜
价格
价格