1. 研究背景与意义
近年来,公司财务预警受到了学术界、金融财务实业界和政府部门的广泛关注。作为金融市场的一个重要领域,资本市场在我国发展了近二十年,股票、债券、基金、衍生品等各种投资方式已经逐渐被社会大众所接受,但资本市场的不规范现象十分严重,上市公司财务造假、上市圈钱、损害金融机构和股民利益的情况屡禁不止,上市公司因财务状况异常而被特别处理的现象屡见不鲜。因此,如何应用先进、科学的方法对上市公司进行财务预警,营造公平竞争的市场环境,规范和加强企业财务分类监管,关系到我国资本市场的健康发展。在大数据的背景下,传统的财务预警法如统计与BP神经网络等分类方法难以解决运行效率低、计算速度慢、学习效率低、缺乏交叉验证、容易产生过拟合、无自动筛选、预测精度低等方面的问题,对于复杂的资本市场则需要探索新的财务预警方法——基于XGBoost算法的财务预警方法来解决上述诸方面的问题,以提高财务预警的速度和质量。因此,本文的研究不但可以丰富传统的财务预警理论与方法,而且对广大的投资者、企业经营者、政府管理部门和资本市场的健康发展有着重要的意义,财务预警的质量将直接影响着风险防范与成本费用控制等,对金融监管部门、商业银行、投资银行、基金公司、保险公司等金融机构、上市公司的生存发展产生重要的影响。
2. 文献综述
国外对于上市公司财务预警的研究,大致经历了以下几类:(1) 定性分析法;(2) 统计分析法;(3) 神经网络法;(4) 基于市场价值的KMV方法。(1) 定性分析法,主要是5C要素分析法和LAPP原则,5C要素分析法主要从Character品格、Capacity能力、Capital资本、Collateral担保、Condition环境等5个方面来分析财务状况;LAPP原则主要从Liquidity流动、Activity活动、Profitability盈利、Potentialities潜力等4个方面分析财务状况。除此之外还有杜邦财务分析体系和沃尔比重分析法等,这些方法的缺点是:主观性较强,受人的主观影响大,为了克服定性分析能力差,缺乏整体概括、定量分析不足等问题,国外从20世纪60年代开始,普遍采用了统计分析法。(2) 统计分析法,Beaver (1966)以企业的29个财务指标建立指标体系,通过该指标体系分析企业违约状况,发现财务指标是影响企业违约的重要因素[1]。但是,统计法对数据要求严格,如:数据要服从多元正态分布、变量间不存在多重共线性、配对样本协方差矩阵应相同等等,而现实中的数据难以满足这样的要求。因此,后续学者采用Logistic等方法建立模型,Ohlson (1980)利用Logit回归模型预测企业违约概率,发现在样本数量比较多时,财务指标对预测具有一定的可信度[2]。(3) 神经网络法,20世纪80年代末和90年代初,随着信息技术的发展,神经网络方法引入了信用评级,并且它能解决非正态分布、非线性的信用分类问题,但它难以解决小样本数据、局部极小点、高维数、函数逼近与分类能力弱、学习速度慢等问题。(4) 市场价值KMV法,20世纪90年代后期出现了许多新的财务分类模型,最具代表性的有:KMV公司开发的KMV模型与JPMorgen银行1997年在VaR模型的基础上建立的CreditMetrics模型。但CreditMetrics模型有很多参数需要确定,如等级迁移矩阵、资产之间的相关系数、远期收益率等,这些参数来自长时期统计数据积累,目前中国大陆还少有类似的统计资料。我国学者对财务预警的研究,是从20世纪90年代中后期开始的。朱顺泉(2009)应用期权定价方法对上市公司财务分类问题进行了初步研究[3]。孙林(2022)基于一般均衡分析模型,论述发债企业经济类型、行业属性、业务开展情况等对债券违约的影响。然后基于2014~2020年我国上市公司财务数据构建三组面板数据模型,发现企业杠杆水平、多元化经营和行业差异等指标对企业债券违约率存在显著影响,高杠杆和多元化经营策略会不同程度削弱发债企业主营业务竞争力对债券违约的抑制效果[4]。在运用Logistic模型方面,程昊(2020)基于企业内外部风险影响因素,构建风险识别指标体系,使用Logistic模型识别债券违约现象,效果较好[5]。在Z-score模型运用方面,何鑫超(2022)通过紫光集团财务状况和Z值检测证明了紫光集团在发生违约前就具有很高的债券违约风险[6]。黄卿(2018)等人采用沪深300股指期货1分钟高频数据为研究对象,对比了SVM、XGBoost和神经网络模型的预测性能,研究结果表明,XGBoost算法在预测准确率上表现最为出色[7]。唐一峰(2021)以贷款发放时间、债务收入比、信贷周转余额、分期付款金额等因素作为评价指标,并利用AUC值作为评价指标进行对比分析,比较分析XGBoost和LightGBM算法在贷款违约预测中的效果。研究发现,在预测准确性方面,XGBoost算法略胜一筹[8]。黄颖和杨会杰(2021)聚焦于黄金价格的涨跌趋势预测,利用XGBoost算法进行特征优化,并与LSTM算法进行了对比[9]。王怡宁(2021)将高频数据作为研究对象,并得出结论:高频因子在XGBoost算法预测中展现出更高的准确度[10]。
综上所述,对财务预警的研究,基本上都是经典的、定性分析、统计分析和神经网络方法来完成的,这些方法难以解决运行效率低、计算速度慢、学习效率低、缺乏交叉验证、过拟合、无自动筛选、预测精度低等方面的问题,对于复杂的金融市场则需要探索新的财务预警方法来解决这些问题。而基于统计学习理论的XGBoosts算法来建立财务预计建模,能够有效解决运行效率低、计算速度慢、学习效率低、缺乏交叉验证、过拟合、无自动筛选、预测精度低等方面的问题,因此,本文在继承和综合国内外现有研究成果的基础上,试图以Wind上市公司财务指标数据库为数据样本,将XGBoosts算法应用于上市公司的财务预警建模,并进行应用研究。
3. XGBoosts算法及优势分析
3.1. XGBoost算法
XGBoost是eXtreme Gradient Boosting的简称,即扩展梯度提升算法,是GBDT (Gradient Boosting Decision Tree)的拓展和改进,由学者陈天奇在2014年首次提出。基础理论是Gradient Boosting模型,XGBoost每一步迭代都产生一个弱预测模型,然后加权累加到总模型中,然后每一步弱预测模型生成的依据都是损失函数的负梯度方向,这样若干步以后就可以达到逼近损失函数局部最小值的目标。它的基学习器除了可以是决策树,也可以是线性分类器。这里主要以决策树为基学习器进行分析。
基本的决策树模型表达式为:
,式中
代表着不同的决策树,U则为所有的决策树集合,w为每一颗决策树对应的叶子权重,q为对应的树结构。目标函数包括两部分:
,式中,第一部分
是预测值
和目标真实值y之间的误差,第二部分是每颗决策树的复杂度的总和。该公式决策树模型中的目标函数无法用随机梯度下降GSD等传统方法优化,所以采用boosting方式训练,即每一次都在保留原模型上添加一个新函数
。选择在每一轮加入新函数是为了尽可能地让目标函数最大程度的减小。通过
可以优化这个目标函数,当误差函数
是平方误差时,可以直接改写目标函数;若是非平方误差的其他行数,则可以用泰勒展开获得近似的目标函数,移除常数项后,和是平方误差时的目标函数统一,即:
。
3.2. XGBoost算法优势分析
和传统的统计方法、神经网络法、决策树和GBDT算法等相比,当数据量比较大时,计算速度会很慢,XGBoost改进了算法,并且调用CPU进行并行的多线程计算,引入了正则化项,在提高了计算速度的同时也可以提升精度。比较而言,XGBoost有如下的优点:(1) 并行多线程计算:我们知道,传统决策树最耗时的步骤是对特征值进行排序。虽然Boosting算法都是顺序处理的,但XGBoost在迭代之前,先存为block结构进行预排序,然后在之后的每次迭代中重复使用该结构,降低了模型的计算总量,XGBoost的并行处理相比GBDT模型大大提高了运算能力。(2) 开放性:用户可以在使用XGBoost模型时自行定义优化标准和目标,减少了使用模型时受到的限制。(3) 缺失值处理:当样本存在缺失值时,XGBoost能自动学习分裂方向,同时在未来处理缺失值时可应用该处理方法。(4) 提高学习效率:XGBoost在每次迭代之后,会为叶子结点分配学习速率,减少每棵树的影响,降低每棵树在模型中的权重,为后面深度算法学习提供更好的空间。(5) 正则化:在GBDT模型中,没有正则化,导致模型的过拟合度偏高,而XGBoost模型在处理时会引入正则项,提升算法结果的正则化,减少了算法的过拟合现象。(6) 交叉验证:方便选择最好的参数,比如你发现30棵树预测已经很好了,不用进一步学习残差了,那么停止建树;(7) 列抽样:XGBoost借鉴随机森林的做法,支持列抽样,这样不仅能防止过拟合,还能降低计算。
4. 变量选择与建模样本
在WIND财务分析指标中,从盈利能力(30)、收益质量(5)、资本结构(17)、偿债能力(31)、营运能力(13)、现金流量(11)六个维度方面选取了107个财务指标变量。在使用传统的逻辑回归方法构建财务预警模型时,如果自变量较多,不需将全部的自变量加入到分析模型中进行拟合训练,可以先对自变量集合进行筛选,挑选一些合适的自变量放入模型。一般通过以下几个因素进行筛选:变量的预测能力、变量的鲁棒性(即变量健壮性Robust,数值长时间保持相对稳定)、变量的简单性(易于获得和使用)、变量的易理解性等。XGBoost算法具有自动筛选自变量的功能,只需把自变量放进模型里,会自动选出有用的自变量。通过使用XGBoost算法的训练结果发现:XGBoost算法里使用了大于5次的特征有这些指标:主营业务比率、留存收益占总资产比率、EBITDA占营业总收入比率、净资产收益率(加权)、CRGS占营业收入比重、长期总策适合率、净资产收益率(扣除/平均)、营运资本占总资产比率、资本固定化比率、NOCF占非流动负债比率、销售毛利率、有形净值债务率等,说明这些特征重要性比较高(注:这里EBITDA是息、税、折旧及摊销前利润,NOCF是经营活动产生的现金流量净额,CRGS是销售商品提供劳务收到的现金)。
将WIND财经数据库中未被ST的股票共2028家、经筛选过后的ST股票共127家,总计2155个样本随机打乱,然后按照7:3的比例划为训练集和测试集,其中训练集1508个,测试集647个。
如果将已经实际发生财务困境的年度定义为T年,那么ST公司的T-3的财务信息作为研究的样本,即若2018年被ST的公司,则选择2015年的财务信息数据作为X数据。非ST公司选择2015年的财务数据作为X数据。Y的定义,ST为1,非ST为0。
5. XGBoost模型的迭代与优化参数
通过不断迭代和优化,最终得到一个效果比较好和稳定的XGBoost模型,该模型的具体参数如下:
model = XGBClassifier (learning_rate = 0.05, n_estimators=42, max_depth = 3, min_child_weight = 1, gamma = 0, subsample = 0.6, colsample_bytree = 0.9, objective = 'binary: logistic', nthread = 4, scale_pos_weight = 1)
model.fit (train. iloc [:, 1:], train ['y'], eval_metric = "auc", eval_set = eval_set, verbose = True)
learning_rate:学习率,控制每次迭代更新权重时的步长,默认0.3。值越小,训练越慢。典型值为0.01~0.2;
n_estimators:总共迭代的次数,即决策树的个数,论文用了42棵决策树;
max_depth:树的深度,值越大,越容易过拟合;值越小,越容易欠拟合。这个参数的取值最好在3~10之间。本文选取值为3;
min_child_weight:叶子节点最小权重,值越大,越容易欠拟合;值越小,越容易过拟合(值较大时,避免模型学习到局部的特殊样本)。本文选了一个比较小的值1,因为这是一个极不平衡的分类问题。因此,某些叶子节点下的值会比较小;
gamma:惩罚项中叶子结点个数前的参数,起始值也可以选其它比较小的值,本文选0;
subsample:0.6,随机选择60%样本建立决策树;
colsample_bytree:0.9,随机选择90%特征建立决策树;
objective:'binary: logistic',定义学习任务及相应的学习目标,本文选取的目标函数二分类的逻辑回归问题,输出为概率;
nthread:这个参数用来进行多线程控制,应当输入系统的核数,如果希望使用cpu全部的核,就不要输入这个参数,算法会自动检测;
scale_pos_weight:在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛;
其它参数均使用默认参数。
6. 基于XGBoost模型的上市公司财务预警结论
6.1. AUC评价角度的研究结论
机器学习实践中分类器常用的评价指标就是AUC,AUC值的含义是:如果一个分类器能输出得分score,调整分类器的阈值,把对应的点画在图上,连成的这条线就是roc,曲线下的面积就是AUC。
首先AUC值是一个概率值,当随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的score值将这个正样本排在负样本前面的概率就是AUC值。当AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好地分类。
计算出训练集和测试集按逻辑回归以及XGBoost模型分别的AUC值,结果如表1。
Table 1. AUC values of the training and test sets of T-3 data via logistic regression and XGBoost
表1. T-3数据训练集和测试集经由逻辑回归和XGBoost的AUC值
AUC |
逻辑回归 |
XGBoost |
train |
0.888 |
0.958 |
test |
0.899 |
0.94 |
从表1可以看出:(1) XGBoost的AUC值即便在结果较差的测试集也高达94%,这说明利用XGBoost模型进行预警可以取得很好的效果;(2) XGBoost模型的AUC无论是训练样本还是测试样本,都远远大于逻辑回归模型的AUC值;(3) XGBoost的训练和测试样本的AUC相差不大,说明模型很稳定,没有过拟合情况。
6.2. 精确率和召回率评价角度的研究结论
通过混淆矩阵计算出来的不仅是AUC,还有精确率和召回率等可用来评判模型的好坏。我们定义:TP:样本为正,预测结果为正;FP:样本为负,预测结果为正;TN:样本为负,预测结果为负;FN:样本为正,预测结果为负。则精确率(precision):TP/(TP + FP),正确预测为正占全部预测为正的比例;召回率(recall):TP/(TP + FN),正确预测为正占全部正样本的比例。
当评价ST时,精确率(precision)表示在预测为ST的样本中,真正是ST的样本所占的比例。召回率(recall)表示所有真正是ST的样本中,预测为ST所占的比例。
当评价非ST时,精确率(precision)表示在预测为非ST的样本中,真正是非ST的样本所占的比例。召回率(recall)表示所有真正是非ST的样本中,预测为非ST所占的比例。
以预测概率0.4为阈值,超过0.4预测为ST公司,其他的预测为非ST公司。
逻辑回归和XGBoost的精确率与召回率的结果分别如表2和表3所示。
Table 2. Accuracy and recall of logistic regression results for T-3 data
表2. T-3数据逻辑回归结果的精确率和召回率
预测真实 |
非ST |
ST |
recall |
非ST |
2016 |
30 |
0.99 |
ST |
84 |
43 |
0.34 |
precision |
0.96 |
0.59 |
|
Table 3. Accuracy and recall of the XGBoost model results for the T-3 data
表3. T-3数据XGBoost模型结果的精确率和召回率
预测真实 |
非ST |
ST |
recall |
非ST |
2016 |
12 |
0.99 |
ST |
69 |
58 |
0.46 |
precision |
0.97 |
0.83 |
|
从表2和表3可见:(1) 从模型的评价指标来看,XGBoost模型对于样本数据在AUC、精确率、召回率三个评价指标都要优越于逻辑回归的结果,模型预测的结果也更为精确;(2) XGBoost模型预测ST的精确率0.83远大于逻辑回归的精确率0.59;(3) XGBoost模型预测ST的召回率0.46远大于逻辑回归的召回率0.34。
6.3. 数据时间维度对于结果影响的研究结论
从逻辑上,越接近企业财务异常年度,企业经营往往已经开始出现问题,数据通常越糟糕,也越能反映企业的经营状况趋于恶化,而偏离企业出现问题的年份越久远,企业往往还没意识到经营状况或者外部坏境的恶化,预警指标也不能显著揭露风险,所以可以理解T-3的数据预测显著性要好于T-4或者更早的数据。
以T-4数据为例,其分别采用逻辑回归模型和XGBoost模型结果的评价指标情况如表4~6。
Table 4. AUC values for the T-4 data using logistic regression and XGBoost-model results
表4. T-4数据用逻辑回归和XGBoost模型结果的AUC值
AUC |
逻辑回归 |
XGBoost |
train |
0.822 |
0.915 |
test |
0.789 |
0.864 |
Table 5. Accuracy and recall of logistic regression results for T-4 data
表5. T-4数据逻辑回归结果的精确率和召回率
预测真实 |
非ST |
ST |
recall |
非ST |
2018 |
10 |
0.995 |
ST |
100 |
27 |
0.21 |
precision |
0.95 |
0.73 |
|
Table 6. Accuracy and recall of the XGBoost model results for the T-4 data
表6. T-4数据XGBoost模型结果的精确率和召回率
预测真实 |
非ST |
ST |
recall |
非ST |
2014 |
14 |
0.99 |
ST |
79 |
48 |
0.38 |
precision |
0.96 |
0.77 |
|
从上面的数据分析结果来看,在AUC、精确率和召回率三个评价指标方面,T-4的数据的有效性和显著性要远落后于T-3数据,T-4数据相比T-3数据预测结果不足以推断企业T年的财务风险状况,继而也无法去可靠地分析企业T年被出现财务危机的可能性。
基金项目
本研究为广东省重点建设学科科研能力提升项目(项目编号2024ZDJS113);广州华商学院应用型示范专业–金融科技专业建设项目HS2024SFZY08;广州华商学院金融科技专业核心课程教研室建设项目HS2024ZLGC43等阶段性成果。