张雪芳 温 馨
(武汉邮电科学研究院 武汉 430074)
在我国经济快速发展的背景下,股票市场应运而生。股市是股票发行流通的平台,同时也是上市公司募集资本的重要途经之一。另一方面,随着人民经济水平的提高和股票市场的发展,进行股票投资也成为了人们的主要理财方式之一。股票投资的目的是,如何在最小化风险的情况下获得投资收益的最大化,而如何选择投资策略,成为众多投资者面临的主要问题。本文选择XGBoost 算法作为基础,构建股票指数涨跌预测模型。通过以往的研究结果,选取财报中的相关数据作为输入特征,对后一天的涨跌情况进行预测,并通过网格搜索法确立最佳权重。本文用二元数据表示模型预测的结果,“+1”即为上涨,“-1”即为下跌,并对不同年份、不同模型的效果进行比较,判断模型的预测效果。本文进一步比较了LR算法、SVM算法、随机森林算法和XGBoost 算法的优劣,证明XGBoost 模型在股指预测中有较优的效果,最后得出基于XGBoost 模型量化分析的结论建议。
XGBoost 算法是基于Adaboost 和GBDT 等提升树算法基础上进行优化的算法,它是通过集成多个弱分类器来实现学习的。通过一个含有n 条记录以及m 个解释变量的训练集D={(xi,yi)},|D|=n,xi∈Rm,yi∈R,第i个样本所预测的值,可以表示为由k个决策树联合的模型,记作:其中,fk代表第k个决策树,F是函数空间,代表所有决策树的集合。
与GBDT 的目标函数不同,XGBoost 在原有的目标函数之上增加了正则化项,来减弱过拟合,增强泛化性。目标函数公式如下:
其中,函数l 可以选择不同的损失函数,Ω(fk)代表第k棵树的惩罚项,具体公式如下:
其中,wk,j代表第k 颗树中第j 个叶子的权值,T 代表叶子节点数,γ和λ是用来平衡重要性的参数。通过对L 式进行二阶泰勒级数的近似展开,得到如下公式。
其中,pi是的Logit变换。
XGBoost算法的优点如下:
1)模型支持并行化运算,计算效率更高;
2)算法支持列抽样,不仅可以降低过拟合,增强泛化能力,还可以有效减少计算量;
3)有缺失值处理的机制,对缺失的数据,能够自动学习出树节点的分裂选择方向;
4)相比于GBDT 仅使用了一阶导信息,XGBoost 使用的是二阶泰勒级数进行展开,可以学习到更精细的数据模式,增强模型准确性;
5)在损失中增加了L1、L2 正则化,可以大大提高泛化能力。
沪深300 指数是从沪深两个市场中选取的排名前300 的股票组成的,具有流动性较好并且资金规模较大的特点。其中的股票多为A 股中的市值较大的公司,市场代表性好,能够较好地反映市场龙头公司的股票价格走势。受新冠疫情造成的全球股市低迷的影响,本文选取了2012 年1 月1 日到2019年12月31日,共计1945个交易日的采集数据进行研究,采集了年度财务报告中的数据比率指标进行预测。本文所采用的财务指标特征和股价数据均来自于瑞斯数据库。
在实际量化投资模型构建时,由于原始数据量比较大,并且存在着数据缺失、量纲不统一的脏数据,因此首先有必要对数据进行处理。
直接删除异常值样本简单粗暴,但是存在一定问题。删除特异值样本导致样本在这一范围区间内的数目减少,致使样本总体分布发生改变,对模型效果有不利的影响。因此本文采用的处理方法是,将财务指标中数据分布大于95%分位点的数据用95%分位点的数据值替换,而小于5%分位点的数据用5%分位点的数据值替换。某股票财务数据指标以及替换后的指标统计如表1~2所示。
表1 财务指标统计
表2 异常值处理后的财务指标统计
表3 默认参数下模型的运行结果
表4 不同算法AUC评分比较
表5 不同年份下每种模型的效果比较
构建模型时,并不是输入特征越多越好。如果数据量非常大,造成冗余信息过多,XGBoost 训练的过程会消耗大量的时间。因此,可以通过数据规约的方式进行降维,保留数据有效性的同时降低数据维数,消除冗余数据,可以有效减小消耗。本文采用主成分分析法(PCA)进行数据规约。具体步骤如下:
1)对原始输入矩阵做标准化转换,统一量纲;
2)计算不同特征的相关系数矩阵R;
3)计算相关系数矩阵R 的特征值以及特征向量,得到载荷矩阵,保留前m 个特征值以及对应的特征向量,此时数据的正交性最大,即在有效降低冗余同时,可以保留最大的信息量。
XGBoost参数优化的一般步骤如下:
1)选择较高的学习率,例如设置学习率为0.1,可以在一定区间内用穷举法进行参数寻优,获得准确率较高的参数组合;
2)在给定的学习率和决策树数量下,进XGBoost 各个参数调优(max_depth、min_child_weight、subsample、gamma等);
3)XGBoost的正则化参数调优;
4)选用更低的学习率,精细化的确定理想参数。
默认参数下,模型的运行效果如下。
首先,在固定学习率的条件下,对Min_chile_weight、Max_depth 参数寻优,测试其在不同组合下的模型效果。其次,固定上述三个参数,对gamma参数寻优。接下来,调整subsample 和colsample_bytree参数。最后,对reg_alpha参数进行优化。
通过上述调优,将模型测试集的AUC 提高到了0.6782,有一定的优化效果。
最终,比较了不同算法的AUC 评分,示意如下。
不同年份年报数据下的模型效果比较如下表所示。
从上述结果可以看出,XGBoost 算法的效果是要优于SVM、RF、LR 的。同时,XGBoost 对模型有较好的解释性,更加适用于特征数量较少、对解释性要求较高的场合。
本文从股票投资的视角出发,研究了XGBoost算法在量化分析中的应用,基于财务数据对股票趋势进行分析,有一定的有效性。并比较了XGBoost、RF、SVM、LR 算法的优缺点,具有一定的借鉴意义。在实际的股票交易中,每日股票涨跌的幅度是一定范围内的变化值,而不是只有二元的结果。此外,每次交易伴随一定的税费,因此短期内多次交易不是最优的决策。在后续的研究中可以就相关方向进行进一步的总结与完善。