基于标的股指及机器学习的股指期货价格预测
2020-09-24蔡泽栋
蔡泽栋
摘 要:使用机器学习算法对复杂的金融市场数据进行预测,是近年来一个热门的研究方向。本文以沪深300股指期货为价格预测对象,首先构建VAR模型发现标的股指价格对股指期货价格具有显著影响,其次辅助脉冲响应分析结果确定预测模型中的具体特征,最后基于XGBoost算法,使用历史数据训练模型并进行测试。结果表明:模型预测效果较好,且与不含标的股指历史交易信息的预测结果相比更加准确,从而得出结论:标的股指历史交易数据对股指期货价格预测有重要作用。
关键词:价格预测 股指期货 VAR模型 XGBoost算法
中图分类号:F832.5 文献标识码:A 文章编号:2096-0298(2020)09(a)--03
1 引言
随着人工智能技术与大数据技术的兴起火热,金融市场预测与机器学习算法的结合成为近年来热门的研究方向。股价预测是金融时间序列预测问题中最常见的一类,决策树[1]、神经网络[2]、逻辑回归、支持向量机(SVM)[3]等经典的机器学习算法都有被应用于研究中,且均有较完善的研究体系。
然而股指期货价格的预测却有所不同。股指期货是以股票指数为标的物的标准化期货合约,是一种较为成熟、级别较高的金融投资工具,与股指现货市场密切相关[4]。因此,在对股指期货价格进行预测建模时,除了其自身的历史交易信息之外,标的股指价格作为输入特征来训练模型也是很有必要的。
此外,选取过少的历史交易信息会导致拟合精度的下降,选取过多又会导致数据过拟合的问题,因此模型输入特征中包含目标预测日前多少天的历史交易信息也是值得探究的。
本文以沪深300股指期货为研究对象,首先使用VAR模型对股指期货现货价格变动的相关关系进行研究与验证,并使用脉冲响应函数分析价格变动的冲击影响与时效,从而找到最优的历史交易信息天数; 其次基于在决策树基础上发展而来的XGBoost算法,将相应的变量作为特征训练模型,并调整出最优参数,再用部分历史数据测试最优参数模型的拟合效果,从而作出相应的评价。
2 股指期现货价格变动关系的实证分析
本部分使用的数据为沪深300股票指数日结算价以及沪深300股指期货连续合约(IF0)日结算价,数据来源均为同花顺iFinD金融终端;数据区间为2017年第一个交易日(1月3日)到2020年春节前最后一个交易日(1月23日),经缺失值和异常值剔除后,共得724组数据。
模型构建过程如下:第一,将两序列数据进行对数化处理;第二,通过ADF方法检验平稳性,确定将两者的一阶差分作为变量构建VAR模型;第三,按照SBIC准则确定模型的最优滞后阶数为三阶。
模型应用结果如下:首先,稳定性判别图(图1左)顯示构建的模型具有很好的稳定性,说明股指期现货价格变动之间存在稳定的相互关系;其次,格兰杰因果检验显示,股指现货价格变动是股指期货价格变动的因,而股指期货价格变动不是现货价格变动的因,这说明将股指现货价格作为特征来训练模型的思想是正确的;最后,脉冲响应图(图1右)显示现货对期货有三期的显著影响,因此可确定模型输入特征中应包含股指期货价格目标预测日前3天的标的股指价格结算价信息。
3 基于XGBoost的股指期货价格预测模型
3.1 XGBoost原理及优势
首先,XGBoost算法是在梯度下降树(GBDT)算法的基础之上经过改进得到的,目的是为了解决GBDT算法中的缺陷。XGBoost是Boosting中的代表性算法,首先以原始数据集为基础训练出第一个弱学习器,计算得到预测值和真实值之间的残差,并将其作为下一个弱学习器的学习对象,每一个弱学习器都以减小真实值与预测值之间的差距为目的[5]。这样看来,XGBoost就是一种迭代的决策树算法[6],模型输出可以表示为个弱学习器的叠加(式(1)):
其次,XGBoost目标函数中(式(2))包含了正则项(式(3)),其中表示树中的叶子节点数量,表示树中某一叶子节点得分的L2模平方。对进行L2正则化,相当于针对每个叶节点的得分增加L2平滑,具有防止过拟合的作用。这种特点增强了拟合和泛化能力与稳定性,因此更适合股指期货价格的预测。
最后,许多较新的算法及机器学习平台,如卷积神经网络(CNN)[7]、长短期记忆网络(LSTM)[8]、谷歌研发的TensorFlow[9]等都在金融时序预测问题中有过出色的表现。这些算法在预测准确率上优于传统的机器学习算法,但存在着迭代次数多、运行较慢、电脑配置要求较高等局限性。相较而言,XGBoost算法将传统机器学习算法进行了改良与增强,且运行速度较快,是权衡精确度与效率之后更好的选择。
3.2 模型训练与测试
3.2.1 数据下载与预处理
利用Python自带的Tushare包,下载2017年第一个交易日(1月3日)至2020年春节前最后一个交易日(1月23日)沪深300指数日结算价,同时通过request库爬取新浪财经网页中同一数据区间的沪深300股指期货合约开盘价、收盘价、最高价、最低价、成交量等数据。经数据预处理后,最终获得的有效交易数据为724条。
3.2.2 数据降噪
由于市场动态较为复杂,数据含有不确定性的噪声,因此需要将每列数据均通过小波变换去除噪声。这里使用pywt库来进行有关处理。
3.2.3 模型特征选取
基于上一部分的分析,本文使用每个目标预测日过去前3天的股指期货合约结算价、最高价和最低价的差值、开盘价和收盘价差值、成交量以及过去前3天的标的股指结算价共15个特征构建特征工程,来对沪深300股指期货合约结算价进行预测。
3.2.4 特征缩放