文/宋逸菲(上海大学)
目前,机器学习的应用如火如荼。从算法角度来说,机器学习的预测方式建立在一个样本学习的过程之上,这使得预测的精准性在传统的计量方法之上。目前是大数据时代,人们对数据的处理能力得到了显著的提升。在股价预测领域,通过对海量日频数据的分析,我们目前对股价的预测能力又大大提升。
本文旨在使用XGBoost的监督式机器学习算法,在仅使用日频的目标股票交易数据的前提下,对未来1天的股价进行预测,并指导投资者根据模型给出的结论进行投资,使投资者的投资收益最大化。
目前,常见的股市预测方法是使用股票的历史数据去预测股市,但是却忽略了影响股市的新闻和股民情绪。
在 1992 年,Yiu等比较了基于历史样本方差的朴素方法、指数加权移动平均(EWMA)方法和广义自回归条件异方差(GARCH)模型的预测性能,表明 EWMA 方法在波动性股价预测中是有效的[1]。
2000 年,郑丕谔等提出一种基于 RBF 神经网络的股市预测建模方法 ,主要采用了遗传算法训练 RBF 网络的参数、权重和结构,由预测结果可知,该模型具有很强的学习与泛化能力,且具有很高的应用价值[2]。2003 年, Kim 将 SVM 用于股票价格指数的预测,结果表明,SVM 是一种很有前途的股票市场预测方法[3]。2013年,Ticknor 将贝叶斯正则化与人工神经网络相结合进行股价涨跌预测,降低了过度拟合和过度训练的可能性,提高了网络的预测质量和泛化能力,确定了该模型的有效性[4]。
XGBoost 是由Chen 等在2016 年提出来,证明了其模型的计算复杂度低,运行速度快,准确度高等特点[5]。在2018年,陈宇韶等将皮尔森方法与 XGBoost 算法结合,通过筛选股价数据的特征,有效克服了数据量太大造成的准确率降低和需更新的参数过多的问题,取得了较好的预测效果[6]。
XGBoost的预测公式:
其中,K表示模型中CART决策树的总个数,fK表示一个具体的某个CART树,xi则是我们输入的样本,则是XGBoost输出的预测值。
XGBoost的目标函数:
其中前半部分是损失函数,后半部分是正则化项。损失函数代表了一个累积的损失,即第i个CART决策树的输入数据其实是第i-1个CART树的累积偏差,在优化整个目标函数的过程中,必须对每一个CART树进行单独优化,最后加总。在XGBoost中,损失函数是最常用的MSE,所以对于第t个CART树,上述的目标函数表达式可以表示为:
而后面的正则化项,我们可以进一步表示为下式:
其中γ用于控制叶子节点T的复杂程度,γ越大,就表示我们越希望得到简单结构的树。最后,我们将惩罚项代入式子,并令:
我们就能得到XGBoost最终需要最优化的目标函数:
本文的交易策略总体上来说是一个日频的交易策略,并且交易的时间仅限在收盘时。在理想状态下,在无限接近收盘的时候,用当天无限接近收盘价的价格,以及历史的股价,对未来一天的收盘价做出预测。如果预测价高于目前的收盘价,就买入1个单位的股票。在第二天,如果预测的收盘价格仍然低于现价,那么就卖出1个单位的股票。以此类推,就构造了一个可行的日频股票交易策略。
图1 测试集拟合情况
从聚宽上获取广州酒家(603043)的历史股价数据,获取的时间包含了2018年1月1日至2021年3月12日的全部交易日数据。此外,本次研究的样本数据并没有缺失值,交易所闭市造成交易日数据缺失并不影响建模数据分析。
1.数据的预处理
首先我们将股票的收盘价导入模型中进行初步的分析,将广州酒家的收盘价分为3个部分,60%的数据作为训练集,20%的数据作为验证集,20%的数据作为测试集,其中我们使用验证集来计算MSE用以调整模型的参数。
在训练模型之前,我们要注意的是需要分别对3个部分的数据进行标准化来消去趋势性。
2.训练模型
在完成数据的预处理后,将训练集输入模型进行训练。 进一步地,使用RMSE和MAPE来衡量精度。均方根误差:
其中,n为测量次数,dj为一组测量值与真值的偏差。
模型拟合得到的RMSE=0.343、MAPE=0.987%,这个值是非常理想的。
3.模型评估和调参
使用验证集的数据对模型进行初步的评估,可得RMSE=0.756、MAPE=1.942%。由此可见预测效果相对训练集来说并不是很好,需要进行参数调整。
调参分为两个层面,一个是调整CART树的最大节点深度和每个CART树叶子上最小的样本数,使用RMSE作为网格化调参的指标。另一个是整体的目标函数方面,对目标函数中惩罚系数gamma的值进行调整,并相应改变子样本的参数,仍然以RMSE作为调参的指标。
表1 交易策略的实现过程
最终经过调参后的模型参数为:树的最大深度为3,决定树的数量为180,learning rate为0.2,最 小 样本权重为9,子样本的参数为1,每棵随机采样的列数的占比为0.9,gamma=0.9。
经过上述调参后,验证集的RSME=0.755、MAPE=1.924%均 有 所减小。
4.预测
完成调参后,使用改进的模型对测试集的数据进行拟合。
使用2020年9月8日至2021年3月5日共124个数据进行回测,基于预测结果,部分的交易细节如下:
我们的策略在8天内的总收益为0.4元,在一定程度上证明了策略是有效的。
虽然在回测的时候,取得了一个相对可观的收益,但是这仅仅是建立在对广州酒家一只股票的交易策略上,在运用模型的时候对这只股票进行了单独的网格化调参,将RMSE降至了一个最低的水平。所以如果要运用这个策略进行其他股票的交易,本文并不能保证这个策略是否有效。
本文通过使用XGBoost算法构建了一个监督式学习的股价预测模型,并通过网格化调参方法对模型中的关键参数进行了最优化调整,其中我们选取的最优化指标是使得模型的RMSE达到最小。
通过网格化调节参数后,得到了一个最优化的模型对广州酒家的股价进行了预测。本文的策略是日频的,所以它必须在前一日收盘时决定买入或者卖空,并仅能在收盘前完成交易。基于该策略,使用广州酒家8天的股价进行回测,获得一定的收益,这说明我们基于XGBoost预测股价构建的量化交易策略是相对有效的。
行
相关链接
财务管理是在一定的整体目标下,关于资产的购置(投资),资本的融通(筹资)和经营中现金流量(营运资金),以及利润分配的管理。财务管理是企业管理的一个组成部分,它是根据财经法规制度,按照财务管理的原则,组织企业财务活动,处理财务关系的一项经济管理工作。简单的说,财务管理是组织企业财务活动,处理财务关系的一项经济管理工作。