您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[长城证券]:投资策略研究:上市公司债券信用风险识别模型 - 发现报告

投资策略研究:上市公司债券信用风险识别模型

金融2025-01-07长城证券我***
投资策略研究:上市公司债券信用风险识别模型

传统的债券违约模型主要分为线性模型和非线性模型。线性模型如Altman Z-score通过财务比率得出综合风险评分,简便易用,但财务指标有限,可能无法全面反映债务人状况。非线性模型如Merton模型基于期权定价理论,能够更好地捕捉资产波动,但对参数依赖较大,且忽视跳跃性事件。与之相比,机器学习在债券违约风险评估中具有优势,能够通过自动化数据分析挖掘复杂的非线性关系,处理大规模数据和缺失值,并实时适应市场变化。机器学习的强大自适应性和精确性使其成为传统违约模型的重要补充,提高了预测准确性并应对市场复杂性。上市公司债券信用风险识别不仅有助于债券市场的投资,同样能够作为一个良好的股票筛选因子。 在数据集的时间区间划分上,为了确保训练集和测试集比例接近7:3,我们选择2022Q1的财报数据作为训练集,并使用2024Q2的财报数据作为测试集。同时,为了提高样本的针对性,在正常样本中仅保留公司债和可转债两类,从而降低数据异质性,优化模型的泛化性能。特征选取方面,综合考虑企业运营与债券特性,报告选取了财务、债券本体以及股票交易三大类指标。 针对数据不平衡问题,报告中采用的欠采样策略不仅有效平衡了数据分布。 通过这种处理方法,模型在数据集中对少数类(如违约样本)的识别能力显著增强。同时,在样本数量有限的情况下,尽量保留了重要的异质性信息,确保模型能够捕捉到关键的风险特征。 我们使用了逻辑回归、随机森林、支持向量机、XGBoost以及LightGBM五个分类模型。由于支持向量机必须使用统一量纲后的数据,在检验五个模型的情况后我们发现统一量纲的操作将会显著提高每个模型的召回率,而这有可能是由于引入未来数据导致的。为了避免未来函数的问题,我们将不再考虑支持向量机作为信用风险识别模型。在剩余的四个模型中,随机森林不论是在AUC还是召回率上都具备明显的优势,AUC达到0.90,召回率达到0.84。 使用随机森林作为预测最新一期债券信用风险的模型,选取2024年11月1日至2024年12月20日的信用风险样本以及2024Q3截面的正常样本构成验证集,对于已经产生的信用风险事件,随机森林均给出了相对准确的分类(预测概率均大于50%),并且调整概率均大于50%。对于截面上存续的可转债,共有11支可转债的违约调整概率超过50%。 风险提示:数据选取未使用全部数据,可能导致样本偏差;特征选取存在一定主观性;数据不平衡采样方法可能导致信息丢失;历史数据无法完全预测未来结果;模型存在失效可能性。 使用机器学习识别信用风险 传统的债券违约模型大致可分为线性模型和非线性模型两大类。线性模型中,最具代表性的如Altman Z-score模型,该模型通过计算多个财务比率并加权得出一个综合风险评分,简便易用,但其局限性也较为明显,主要在于选取的财务指标较少,可能无法全面反映债务人的财务状况。非线性模型方面,最具代表性的为Merton模型,它基于期权定价理论,将企业违约定义为企业资产价值小于债务账面价值,使用Black-Scholes公式对企业的股票和负债进行估值,从而推算违约概率。此模型能够较好地捕捉资产价格波动,但在实际应用中对参数的依赖较大,且未能考虑跳跃性事件的影响。 机器学习作为对债券市场传统违约模型的重要补充,主要体现在其强大的数据处理能力和自适应特性。传统模型通常依赖于固定的财务指标和简单的假设,可能难以捕捉债券违约风险中潜在的复杂非线性关系。而机器学习模型能够自动从大量历史数据中挖掘潜在的规律和模式,尤其在面对非线性特征时表现出色。除此之外,机器学习方法能够有效处理大规模数据和缺失值,避免了传统模型在数据不完全时的局限性。由于其强大的自适应性,机器学习模型可以随着市场环境的变化实时更新,提供更加精确和个性化的风险评估。这些优势使得机器学习在债券市场中的应用不仅提高了预测的准确性,还能够更好地应对市场的动态变化和复杂性,从而成为传统违约模型的有效补充。 为了便于读者理解报告的内容,我们在开篇首先梳理整个模型从搭建、训练到预测的过程。整个过程大致分为4步,观察真实世界中数据的分布情况并构造适应于分类学习模型的数据集,选取不同维度的因子,使用不同的分类模型(如逻辑回归、支持向量机、随机森林等)训练并测试模型,并给出最新一期的预测情况。 图表1:通用机器学习流程图 上市公司债券信用风险识别的意义不仅仅停留在于对于债券风险的规避,其同样可以用于对上市公司股票的筛选。如果将上市公司对应的债券信用风险作为一个筛选股票池的因子的话,其同样具有良好的效果。统计2016年5月1日至2024年8月31日之间发生信用风险的债券对应的上市公司在财报截止日之间的表现(假设某支债券发生信用风险的日期为2016年5月13日,则对应的区间为2016年5月1日至2016年8月30日),以中证800作为基准,超额收益为负的占比为73.03%,超额收益的中位数为-14.18%。 这就意味着可以通过剔除预测可能发生信用风险的上市公司来进行股票策略的增强。 图表2:发生信用风险的债券对应的上市公司在财报截止日之间的表现统计 数据处理与特征选择 数据截面选取 信用风险样本与正常样本的不平衡性 在本篇报告中定义的信用风险事件包括两个大类:一个是发生实质性违约事件的债券,包括本息违约、提前到期未兑付、展期资金未兑付等;另一个则是信用评级下调事件。 在数据整理阶段,我们首先对信用风险样本进行梳理,并根据信用风险样本的分布情况从正常样本中“匹配”对应的子集。这一处理的核心原因在于,信用风险样本与正常样本之间存在严重的不平衡性。如果直接将全部正常样本纳入模型,数据的不平衡将显著影响模型的性能,使其倾向于预测多数类(即正常样本),从而削弱模型对少数类(即信用风险样本)的识别能力。 以2022年5月1日至8月31日的区间为例(2021年年报&2022年一季报截面),2022年4月30日存量上市公司信用债的数量为41365个,而在上述区间中发生信用风险的债券数量总计为243个,占全部信用债的比例约为0.59%。显然,如果将全部截面的正常样本全部纳入数据集,会造成严重的数据不平衡,从而影响模型的性能。因此,我们将首先处理信用风险样本,并将信用风险样本按照比例进行划分,进而确定使用的正常样本的截面。 违约以及评级下调数据处理 对于违约数据,首先在wind终端债券——信用债研究——债券违约——债券违约及展期大全中拉取特定时间内所有违约及展期的债券信息。本文研究从2015年年报及2016年一季报发布截止日期(2016年4月30日)开始,拉取2016年5月1日起至今所有违约及展期的债券,债券分类中剔除金融债。 对于评级下调数据,首先在wind终端债券——信用债研究——评级预警——债项评级调低债券拉取特定时间内所有评级下降债券评级调低对应的时间。本文研究从2015年年报及2016年一季报发布截止日期(2016年4月30日)开始,拉取2016年5月1日起至今所有债券评级下调债券分类中剔除国债、地方政府债、央行票据、同业存单以及金融债。 上述方法拉取的excel中并不包含债务主体的相关信息,为了便于后续因子数据的拉取,我们在excel中提取对应信息。由于wind无法直接通过债券代码提取对应债务主体代码,我们将其拆解为两步:1.提取债务主体中文简称;2.中文简称转换为wind代码。 针对同一债务主体在同一季度内有多个不同债券信用风险的情况,我们保留其中上市日期最早的债券的信用风险记录;针对同一个债券在同一个季度内的多条信用风险记录,保留违约日期最早的记录。 信用风险数据集划分 为了测试模型在完整截面数据(对全部)上的能力,我们单独保留最新截面(2024Q3财报截止日)作为验证集。对于剩余的信用风险数据,我们尝试找寻一个财报截止日截面,使得训练集与测试集的划分比例最接近7:3。根据计算,2016年5月至2024年10月的信用风险样本按7:3划分的时间节点为2022年8月29日,因此我们采用2022年一季报截面划分训练集以及测试集(对应信用风险样本区间为2022年5月至2022年8月)。 正常样本 根据上述信用风险数据集的划分,我们确定2022年一季报截面以及2024年中报截面分别作为训练集以及测试集的正常样本时间。由于正常样本数量较多,因此在正常样本中我们将仅保留公司债与可转债两个大类。 不平衡样本数据处理 在信用风险研究中,数据不平衡性是一个需要重点解决的问题。通常,违约样本相较于非违约样本数量极少,这种样本比例的不对称会导致预测模型偏向多数类(即非违约样本),从而降低对少数类(即违约样本)的预测准确性和识别能力。在处理这种不平衡问题时,常用的技术包括过采样(Oversampling)和欠采样(Undersampling)。 过采样通过增加少数类样本数量来平衡数据集,这可以通过重复少数类样本或生成合成样本(如使用SMOTE等方法)来实现。然而,过采样可能会导致模型过拟合,特别是在少数类样本数量本就稀少时,这种问题尤为明显。 欠采样则是通过从多数类样本中随机移除部分数据或基于某种策略选择子集,使多数类和少数类的样本数量相等或接近。虽然欠采样能够有效减少样本不平衡的影响,但同时也可能导致重要信息的丢失,尤其是在多数类样本中包含了大量有价值的异质性信息时。 为了在信用风险预测中尽可能保留与风险事件相关的重要信息,本文采用了一种基于欠采样的策略进行数据不平衡处理。在此过程中,保留所有违约样本(或信用评级被下调的债券样本),并从正常样本(非违约样本)中随机抽取数量相等的子集,构成与违约样本平衡的训练集。通过这种方法,既平衡了数据集的类别分布,避免模型过于偏向多数类,又尽可能降低因欠采样而丢失关键信息的风险。在这个系列报告中我们将统一使用RandomUnderSampler将正常样本的数量删减至与信用风险样本一致。 特征选取 在寻找特征时,首先是能够直观体现企业资本结构及运营情况的各项财务指标。借鉴国内多家信用评级公司的评级逻辑,分别选取反映企业偿债能力、盈利能力、成长能力的多项财务比率,进行上市公司财务状况的评价。其次,考虑到信用债自身的特性,选取和债券性质相关的指标,包括债券余额、票面利率、剩余期限、最新主体评级。最后,根据退市新规的条款,纳入交易性退市相关的股票量价信息,包括累计成交量、平均收盘价、累计收益等。 特征选取前,训练集/测试集/验证集的违约数据分别有358/149/5条;训练集/测试集/验证集的非违约数据分别有660/711/684条。 剔除掉缺失值占数据集数量超过百分之三的因子之后,训练集/测试集/验证集的违约数据分别有328/128/4条;训练集/测试集/验证集的非违约数据分别有632/686/662条。 图表3:债务信用风险识别模型因子选取 分类模型训练与测试 模型评估参数介绍 混淆矩阵(Confusion Matrix)是分类模型评估的一个重要工具,用于展示模型在各个类别上的预测结果与实际标签之间的差异。它通过四个基本值来描述模型的表现:真正例(TP),即预测为正类且实际为正类的样本;假正例(FP),即预测为正类但实际为负类的样本;真反例(TN),即预测为负类且实际为负类的样本;假反例(FN),即预测为负类但实际为正类的样本。混淆矩阵不仅可以帮助我们计算诸如精确度、召回率和 F1 分数等评价指标,还能直观地展示模型在不同类别上的分类效果,特别是在类别不平衡的情况下,提供比准确率更为全面的评估。 召回率,也叫真正率(True Positive Rate),是分类模型性能的一个重要指标,衡量模型正确预测正类样本的能力。其计算公式为:召回率=真正例/ (真正例+假反例)。召回率越高,说明模型能更多地识别出正类样本,适用于需要关注“漏检”问题的场景(如信用风险识别)。不过,召回率高也可能导致假阳性增加,因此通常需要与精确度(Precision)等其他指标一起综合评估。 ROC曲线是一种通过描绘不同决策阈值下分类器的性能来评估其表现