APP下载

基于XGBoost算法的信用债违约预测模型

2019-11-04周荣喜彭航李欣宇闫宇歆

债券 2019年10期
关键词:预测

周荣喜 彭航 李欣宇 闫宇歆

摘要:本文首先對近年来我国信用债违约风险事件进行了统计分析,归纳出造成违约的四类风险,利用随机森林算法抽取了债券违约的重要特征;然后基于XGBoost算法建立了债券违约风险预测模型,利用主成分分析方法,再结合经济逻辑分析,提取出6个债券违约风险因子,并阐释了违约风险因子的作用机制。实证结果表明,本文所构建的违约预测模型对信用债违约的预测具有较高的准确性。

关键词:XGBoost算法  信用债  违约风险  预测

随着我国债券市场不断发展,债券违约等风险事件也有所增多。如何找出债券违约的潜在诱发因素,据此防范诱发系统性风险显得至关重要。

关于债券违约的主要研究成果及本文研究思路

近年来,国外学者在债券违约相关方面进行了一定的理论与实证研究。Kay等(2014)用美国1866—2010年公司债券违约数据研究了债券市场危机的宏观经济影响因素;Azizpour、Giesecke和Schwenkler(2018)研究了美国公司债违约聚集的原因,发现违约传染是其中很重要的一个原因。随着2014年我国债券刚性兑付的打破,国内学者也开始研究债券违约问题。如曹萍(2015)基于经典的KMV模型研究了地方政府债券违约风险;黄小琳、朱松和陈关亭(2017)研究了债券违约对涉事信用评级机构的影响。然而,上述研究重点关注债券违约的事后分析,缺乏前瞻性。

与此同时,国内外学者也运用多种模型进行信用债违约预测。如Ohlson(1980)首次提出逻辑回归预测违约概率;Lombardoa(2018)采用“多观测”和“多维”数据清理方法,将真实点对点交易数据输入现代机器学习算法LightGBM中进行计算,得到的结果对实际情况具有较好的拟合效果;胡蝶(2018)运用随机森林模型对债券违约进行分析,找出了6个重要特征(即筛选出来的变量)。吴世农和卢贤义(2001)选取21个财务指标为变量,进行判别分析、多元回归分析、Logistic回归分析,建立了三种财务困境模型;张双长和张旭(2017)研究了违约因素如何分解,发现按资金偿付来源划分,可分为内源性资金、外源性资金、协调性资金,债券能否按期兑付受经营状况、融资环境及非经济因子共同影响。

现有研究对我国债券违约预测的成果不多,主要是因为债券违约事件近几年才相对较多出现,现有研究所采用的预测方法也相对简单。

本文将按以下结构进行研究。一是简述债券违约现状,并对造成债券违约的风险源进行划分,基于这些风险源收集原始数据。二是介绍研究过程中将应用到的随机森林算法和XGBoost+LR1模型。三是报告实证过程及结果。实证过程为先用随机森林算法筛选出重要的变量,对其中的离散型变量运用频率表进行分析,对其中的连续型变量进行主成分分析。继而将这些重要变量输入到XGBoost算法中完成特征变换,再将特征变换后得到的新特征输入到LR模型中进行预测。然后对预测结果进行评价(见图1)。四是得出结论、提出建议。

我国信用债违约现状与风险因素

(一)债券违约现状

根据数据库Wind的划分标准,本文所指违约事件包括信用债的本息展期、交叉违约、担保违约、技术性违约、提前到期未兑付、未按时兑付本金等情况。自2014年以来的统计数据显示,2018年违约事件相对较多(见图2)。

笔者认为,受融资环境恶化、中美贸易战及金融监管趋严等因素叠加影响,国内外经济环境日益趋紧,融资渠道收窄,因此2018年信用债违约风险集中显现。

(二)债券违约风险因素分析

本文将从内外两个方面考虑债券违约原因。其中,内部原因主要与企业自身经营相关,包括公司治理、相关方支持、经营多元化等;外部原因与融资环境和政策相关,主要与公司增发债券的难易程度及公司再融资周转状况相关。

根据光大证券关于信用债违约的研究报告(2018),发行主体经营状况表现不佳是债券违约的主要诱因,即在2018年之前,内因对信用债违约事件的解释力度较强。因此本文重点考虑违约的内部原因,梳理出四类主要内部风险因素:民企治理风险、国企治理风险、相关方支持风险和公司经营风险。

表1中的风险因素均会对公司内部经营状况及财务状况产生影响,并进而影响外部因素,如银行授信额度、第三方担保额度,从而对发行主体外部筹资能力产生影响。同时,外部融资环境等因素也会对公司再融资难度产生影响,表现为银根缩紧时银行惜贷,进而对债券本息兑付产生影响。由此可知,导致债券违约的因素环环相扣。

算法与模型介绍

(一)利用随机森林算法进行降维

原始数据所含变量多、维度高,为了去除冗余信息、提高效率,本文采用随机森林算法对数据集进行降维,过滤掉那些对债券违约几乎没有影响的变量。

随机森林算法是一种基于Bagging算法的决策树集成学习算法,该算法基于信息增益2计算变量重要性程度,并进行排序,可以从原始特征中筛选出重要性排名靠前的变量。

(二)利用XGBoost算法进行特征变换

特征变换即通过线性或非线性的方式,将原变量变换成更加合适的新变量,变换后得到的新变量称为特征。特征变换的目的在于从原始变量中获取潜在的独立成分,从而提取隐含信息。

本文利用XGBoost算法进行特征变换。该算法是一种基于Boosting算法的回归决策树集成学习算法,其预测精度高、稳定性好,对数据中的噪声、多重共线性等问题敏感度较低。该算法在目标函数中引入正则化(regularization)项,有着较好的泛化能力与拟合能力。通常,运用XGBoost算法进行特征变换的步骤如下。

第一步,利用分布向前算法训练XGBoost。

先构造 函数列,其中:

通过优化目标函数来求解参数 :

其中, 代表单棵决策树。

在目标函数 中, 为一常数惩罚项。 为损失函数,代表预测的精确度。 为正则化项,式中前一项反映了树结构的复杂度, 为树结点数;后一项反映了权重整体的平滑程度, 为结点权重;J为常数, 、 为参数,体现了两项间的权衡。

需要通过反复迭代构造函数 ,训练参数 ,直至训练好 。

第二步,将数据集代入训练好的模型中。对每一个样本 ,XGBoost算法可以生成一系列叶子结点的值,以这一列值(向量)作为特征变换后的数据。如此得到特征变换后的数据集。

(三)利用XGBoost+LR模型进行预测

将特征变换后的数据集代入LR模型中,得到最终预测结果。

LR数学模型为:

其中,wx分别表示系数和变量,PY=1︱x)表示违约率。

XGBoost+LR嵌套结构如图3所示。将原数据输入到XGBoost算法,通过特征变换后产生一系列新的變量 ,即特征变换后的数据。再将这一系列新的变量输入到LR中,完成最终的预测。

以上操作过程相当于对原信息进行分解再组合。这既弥补了XGBoost这类提升树算法低估类别型变量重要性的弱点,也实现了自动提取特征的功能。

实证研究过程

(一)数据描述与预处理

根据风险因素分析结果,本文筛选出43个或有潜在影响变量,部分变量如表2所示。同时,选择在2013年到2018年10月22日期间到期的债券,共25907个样本,其中90个样本违约,占总样本的比例为0.347%。每个样本均有43个变量。

为缓解样本中违约与非违约数据极度不平衡的问题,对原始数据集中非违约债券进行欠采样,对违约债券进行重复采样,并按均值填补数值型变量中的缺失值,按原概率填补类别型变量中的缺失值,对类别型变量进行one-hot编码。

(二)利用随机森林算法抽取重要特征,并提取债券违约因子

利用随机森林算法计算各变量的重要性得分。以0.0075为标准,去掉低于该标准的变量——这意味着该变量对判断债券是否违约所能提供的信息甚微,将其余变量选入重要特征集中。将随机森林算法输出的重要特征集分成两部分——数值型和类别型,分别进行债券违约因子挖掘。

1.对数值型特征的处理

对数值型特征进行主成分分析,生成碎石图(见图4)及主成分结构表(见表2)。图表数据显示,所选取的前4个主成分加总几乎能够解释100%的信息。

主成分结构表显示了变量对于主要因子的解释力度。表2显示,第一主成分受应收账款周转天数和营业周期影响较大。应收账款周转天数和营业周期体现了公司获取现金流的能力,因此本文将第一主成分命名为“周转能力因子”。第二、第三主成分相结合,衡量公司的筹资能力、投资盈利能力,因此本文将第二、第三主成分分别命名为“筹资活动现金流量因子”与“投资活动现金流量因子”。第四主成分受经营活动产生的现金流量影响大,因此将其命名为“经营活动现金流量因子”。

整体来看,可以认为在公司层面上,现金周转能力、投资盈利能力、筹资能力、公司主营业务盈利能力这几项,都与债券是否违约有很强的关系,其分别对应周转能力因子、投资活动现金流量因子、筹资活动现金流量因子和经营活动现金流量因子。

2.对类别型特征的处理

关于类别型特征,主要考察6个特征重要性得分大于0.0075的变量,如图5所示。继而通过频数统计,结合其经济金融逻辑进行分析。

图5  特征重要性得分

(编辑注:横坐标下的文字“债券年份”“评级机构”“大股东类型”“是否含权债券”分别改为“债券存续期间”“债项评级”“第一大股东类型”“是否为含权债券”)

从图5可见,省份、债券存续期间、所属行业这三个特征对债券违约的影响较大。其背后逻辑在于省份、债券存续期间、所属行业等因素体现了宏观经济形势与行业景气度,这些变量作为外部因素或宏观因素,直接影响公司的经营情况。

债项评级也有着重要的影响。总体上而言,机构对债券的评级能够较为有效地区分出违约风险较大的债券。

从Wind的中债债券一级分类、第一大股东类型来看,这两项对债券是否违约也有显著影响,具体如表3、表4所示。从违约概率来看,第一大股东为外资企业、个人的债券出现了更多的违约案例,或许是因为这两类债券在政府救助方面得到的支持较少。

表3  中债债券一级分类频率统计表

中债债券一级分类

违约债券数量(只)

未违约债券数量

(只)

违约债券百分比(%)

中期票据

26

5244

0.493

短期融资券

23

7672

0.299

企业债券

15

2184

0.682

资产支持证券

11

3670

0.299

证券公司短期融资券

8

2486

0.321

集合票据

7

301

2.273

政府支持机构债

0

55

0

超短期融资券

0

30

0

国际机构债券

0

9

0

数据来源:Wind

表4  第一大股东类型频率统计表

第一大股东类型

违约债券数量

(只)

未违约债券数量

(只)

违约债券百分比(%)

外资企业

2

85

2.299

个人

24

1874

1.264

民营企业

25

2895

0.856

其他企业

1

152

0.654

中外合资企业

3

580

0.515

地方国有企业

23

8627

0.266

外商独资企业

1

480

0.208

公众企业

2

1058

0.189

中央国有企业

9

5798

0.155

集体企业

0

101

0

其他国有企业

0

1

0

数据来源:Wind

总的来看,可以认为省份、债券存续期间、所属行业、第一大股东类型对债券是否违约有较强影响,这些变量可归纳为两个宏观因子:政策支持度因子和经济形势因子。

(三)从新变量集中挖掘违约因子作用机制

目前已经找到6个因子,下文将考察这些因子与债券违约间的逻辑关系。

为了提高泛化能力,本文基于重要特征数据集,先对数据进行再抽样,再用XGBoost算法进行训练,将全部违约债券样本输入到训练好的XGBoost算法中,得到叶子结点标记矩阵,再利用该叶子结点标记的数据矩阵进行规则挖掘。在叶子结点矩阵中,每个变量都代表某个树的某一叶子结点,每个叶子结点代表的是一小部分特征空间(即一条决策树中的路径)所对应的值,即可以理解为一条规则。

输入违约债券样本后,对于有的树来说,违约债券样本落入各个结点的数量相差不大。但对于有的树而言,大部分违约债券都落在了某一两个叶子结点中,这说明大部分违约债券都遵从这棵树的这条路径,服从同一规则。输出它们的叶子结点对应的路径,即挖掘出了初步的债券违约规则。考虑到各树相互间有联系,对初步得到的债券违约规则结合实际分析,可得到最终的规则。然后,结合实际分析、配合违约因子和违约规则,可得出债券违约逻辑。

图6给出了XGBoost算法训练出的第10棵决策树局部结构,其XGBoost+LR模型对全部负例预测正确率为100%,对全部正例预测正确率为98.994%。在这棵树上,输入违约债券样本后,有70%的违约债券落在第77号结点中,表明70%的违约债券都遵从第10棵树第77号结点所代表的规则。

本文将数据划分为训练数据集与测试数据集。这里采用随机方式进行划分,从总样本中随机抽取30%的样本作为测试集,余下作为训练集。训练集用于训练模型,测试集用于预测。进行5000次随机划分,最后综合5000次预测结果来评价模型。这样随机划分数据集的好处是,相对于传统的按时间段人为主观划分数据集而言,计算出的模型不会受到主观影响。

本文采用AUC对模型的预测能力进行评价。AUC是ROC(Receiver Operating Characteristic)曲线所包围的右下部分面积,对于不平衡数据集,能够较好地评价模型的预测能力。AUC取值在0~1,越接近1,说明模型预测能力越强。

XGBoost+LR、LR、XGBoost三者的ROC曲线与AUC值如图7所示。图7显示,XGBoost+LR较单独的XGBoost与LR而言,其AUC值有显著提高,这说明XGBoost+LR组合有效。而且XGBoost+LR的AUC值极高,说明该模型预测结果相当准确。

(五)债券违约因子与违约逻辑解释

这样,最终可确定6个债券违约因子,它们分别是:周转能力因子、投资活动现金流量因子、筹资活动现金流量因子、经营活动现金流量因子、政策支持度因子和经济形势因子(见图8)。

按资金来源划分,债券偿付资金可分为三部分:内部经营资金、外部筹集资金、协助救济资金。三部分现金流与债券违约与否的内在逻辑如下:内部经营资金是发行人自身经营资金及可调配使用的集团内部资金,通常由公司经营状况所决定,体现了公司盈利能力、现金流、资产结构的好坏。外部籌集资金是发行人主动向外部筹集的资金,包括但不限于银行贷款、信托融资、股权融资。外部融资受到公司经营状况及融资环境的共同影响。协助救济资金是在发行人偿付出现困难时,通过多方协调可能争取到的资金。协助救济资金出现的情形通常为:地方政府出于稳定金融风险考虑,经多方协调后,由国企出资协助企业解决短期融资来源问题。这通常与发行人所在区域金融环境及政府干预行为有关,受地方政府政策等因素影响,其影响程度难以度量。

周轉能力因子、投资活动现金流量因子、筹资活动现金流量因子、经营活动现金流量因子与企业内部经营资金、外部筹集资金密切相关。省份、债券存续期间、所属行业、第一大股东类型则属于宏观层面因子,它们在一定程度上反映了政策支持态度与经济形势好坏。政策支持度因子和经济形势因子会对企业投资、主营业务产生影响,并会直接影响协助救济资金。

结论

本文基于我国近年债券违约数据,通过随机森林算法筛选重要特征,利用XGBoost算法进行特征变换,配合逻辑回归,构建了债券违约预测模型。验证结果显示,该模型有着较好的预测效果。本文得出了6个债券违约因子,并基于模型实证结果,得出债券违约逻辑框架。

针对上述研究,本文提出如下建议:

一是债券主体违约通常由个体因素和宏观因素叠加所致。个体因素通常为经营状况不佳等,并受潜在的治理风险影响。而宏观因素通常影响外部支持、外部救济等环节。在宏观形势不明朗时期,债券投资者更要关注诱发债券违约的内部因素,积极关注企业财务和公司治理情况。

二是企业要做好现金流管理,做好主营业务,完善企业内部风险控制制度,合理进行投资,以防投资亏损造成违约风险上升。

三是金融监管部门要特别注意企业的现金管理能力、投资盈利情况、主营业务情况,甄别出高违约风险企业,及时应对并做好风险防范。[本文为“中债估值杯”征文获奖文章,且得到国家自然科学基金项目(71871062)和教育部人文社会科学研究规划基金项目(16YJA630078)资助]

注:

1.XGBoost为机器学习经典算法;Logistic Regression(文中简称LR)指逻辑回归模型,是经典线性回归模型之一。

2.信息增益为以某特征划分数据集前后熵的差值。熵是用于度量随机变量不确定性的统计量。

作者单位:对外经济贸易大学

责任编辑:刘颖  罗邦敏

参考文献

[1]曹萍. 基于KMV模型的地方政府债券违约风险分析[J]. 证券市场导报, 2015, (8):39-44.

[2]胡蝶. 基于随机森林的债券违约分析[J]. 当代经济, 2018, (3):28-30.

[3]黄小琳, 朱松, 陈关亭. 债券违约对涉事信用评级机构的影响——基于中国信用债市场违约事件的分析[J]. 金融研究, 2017, (3):130-144.

[4]吴世农, 卢贤义. 我国上市公司财务困境的预测模型研究[J]. 经济研究, 2001, (6):46-55.

[5]张双长, 张旭. 违约率的三因子模型[J]. 金融市场研究, 2017, (8):59-65.

[6]张旭, 刘琛. 信用债违约共性因素探索——信用债违约研究[R]. Wind, 2018.

[7]Azizpour S, Giesecke K, Schwenkler G. Exploring the sources of default clustering[J]. Journal of Financial Economics, 2018, 129:154-183.

[8]Lombardo G, Uhlig H. A Theory of Pruning[J]. International Economic Review, 2018, 59(4): 3397-414.

[9]Ohlson J A. Financial Ratios and the Probabilistic Prediction of Bankruptcy[J]. Journal of Accounting Research, 1980, 18(1):109-131.

猜你喜欢

预测
选修2—2期中考试预测卷(B卷)
选修2—2期中考试预测卷(A卷)
选修2—2期中考试预测卷(A卷)答案与提示
选修2—2期中考试预测卷(B卷)答案与提示
“预测”得准
2017年高考选修考点预测
2017年高考三角热点考向预测
电力系统短期负荷预测方法与预测精度
《福彩3D中奖公式》:提前一月预测号码的惊人技巧!
预测高考