APP下载

基于XGBoost和LSTM模型的金融时间序列预测

2021-09-05杨会杰

科技和产业 2021年8期
关键词:梯度准确率样本

黄 颖, 杨会杰

(上海理工大学 管理学院, 上海 200093)

股票市场是企业筹集资金的重要渠道之一,也是资本市场的重要组成部分。它的波动同经济市场的盛衰息息相关,有效的趋势预测可为企业和个人带来可观的利润。该研究成为学术界一项重要课题。在股市预测中,常见的方法包括前馈神经网络、反向传播神经网络和循环神经网络等模型,许多学者致力于用此类方法预测金融市场。

在传统机器学习领域,Prasaddas和Padhy证明支持向量机SVM对未来价格预测的效果优于反向传播算法[1];Tay和Cao比较了SVM和多层反向传播算法[2],依然证实SVM效果更佳;Jain等比较XGBoost模型和传统回归模型[3],发现XGBoost预测准确率更高;Sawon和Hosen研究XGBoost和线性回归、随机森林回归等算法在大规模数据中的预测效果[4],同样证实XGBoost算法的优越性。

在神经网络模型方面,Wilson和Sharda比较了神经网络和传统的多元判别分析在公司破产问题上的表现[5];Hsieh等将小波转换和循环神经网络RNN结合应用于股市预测[6];Kamijo和Tanigawa用RNN识别股票模式[7];Akita等证明了LSTM比其他模型更能捕捉时间序列信息[8];Chen等用GRU预测金融时间序列并在误差较小的情况下效果良好[9]。

本文运用预测效果较好的传统机器学习XGBoost模型对黄金价格进行预测,根据对K线形态因子在历史数据上回测结果的统计分析、动量因子在模型特征重要性中的表现,优化特征选取,降低特征选取的主观性;将优化后的特征用于能够有效记忆长短期信息并克服RNN模型梯度爆炸或梯度消失问题的LSTM模型,探索能否进一步提升预测效果。

1 基本理论

1.1 XGBoost极端梯度提升模型

XGBoost简称为Extreme Gradient Boosting,由华盛顿大学的陈天奇博士提出。它是由若干棵树集成的模型,每棵树对样本预测值之和为XGBoost系统对该样本的预测值,函数定义为

(1)

模型目标函数为

(2)

目标函数右式的第1项为损失函数,第2项为正则化项。损失函数即训练误差,类似于用于回归的均方误差MSE,是可微的凸函数;正则化项是为了防止模型过拟合而存在的,是一个惩罚项,控制模型复杂度。因此,模型所要达到的效果是使目标函数L(φ)最小化。

XGBoost优化了GBDT算法。在求解最小化目标函数的模型fx过程中,GBDT只采用一阶导数,而XGBoost算法对损失函数做二阶泰勒展开;由于传统的枚举所有可能分割点以寻找最佳分割点的贪心算法效率太低,XGBoost还提出了根据百分位法列举几个候选分割点,再根据公式求解最佳分割点的优化方法。

1.2 LSTM长短期记忆模型

LSTM模型[10]是对RNN的改进,既能同时储存长期和短期的信息,又能有效避免RNN模型存在的梯度爆炸或梯度消失问题。主要应用于Nature Language Processing,speech recognition等时间序列数据。

LSTM网络包括输入层、隐藏层和输出层,每一层包含许多单元;隐藏层中每个单元都有记忆细胞,输出门、遗忘门和输出门共同决定输出值的生成。隐藏层单元内部结构[11]如图1所示。

图1 隐藏层单元结构

(3)

(4)

此算法可有效解决RNN模型的梯度衰减问题。例如当ft接近1且it接近0,则过去信息将会一直保留,便于更好地捕捉序列中时间步较大的样本关系。ot越接近1,ct将有越多的信息传递至ht,并体现于输出层结果;反之,越接近0,ct传输至ht的信息越少。

2 模型建立与求解

2.1 数据处理

由于获取黄金价格数据2010—2020年为每分钟线的开盘价、收盘价、最高价、最低价数据,但步长太小时数据波动较少,近似于求解微分方程,训练效果可信度不高,因此将数据处理为一小时线数据。以第1 min的开盘价为小时线开盘价,第60 min的收盘价为小时线收盘价,60 min内最高价为小时线最高价,60 min内最低价为小时线最低价。删除有缺失值的数据,并进行归一化处理,得到样本量为62 440条数据。

2.2 XGBoost模型和技术指标选取

技术因子是以价格、成交量等作为计算因子,通过一定数学计算得到的判断价格走势的数据、图形等,可用于判断买卖时间和价格。以40个技术指标及黄金的高开收低价作为特征构建XGBoost模型。首先根据每小时的开盘价和收盘价计算收益率qi,计算公式为

(5)

式中:close_pricei为i时刻的收盘价;open_pricei为i时刻的开盘价。根据收益取值分布为样本涨跌趋势打标签,取值分布直方图如图2所示。

图2 股市收益取值分布直方图

可见大多数样本集中在[-2.5,2.5]区间内,总体符合正态分布特征。取值为总样本前20%判为涨,后20%判为跌,其余为震荡。建立XGBoost模型并用网格搜索法调参,树的最大深度为10,学习率为0.1,叶子节点最小权重和为3,每棵树随机采样的特征比例为0.7,目标函数使用softmax的多分类器,类别数目为2。输出模型的特征重要性并剔除掉对结果影响较小的特征,最终保留21个特征,重要性分布均匀,无冗余特征,见表1。

表1 技术因子选取

为使预测结果有统计意义,在前60 000组数据中,以步长为5 000、训练样本量为15 000滑动选取样本,共9次训练。例如第1次训练样本为第1~15 000组,第2次训练样本为第5 000~20 000组,以此类推;测试样本均为后15组数据,对9次结果取均值,平均预测准确率为72%。

2.3 K线形态因子统计分析

K线形态因子又称蜡烛线,是股票分析的重要工具,有61个指标,包含信息丰富,可直观表示股价趋势强弱、买卖双方力量平衡的情况。从Talib官网获取K线形态的C语言源代码,分析各指标对于涨跌趋势的判断逻辑。用黄金历史数据做回测,从不同持仓时间和预测周期的维度,统计各指标出现次数、胜率及平均收益,结果如图3所示。

图3 不同维度的指标平均胜率

可见持仓时间越长、预测周期越长,整体胜率越高,在时间维度上,持仓时间为1 h的平均准确率最高。依据一小时线的平均胜率、平均收益率以及总出现次数对各指标进行排序并打分。发现大部分指标的预测准确率在48%~52%,认为概率随机;选取预测准确率在52%以上的8个指标作为特征,具体指标见表2。

表2 K线形态因子选取

将上述8个特征加入XGBoost模型中进一步训练,9次训练的平均准确率为73.5%;观察特征重要性,发现21个技术因子和8个形态因子的重要度均在0.03左右,无冗余特征。证明胜率较高的形态因子的加入使模型效果提升,但幅度不是很大。

2.4 LSTM模型

为使XGBoost模型和LSTM模型预测结果具有可比性,在建立LSTM模型时,保持选取的技术因子和形态因子不变,样本选取和训练集、测试集划分方式均不变,构建两层LSTM和两层全连接层的模型。通过网格搜索法选取最佳参数。

模型结构设置:第1层LSTM层的输出神经元数为16,第2层LSTM层的输出神经元数为4,第1层全连接层输出神经元数为4,最后为1个神经元的输出层。参数设置:滑动窗口为22,即每次迭代用前22组特征值预测后一时刻的涨跌趋势;损失函数为最小均方误差MSE;优化器为adam;batch_size为200,epoch取10,表示每训练完200组样本为一次迭代并更新一次权重,训练完全部15 000组样本为一个epoch,训练完10个epoch则权重更新(15 000/200)×10=750次。此为一次训练过程完整结束。

以步长5 000滑动选取样本,9次训练全部完成后取均值,平均预测准确率达到80%,再次提升了6.5%,且结果具有统计意义。

3 结果分析

为了证明特征工程及模型结果的有效性,避免数据选取偶然性带来的不确定性,选取欧元和浦发银行股价数据,按照同样的方法进一步做实证研究。结果见表3。

表3 实证研究结果分析

表3中第1列为选取的3组数据,第2列为根据特征重要性筛选技术因子后的XGBoost模型预测准确率,第3列为根据历史数据回测筛选出效果较好的形态因子加入XGBoost模型后的预测准确率,第4列为将优化后的特征用于LSTM模型的预测准确率,第5列为3组数据分别加入的形态因子个数。从整体来看,由于欧元的初始分钟线数据只有104万条,经处理后的小时线数据量大约为16 000条,因此滑动选取的训练样本量为5 000条,预测准确率绝对值低于另外两组数据。

分别观察3组数据预测结果变化:黄金数据加入8个形态因子后,预测准确率提升1.5%;欧元数据加入5个形态因子后,预测准确率提升1.2%;浦发银行数据加入6个形态因子后,预测准确率提升0.7%。比较优化特征后的XGBoost模型和LSTM模型:黄金数据预测准确率提升了6.5%;欧元数据提升了6.8%;浦发银行数据提升了8.2%。可见,在历史数据回测中表现优越的少数K线形态因子加入模型对预测效果有一定提升作用,LSTM模型也比XGBoost模型预测准确率更高。

4 结论

通过对K线形态因子和技术因子的分析及特征优化工作,进一步比较XGBoost和LSTM模型在预测金融时间序列方面的能力,得出以下结论:

1)将K线形态61个因子在历史数据中做回测,筛选出不同持仓时间和预测周期的平均胜率和收益率较高且出现次数较多的因子仅有不到10个,可见大部分因子的判断效果近似随机;但将少部分表现较好的因子作为特征应用到模型中,仍使预测效果提升1%左右,提升力度不大。

2) LSTM模型效果明显优于XGBoost模型,由于LSTM模型可同时记忆长期和短期信息,并能有效解决梯度消失和梯度爆炸问题,更适用于跨度较长的时间序列数据预测问题。

猜你喜欢

梯度准确率样本
磁共振梯度伪影及常见故障排除探讨
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
用样本估计总体复习点拨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
一个具梯度项的p-Laplace 方程弱解的存在性
规划·样本
基于AMR的梯度磁传感器在磁异常检测中的研究
基于数字虚拟飞行的民机复飞爬升梯度评估