主要内容

在贷款组合ECL计算中纳入宏观经济情景预测

这个例子展示了如何生成宏观经济情景,并为一个贷款组合执行预期信贷损失(ECL)计算。本例中的工作流显示了评估信贷损失拨备所需的重要计算步骤,这些拨备遵循诸如IFRS 9CECL.在实践中,贷款准备金的确定是一个复杂得多的操作程序,需要机构内多个部门的协作。本例的目标是展示可以支持此过程的有用计算工具。

本例包括两部分:

  • 第1部分为信贷分析提供宏观经济情景,并将向量自回归(VAR)模型与宏观经济数据拟合。该工作流程描述了三个定性的情景叙述,并选择了涵盖未来几个季度的宏观预测。它利用拟合VAR模型的条件预测能力对宏观经济变量进行长期预测。

  • 第2部分侧重于现有贷款组合的信用分析。它使用了三种现有的信用模型,即终身违约概率(PD)模型、给定违约损失(LGD)模型和违约暴露(EAD)模型。根据第1部分中对特定贷款预测变量和宏观经济情景的预测,这些模型可以提前几个时期预测终身PD、LGD和EAD值。方法估计贷款损失准备金portfolioECL函数,给定不同情况下的边际PD, LGD和EAD投影。

下图总结了本例中的工作流程。

第一部分:宏观经济情景

这一部分的例子展示了如何拟合一个计量经济模型,以及如何使用拟合模型与假设的条件来产生宏观经济情景。

在实践中,宏观经济情景的确定和批准是一个复杂的过程。机构从外部供应商获取宏观经济情景,或者维护内部宏观经济模型并制作情景。一个机构可以有现有的模型来生成场景,这些场景很少被审查和更新。一些宏观经济模型开发人员使用计量经济学模型,而另一些人更喜欢探索替代的统计模型,如机器学习或深度学习模型。详情请参见时间序列和序列数据的深度学习(深度学习工具箱)

为具体起见,该实例适用于矢量自回归(VAR)计量经济模型。用于替代计量模型,比如向量误差修正模型(计量经济学工具箱),见示例,模拟美国经济(计量经济学工具箱).此外,计量经济学建模师(计量经济学工具箱)使您能够交互式拟合和分析计量经济模型,包括VAR和VEC模型。有关其他时间序列建模技术,请参阅统计和机器学习工具箱™和深度学习工具箱™。

第1部分描述了以下工作流程:

本例使用Data_USEconModel.mat数据集包括计量经济学工具箱。该数据集包括从1947年3月到2009年3月(全球金融危机开始前)每季度测量的几个宏观经济变量。有关本系列的更多详细信息,请查看描述数据文件中的变量。

这些测量有助于强调信贷预测对紧张的宏观经济状况的敏感性。您可以应用本例中的步骤,使用最近的数据来拟合宏观经济模型。

可视化和转换数据

这个例子包括模型中的以下变量:

  • 国内生产总值:本地生产总值

  • UNRATE:失业率

  • TB3MS:三个月期国库券收益率

这些变量充分确定了本例第2部分中信用模型的场景。然而,该模型可以包括额外的变量,例如,可以解释经济动态的变量,以改进模型的预测。

加载数据。可视化原始宏观经济时间序列。

负载Data_USEconModelVarnames = [“国内生产总值”“UNRATE”“TB3MS”];DataMacro = rmmissing(DataTimeTable(:,varnames));删除UNRATE = NaN的初始行DataMacro.Time.Format =“默认”;图t = tiledlayout(3,1);nexttile plot(datamacrox . time, datamacrox . gdp)“国内生产总值”nexttile plot(datamacrox . time, datamacrox . unrate)“UNRATE”nexttile plot(datamacrox . time, datamacrox . tb3ms)“TB3MS”)标题(t)宏观经济时间序列

图中包含3个轴对象。标题为GDP的坐标轴对象1包含一个类型为line的对象。标题为UNRATE的Axes对象2包含一个类型为line的对象。标题为TB3MS的Axes对象3包含一个类型为line的对象。

所有的级数都是非平稳的,并且有不同的尺度。因为使用非平稳变量的模型估计是有问题的(参见时间序列回归IV:伪回归(计量经济学工具箱)),对各系列进行适当变换。

  • GDP序列呈现指数增长,比其他变量具有更大的尺度。由于季度与季度之间的GDP增长百分比是常见的报告,与其他变量的规模接近,并且是第2部分中的信贷模型所要求的,因此尝试通过计算其百分比回报来稳定该系列。

  • 失业率和利率序列没有显示出指数增长,但它们似乎具有随机趋势。你可以通过对每一个应用第一个差值来稳定这个级数。第二部分中的信用模型使用了这些系列的原始单元;您可以将该系列反向转换为其原始单位,以便进行信用分析。

变换每个系列,并绘制结果。将转换后的变量包含在时间表中,用NaN预估每个转换以同步序列(序列的第一个差分操作将导致少一次观测)。

DataMacro。gdp增长率达到= 100*[NaN; price2ret(DataMacro.GDP)];以百分比表示的增长率DataMacro。UNRATEDIFF = [NaN; diff(DataMacro.UNRATE)]; DataMacro.TB3MSDIFF = [NaN; diff(DataMacro.TB3MS)]; DataMacro = rmmissing(DataMacro);删除初始缺失值numObs = height(DataMacro);图t = tiledlayout(3,1);nexttile plot(datamacrox . time, datamacrox . gdpgrowth) yline(0) title(“gdp增长率达到”nexttile plot(datamacrox . time, datamacrox . unratediff) yline(0) title(“UNRATEDIFF”) nexttile plot(datamacrox . time, datamacrox . tb3msdiff) yline(0) title(“TB3MSDIFF”)标题(t)“转型宏观经济系列”

图中包含3个轴对象。标题为GDPGROWTH的Axes对象1包含2个类型为line、constantline的对象。标题为UNRATEDIFF的Axes对象2包含2个类型为line、constantline的对象。标题为TB3MSDIFF的Axes对象3包含2个类型为line、constantline的对象。

级数看起来很稳定。为确认视觉结论,对每个系列进行平稳性检验。

进行平稳性测试并选择模型滞后

为了拟合VAR模型,所有变量都必须是平稳的。计量经济学工具箱包括几个平稳性测试;看到单位根检验(计量经济学工具箱)

本例使用了单位根非平稳性的增强迪基-富勒(ADF)检验(参见adftest(计量经济学工具箱)).检验的零假设是输入序列是单位根非平稳的。指定的选项决定备选假设。的模型ADF检验的选项指定了测试变量的替代模型的动态结构,具体地说,自回归基于“增大化现实”技术,带有漂移的自回归ARD,或趋势静止TS.的滞后选项指定替代模型中AR滞后的数量,具体来说,是数量 p 在哪里 y t - p (级数的值 p )会影响该系列到当前步骤的演变 y t .ADF检验结果提供了序列是否平稳的信息,以及适合于该序列的自回归模型的结构。

使用ADF检验来评估每个系列是否平稳,并确定每个系列具有滞后数的适当动态模型。下拉控件使您能够为ADF测试设置模型选择和变量。的adftest调用从滞后0到滞后4运行单独的测试。代码中的当前设置评估是否TB3MSDIFF是静止的,假设ARD模型。

ADFModelChoice =“ARD”;DataVariableChoice =“TB3MSDIFF”;ADFTbl = adftest(DataMacro,“模型”ADFModelChoice,“滞后”0:4,“DataVariable”DataVariableChoice)
ADFTbl =5×8表h pValue stat cValue滞后α模型试验  _____ ______ _______ _______ ____ _____ _______ ______ 真正测试1 0.001 -17.668 -2.8738 0.05 0 {ARD的}{T1的}测试2真正0.001 -14.8 -2.8738 1 0.05 {ARD的}{T1的}测试3真正0.05 0.001 - -8.3548 -2.8739 - 2 {ARD的}{T1的}测试4真正0.05 0.001 -7.6124 -2.8739 3 {ARD的}{T1的}测试5真正0.001 -6.0646 0.05 -2.874 - 4 {ARD的}{T1的}

ADFTbl是否有一个包含所有已进行测试结果的表用于评估是否TB3MSDIFF是静止的。中的每个滞后,每一行都是单独的测试滞后变量。h的值表示是否在α重要程度。p值足够小pValue变量表示是否拒绝原假设。h= 1表示拒绝零假设,支持替代假设,并且h= 0表示拒绝零假设失败。在这种情况下,h= 1对于所有滞后,因此有证据表明TB3MSDIFF级数是一个平稳的自回归过程,在所有滞后中都有漂移。

对于本例中的每个未转换和已转换序列,使用下拉控件来评估该序列对于每个替代模型(包括AR滞后1到4)是否为单位根非平稳序列。

结果如下:

  • 国内生产总值: ADF检验不能拒绝所有设置的零假设。从VAR模型中排除这个系列。

  • gdp增长率达到: ADF检验拒绝所有设置的零假设。在VAR模型中包含这个系列。

  • UNRATE:测试返回混合结果。使用的测试ARD延迟1到3的替代模型拒绝零假设。因此,失业率不需要变换,因为它有一个确定的趋势。在VAR模型中包含带有漂移项的原始序列。此外,原始级数的使用也很方便,因为该级数不需要反变换;它简化了场景确定。

  • TB3MS: ADF检验不能拒绝所有设置的零假设。从VAR模型中排除这个系列。

  • TB3MSDIFF: ADF检验拒绝所有设置的零假设。在VAR模型中包含这个系列。

除了使用ADF检验结果外,还可以使用赤池信息准则(AIC)、贝叶斯信息准则(BIC)和似然比检验确定滞后数。有关示例,请参见选择合适的延迟顺序(计量经济学工具箱).这些方法很有用,但也有一些注意事项(例如,它们对级数的缩放很敏感)。

这个示例使用两个滞后,从应用程序的角度来看是合理的(它指定包含两个季度后的信息)。它导致一个不那么复杂的模型,更容易分析。

拟合VAR模型

拟合以GDP增长、失业率和利率时间序列的第一差值为内生变量的VAR模型。在模型中包含两个AR滞后。详细信息请参见varm(计量经济学工具箱)而且估计(计量经济学工具箱)

Varnames = [“gdp增长率达到”“UNRATE”“TB3MSDIFF”];numVars =长度(varnames);numlag = 2;三维VAR(2)模型模板Mdl = varm(numVars, numlag);Mdl。SeriesNames = varnames;%拟合模型[MacroVARModel,~,~,Residuals] =估计(Mdl,DataMacro{:,varnames});

通过使用下拉控件来可视化每个系列的拟合值。

numRes = size(残差,1);DataMacro。gdp增长率达到_Predicted = NaN(numObs,1); DataMacro.GDPGROWTH_Predicted(end-numRes+1:end) = DataMacro.GDPGROWTH(end-numRes+1:end) - Residuals(:,1); DataMacro.UNRATE_Predicted = NaN(numObs,1); DataMacro.UNRATE_Predicted(end-numRes+1:end) = DataMacro.UNRATE(end-numRes+1:end) - Residuals(:,2); DataMacro.TB3MSDIFF_Predicted = NaN(numObs,1); DataMacro.TB3MSDIFF_Predicted(end-numRes+1:end) = DataMacro.TB3MSDIFF(end-numRes+1:end) - Residuals(:,3); PlotVariableChoice =“gdp增长率达到”;图绘图(DataMacro. time,DataMacro.(PlotVariableChoice))保持情节(DataMacro.Time DataMacro。(strcat (PlotVariableChoice,“_Predicted”)),“-”。)举行标题(strcat (“模型合身”,PlotVariableChoice))“观察”“预测”网格)

图中包含一个轴对象。标题为Model Fit GDPGROWTH的axis对象包含2个类型为line的对象。这些对象表示观察到的,预测到的。

该模型的可变性似乎小于实际数据;拟合值似乎不像数据中最极端的值那么高或那么低。这一结果表明,对于较小到中等的GDP变化,模型误差较小,但对于更极端的GDP变化,模型误差更大。因此,你可以期望模型残差显示重尾。对残差和自相关的彻底分析超出了本例的范围。详情请参见时间序列回归VI:剩余诊断(计量经济学工具箱).这一观察结果意味着,该模型在预测方面似乎更可靠,它适用于期望值(围绕当前水平的中心趋势),而在分析尾部行为(远离当前水平的非常极端冲击)方面则不太可靠。

模型系数的复核是模型验证的重要步骤。级数及其滞后信息影响级数最新值的方式应该有一个合理的解释。

显示估计的系数和推论。

总结(MacroVARModel)
ar平稳三维VAR(2)模型有效样本量:242估计参数数:21 LogLikelihood: -681.275 AIC: 1404.55 BIC:1477.82 Value standderror TStatistic PValue _________ _____________ __________ __________ Constant(1) -0.010079 0.26158 -0.03853 0.96926 Constant(2) 0.3433 0.099669 3.4444 0.00057241 Constant(3) 0.11773 0.25581 0.46024 0.64535 AR{1}(1,1) 0.32725 0.073009 4.4823 7.3852e-06 AR{1}(2,1) -0.071852 0.027819 -2.5829 0.0097982 AR{1}(3,1) 0.098221 0.0714 1.3756 0.16893 AR{1}(1,2) -0.22429 0.19147 -1.1714 0.24145 AR{1}(2,2) 1.4205 0.072958 19.47 1.9537e-84 AR{1}(3,2) -0.50519 0.18725 -2.6979 0.0069782AR{1}(1,3) 0.092278 0.067309 1.371 0.17039 AR{1}(2,3) 0.040064 0.025647 1.5621 0.11825 AR{1}(3,3) -0.30309 0.065826 -4.6045 4.1352e-06 AR{2}(1,1) 0.15851 0.063174 2.509 0.012107 AR{2}(2,1) 0.016333 0.024071 0.67854 0.49743 AR{2}(3,1) 0.10361 0.061782 1.6771 0.093525 AR{2}(1,2) 0.37461 0.061782 1.941 0.052255 AR{2}(2,2) -0.4632 0.073531 -6.2994 2.9882e-10 AR{2}(3,2) 0.42524 0.18873 2.2532 0.024246 AR{2}(2,3) 0.03071 0.024957 1.2305 0.21851 AR{2}(3,3)创新相关矩阵:0.8575 -0.1668 0.2065 -0.1668 0.1245 -0.1156 0.2065 -0.1156 0.8201创新相关矩阵:1.0000 -0.5103 0.2463 -0.5103 1.0000 -0.3616 0.2463 -0.3616 1.0000

例如,对于GDP增长,对角线系数为正,第一个滞后系数大约是第二个滞后系数的两倍。这一结果意味着GDP系列中存在一些惯性,一些积极的记忆,最近一个季度的影响比两个时期前的增长更大。对于失业,第一个滞后对角线系数为正(且相对较大),但第二个滞后系数为负。这一结果表明,相对于前一个季度,失业率有很强的惯性,但相对于前两个季度,存在反弹效应。分析模型系数和在意外情况下提出标志需要专家判断(对模型系数的彻底分析及其统计意义超出了本例的范围)。

定义宏观经济情景

计量模型预测使用模型参数和时间序列的近期观察结果进行预测。该模型预测是宏观经济情景的自然候选。然而,数据和模型完全决定了预测,没有定性的观点。

将估计的VAR模型预测到30个周期的范围预测(计量经济学工具箱).通过指定估计数据作为预样本来初始化预测。

NumPeriods = 30;ModelForecast = forecast(MacroVARModel,NumPeriods,DataMacro{:,varnames});

为了以后供模型和可视化使用,请添加最新观察到的季度。

ModelForecast = [DataMacro{end,varnames};ModelForecast];fhTime = dateshift(datamacrox . time (end),“结束”“季”, 0: NumPeriods)
fhTime =1 x31 datetime列1到5 2009年- 3月31日30 - 2009年6月- 2009年9月30 - - - - 2009年12月31日- 3月31日- 2010年列6到10 30 - 2010年6月- 2010年9月30 - - - - 2010年12月31日- 3月31日- 2011年30 - 2011年6月- 11到15列30 - 2011年9月- - - 2011年12月31日- 3月31日- 2012年30 - 2012年6月- 2012年9月30 - -列16到20 31日——2013年12月- 2012年3月31日- - 30 - 2013年6月- 2013年9月30 - - 31 - 12月- 2013列21通过25 2014年- 3月31日30——2014年6月- 2014年9月30 - - - - 2014年12月31日- 3月31日- 2015列26至30 30日- 2015年6月- 2015年9月30 - - - - 2015年12月31日- 3月31日- 2016年30 - 6月31 - 2016列30 - 9 - 2016
TTForecast = array2timeline (ModelForecast,RowTimes=fhTime,VariableNames=varnames);

该模型预测利率的变化TB3MSDIFF.对预测进行后处理,以恢复年利率的预测值TB3MS

TTForecast。TB3MS= TTForecast.TB3MSDIFF; TTForecast.TB3MS(1) = DataMacro.TB3MS(end); TTForecast.TB3MS = cumsum(TTForecast.TB3MS)
TTForecast =31日×4时间表时间GDPGROWTH UNRATE TB3MSDIFF TB3MS ___________ _________ ______ _________ ________ 31-Mar-2009 -0.78191 8.5 0.18 0.21 30-Jun-2009 - 0.7974 9.088 -1.0128 -0.80284 9.2336 -0.64918 -1.452 31- december -2009 1.842 9.1257 0.04287 31-Mar-2010 2.2753 8.8953 -0.055275 -1.484 30-Jun-2010 2.4409 8.6173 -0.072599 -1.5566 30- september -2010 2.5506 8.3213 0.063912 -1.4927 31- december -2010 2.5904 8.0292 0.087927 -1.4048 31-Mar-2011 2.556 7.7556 0.069531 -2011 - jun - 2.4975 7.5053 0.081449-1.2538 30- september -2011 2.4306 7.28 0.085102 -1.1687 31- december -2011 2.3547 7.0803 0.074533 -1.0942 31- march -2012 2.2781 6.9051 0.067146 -1.027 30-Jun-2012 2.2065 6.7522 0.061337 -0.96567 30- september -2012 2.1401 6.6197 0.053405 -0.91227 31- december -2012 2.0797 6.5054 0.045859 -0.86641

使用下拉控件可视化每个模型预测。

VarToPlot =“UNRATE”;figure plot(DataMacro. time,DataMacro{:,VarToPlot})保持情节(TTForecast。时间,TTForecast{:,VarToPlot},”——“) yline(0)稍等标题(VarToPlot)传说(“数据”“预测”

图中包含一个轴对象。标题为UNRATE的axes对象包含3个类型为line、constantline的对象。这些对象表示数据、预测。

  • 国内生产总值(GDP)增长迅速恢复到平均水平,再经历一个季度的经济收缩,到第三季度增长率超过1%。

  • 失业率的峰值略高于9%,然后回到平均水平,其速度低于GDP的增长速度。

  • 该模型预测未来很长一段时间内将出现显著的负利率。

为了在第2部分中定义信用分析的场景,本例使用了场景叙述和几个季度前的定性观点。本例将情景叙述与模型的条件预测结合起来,将预测扩展到未来几年,其中预测值恢复到长期水平。这种方法可以确定叙述中没有描述,但包含在宏观经济模型中的变量的值。例如,如果叙述中只有GDP增长和失业率,则可以通过条件预测确定相应的利率情景。

本例探讨了三种场景:缓慢恢复、基线恢复和快速恢复。

慢速恢复场景

在这种情况下,GDP将再收缩四个季度,其中一个季度的最大收缩幅度为1.5%。失业率在未来三个季度达到11%的峰值。利率连续四个季度保持负利率。

预测该场景下的模型。对估计模型的原始利率序列进行预处理,然后将其预测后处理为原始单位。

TTSlow = TTForecast;初始化预测变量TTSlow.GDPGROWTH(2:7) = [-1.5;-1.2;-0.8;-0.3;0.1;0.5);TTSlow.GDPGROWTH(8:end) = NaN;TTSlow.UNRATE(2:7) = [9.3;10.1;11.0; 10.5; 9.9; 9.1]; TTSlow.UNRATE(8:end) = NaN; TTSlow.TB3MS(2:7) = [-0.5; -0.25; -0.15; -0.05; 0.0; 0.05]; TTSlow.TB3MS(8:end) = NaN; TTSlow.TB3MSDIFF(2:end) = diff(TTSlow.TB3MS); TTSlow{2:end,varnames} = forecast(MacroVARModel,NumPeriods,DataMacro{:,varnames},YF=TTSlow{2:end,varnames}); TTSlow.TB3MS(8:end) = TTSlow.TB3MS(7) + cumsum(TTSlow.TB3MSDIFF(8:end));

基线场景

在这种情况下,GDP将再收缩三个季度,其中一个季度的最大收缩幅度为1%。失业率在未来三个季度达到10%的峰值。利率连续两个季度为负。

预测该场景下的模型。使用估计模型对原始利率序列进行预处理,然后将其预测后处理为原始单位。

TTBaseline = TTForecast;TTBaseline.GDPGROWTH(2:6) = [-1.0;-0.5;-0.25;0.2;0.6);TTBaseline.GDPGROWTH(7:end) = NaN;TTBaseline.UNRATE(2:6) = [9.0;9.5;10.0; 9.5; 9.0]; TTBaseline.UNRATE(7:end) = NaN; TTBaseline.TB3MS(2:7) = [-0.25; -0.05; 0.01; 0.1; 0.15; 0.20]; TTBaseline.TB3MS(8:end) = NaN; TTBaseline.TB3MSDIFF(2:end) = diff(TTBaseline.TB3MS); TTBaseline{2:end,varnames} = forecast(MacroVARModel,NumPeriods,DataMacro{:,varnames},YF=TTBaseline{2:end,varnames}); TTBaseline.TB3MS(8:end) = TTBaseline.TB3MS(7) + cumsum(TTBaseline.TB3MSDIFF(8:end));

快速恢复场景

在这种情况下,GDP只会再收缩一个季度,收缩0.5%。失业率在未来三个季度达到9%的峰值。下个季度的利率为零,之后仍为正。快速复苏情景与模型预测相似,但在预测中GDP增长更快,利率在很长一段时间内为负。

预测该场景下的模型。使用估计模型对原始利率序列进行预处理,然后将其预测后处理为原始单位。

TTFast = TTForecast;TTFast.GDPGROWTH(2:5) = [-0.5;0.05;0.5;0.9);TTFast.GDPGROWTH(6:end) = NaN;TTFast.UNRATE(2:5) = [8.8;8.9;9.0;8.7); TTFast.UNRATE(6:end) = NaN; TTFast.TB3MS(2:7) = [0; 0.1; 0.15; 0.25; 0.25; 0.30]; TTFast.TB3MS(8:end) = NaN; TTFast.TB3MSDIFF(2:end) = diff(TTFast.TB3MS); TTFast{2:end,varnames} = forecast(MacroVARModel,NumPeriods,DataMacro{:,varnames},YF=TTFast{2:end,varnames}); TTFast.TB3MS(8:end) = TTFast.TB3MS(7) + cumsum(TTFast.TB3MSDIFF(8:end));

将缓慢恢复场景的概率设置为0.30,基线场景的概率设置为0.60,快速恢复场景的概率设置为0.10。

scenarioProb = [0.30;0.60;0.10);

想象场景。使用下拉和滑动控件微调支持叙述的选定值。想象不同场景的长期水平。

VarToPlot =“gdp增长率达到”;StartYearPlot =2007;EndYearPlot =2016;figure DataPlotInd = (year(datamacros . time) >= StartYearPlot) & (year(datamacros . time) <= EndYearPlot);ScenarioPlotInd = year(TTSlow.Time) <= EndYearPlot;情节(DataMacro.Time (DataPlotInd) DataMacro {DataPlotInd, VarToPlot})情节(TTSlow.Time (ScenarioPlotInd) TTSlow {ScenarioPlotInd, VarToPlot},“-”。)情节(TTBaseline.Time (ScenarioPlotInd) TTBaseline {ScenarioPlotInd, VarToPlot},”——“)情节(TTFast.Time (ScenarioPlotInd) TTFast {ScenarioPlotInd, VarToPlot},”:“) yline(0)稍等标题(strcat (“场景”VarToPlot)传说(“数据”“慢”“基线”“快速”位置=“最佳”

图中包含一个轴对象。axis对象的标题场景GDPGROWTH包含5个类型为line, constantline的对象。这些对象表示数据、慢速、基线、快速。

在某些情况下,扩展后的预测会出现交叉。例如,对于GDP来说,在快速复苏的情况下,危机后经济的加速出现得更快,然后它开始朝着长期平均水平稳定下来,而在其他情况下,经济只是加速。

宏观经济情景被定义。本例进行信用分析,具体来说,计算预期信用损失(ECL)。

第二部分:ECL计算

本例的第二部分着重于计算生命周期预期信用损失(ECL)的工作流。ECL是指贷款损失所需的拨备金额。

第2部分使用现有的贷款组合,其中有三个现有的信用模型:终身违约概率(PD)模型、给定违约损失(LGD)模型和违约敞口(EAD)模型。这些模型预测终身PD, LGD和EAD值提前几个时期,给定特定贷款预测变量和宏观经济情景的预测第1部分

给定不同场景的边际PD、LGD和EAD投影,您可以使用portfolioECL函数估计终身贷款损失准备。本例展示了一年期ECL与终身ECL的比较,这对应于IFRS 9规定的阶段1与阶段2。在本例中,终身ECL和1年ECL的预估准备金非常高,因为这三种宏观经济情景对应着具有挑战性的经济条件。作为参考,本例还使用平均宏观经济情景估计了1年期准备金。这种方法类似于贯穿周期(TTC)方法,后者显示在正常时期,相同的模型产生的拨备显著降低。您可以使用每个ID的信用预测和准备金的可视化来深入到贷款级别。

第2部分描述了以下工作流程:

投资组合数据和模型都被模拟以获取在实践中可能发现的特征,并且仅用于说明目的。

为宏观经济情景准备贷款数据

ECLPortfolioMacroExample.mat文件包含贷款组合数据。该数据是一个模拟的现有贷款组合。的ECLPortfolioSnapshot表显示了哪些贷款在投资组合中。

负载ECLPortfolioMacroExample.mat头(ECLPortfolioSnapshot, 5)
ID Time Age ScoreGroupOrig Balance Limit EffIntRate _____________ ___ ______________ ____________ __________ 1 2009年3月31日12低风险3474 9000 5.04 2 2009年3月31日5低风险6232.7 9100 1.51 3 2009年3月31日3高风险2420.6 6000 3.13 4 2009年3月31日2低风险7274.2 10100 0.28 5 2009年3月31日1中等风险3611.8 5800 0.96

ECLPortfolioProjections表格包含投资组合预测。这些值是针对每个贷款的剩余生命周期和每个贷款变量的预测。例如,寿命PD和LGD模型需要年龄(以季度为单位测量)。因为第一笔贷款是12个季度的,所以剩余期限的预计年龄从13岁开始,一直到贷款结束,即20个季度(5年)。所有模型在开始时都使用得分组,这是一个常数值。这个模拟数据集和模型中包含的贷款与价值(LTV)比率是初始时的LTV,它是常数。在实践中,如果包括最近的LTV,它将不得不一直预测到每笔贷款的生命周期结束。

头(ECLPortfolioProjections, 10)
ID Age ScoreGroupOrig LTVOrig Limit Time _____ ______________ ____________ ___________ 1 13低风险0.81866 9000 2009年6月30日1 14低风险0.81866 9000 2009年9月30日1 15低风险0.81866 9000 2010年3月31日1 17低风险0.81866 9000 2010年6月30日1 18低风险0.81866 9000 2010年9月30日1 19低风险0.81866 9000 2010年12月31日1 20低风险0.81866 9000 2011年3月31日2 6低风险0.79881 9100 2009年6月30日2 7低风险0.79881 9100 2009年9月30日

信用模型需要GDP增长率、失业率和利率的预测值,这些都滞后于一个时期。首先,将宏观经济信息存储在MacroScenarios表格,宏观经济情景在这里堆叠。

场景= [“SlowRecovery”“基线”“FastRecovery”];numscenes = length(scenario oids);macroscenes = table;NumForecastPeriods = height(TTForecast)-1;删除初始周期,只保留未来周期MacroScenarios。ScenarioID= repelem(ScenarioIDs,NumForecastPeriods); MacroScenarios.Time = repmat(TTForecast.Time(2:end),NumScenarios,1); MacroScenarios.GDPGROWTHLAG = NaN(height(MacroScenarios),1); MacroScenarios.GDPGROWTHLAG(MacroScenarios.ScenarioID==“SlowRecovery”) = TTSlow.GDPGROWTH(1:end-1);MacroScenarios.GDPGROWTHLAG (MacroScenarios.ScenarioID = =“基线”) = TTBaseline.GDPGROWTH(1:end-1);MacroScenarios.GDPGROWTHLAG (MacroScenarios.ScenarioID = =“FastRecovery”) = TTFast.GDPGROWTH(1:end-1);MacroScenarios。UNRATELAG = NaN(height(MacroScenarios),1); MacroScenarios.UNRATELAG(MacroScenarios.ScenarioID==“SlowRecovery”) = TTSlow.UNRATE(1:end-1);MacroScenarios.UNRATELAG (MacroScenarios.ScenarioID = =“基线”) = TTBaseline.UNRATE(1:end-1);MacroScenarios.UNRATELAG (MacroScenarios.ScenarioID = =“FastRecovery”) = TTFast.UNRATE(1:end-1);MacroScenarios。TB3MSLAG = NaN(height(MacroScenarios),1); MacroScenarios.TB3MSLAG(MacroScenarios.ScenarioID==“SlowRecovery”) = TTSlow.TB3MS(1:end-1);MacroScenarios.TB3MSLAG (MacroScenarios.ScenarioID = =“基线”) = TTBaseline.TB3MS(1:end-1);MacroScenarios.TB3MSLAG (MacroScenarios.ScenarioID = =“FastRecovery”) = TTFast.TB3MS(1:end-1);头(MacroScenarios)
场景时间GDPGROWTHLAG UNRATELAG TB3MSLAG ______________ ___________ ____________ _________ ________“SlowRecovery”2009年6月30日-0.78191 8.5 0.21“SlowRecovery”2009年9月30日-1.5 9.3 -0.5“SlowRecovery”2009年12月31日-1.2 10.1 -0.25“SlowRecovery”2010年3月31日-0.8 11 -0.15“SlowRecovery”2010年6月30日-0.3 10.5 -0.05“SlowRecovery”2010年9月30日-0.1 9.9 0“SlowRecovery”2010年12月31日-0.5 9.1 0.05“SlowRecovery”2011年3月31日- 1.8334 8.6536 -0.19292

要使用信贷模型进行预测,请使用宏观经济情景以及包含所有贷款预测期的贷款数据,这些贷款预测期与宏观经济预测值在时间上正确对齐。有不同的实现方法。在这个例子中,您可以将投资组合预测堆叠三次,每个场景一次,然后将堆叠的预测与宏观场景连接起来。尽管这种堆叠方法使用更多内存,但对于不同的场景,可以轻松地深入到贷款级别(请参阅贷款水平的结果).

中按场景堆叠投资组合预测ECLProjectionsByScenario类应用连接操作MacroScenarios表格方法将宏变量添加到较大的表中时间而且ScenarioID变量作为连接的键。

ECLProjectionsByScenario = repmat(ECLPortfolioProjections, numscenes,1);ECLProjectionsByScenario = addvars(ECLProjectionsByScenario,repelem(ScenarioIDs,height(ECLPortfolioProjections)),“之前”“ID”“NewVariableName”“ScenarioID”);ECLProjectionsByScenario = join(ECLProjectionsByScenario, macroscenes);头(ECLProjectionsByScenario, 10)
场景ID年龄ScoreGroupOrig LTVOrig Limit Time GDPGROWTHLAG UNRATELAG TB3MSLAG ______________ _____ ______________ ____________ ___________ ____________ _________ ________ "SlowRecovery" 1 13 LowRisk 0.81866 9000 30-Jun-2009 - jun-30 -0.78191 8.5 0.21 "SlowRecovery" 1 14 LowRisk 0.81866 9000 30- september -2009 -1.5 9.3 -0.5 "SlowRecovery" 1 15 LowRisk 0.81866 9000 31- december -2009 -1.2 10.1 -0.25 "SlowRecovery" 1 16 LowRisk 0.81866 9000 31-Mar-2010 -0.8 11 -0.15 "SlowRecovery" 1 17 LowRisk 0.81866 90002010年6月30日-0.3 10.5 -0.05 "SlowRecovery" 1 18低风险0.81866 9000 2010年9月30日-0.1 9.9 0 "SlowRecovery" 1 19低风险0.81866 9000 2010年12月31日-0.5 9.1 0.05 "SlowRecovery" 1 20低风险0.81866 9000 2011年3月31日- 1.8334 8.6536 -0.19292 "SlowRecovery" 2 6低风险0.79881 9100 2009年6月30日-0.78191 8.5 0.21 "SlowRecovery" 2 7低风险0.79881 9100 2009年9月30日-1.5 9.3 -0.5

预测终生PD、LGD和EAD

加载现有的信用模型,并使用它们使用准备好的数据进行预测。在此工作流程中,PD、LGD和EAD的新信用模型不适合;假设这些信用模型以前是适合的,经过审查的,并且可以用于ECL计算。信用模型都是使用风险管理工具箱™创建的模型的实例fitLifetimePDModelfitLGDModel,fitEADModel

负载ECLCreditModelsMacroExample.mat

终身PD模型是Probit模型与预测因素:贷款年龄,评分组在发起,发起LTV比率,和滞后的GDP增长和失业率值。

disp (pdECLModel)
具有属性的Probit: ModelID: "PD- ecl -Probit"描述:"终身PD模型实例拟合模拟数据。"模型:[1x1 classreg.regr.]CompactGeneralizedLinearModel] IDVar: "ID" AgeVar: "Age" LoanVars: ["ScoreGroupOrig" "LTVOrig"] MacroVars: [" gddpgrowthlag " "UNRATELAG"] responsear: "Default"

LGD模型是一个托比特书模型与预测因素:贷款年龄,评分组在发起,发起LTV比率,和滞后的GDP增长。

disp (lgdECLModel)
Tobit与属性:CensoringSide: "both" LeftLimit: 0 RightLimit: 1 ModelID: "LGD- ecl -Tobit"描述:"LGD模型实例拟合模拟数据。"基础模型:[1x1 risk.internal.credit.TobitModel] PredictorVars: ["Age" "ScoreGroupOrig" "LTVOrig"…[答案:“LGD”

EAD模型是一个回归模型,基于极限转换因子(LCF)转换度量,与预测因素:评分组在起源,LTV比率在起源,滞后失业率和利率值。因为底层模型预测LCF,所以EAD模型需要信用额度变量来进行EAD预测,即使信用额度不是底层LCF模型的预测器。

disp (eadECLModel)
带属性的回归:converversiontransform: "logit"边界公差:1.0000 -07 ModelID: "EAD- ecl -Regression"描述:"适合模拟数据的EAD模型示例。"底层模型:[1x1 classreg.regr.]CompactLinearModel] PredictorVars: ["ScoreGroupOrig" "LTVOrig"…] ResponseVar: "EAD" LimitVar: "Limit" DrawnVar: "" ConversionMeasure: "lcf"

存储的预测ECLProjectionsByScenario表格预测也可以存储在单独的表中,并直接用作portfolioECL函数。有关使用单独表的示例,请参见根据边际PD、LGD和EAD预测计算ECL.将预测存储在ECLProjectionsByScenario堆叠场景的表允许您在非常细粒度的级别上查看预测细节,因为预测与每行中的预测器值并排存储。

存储生命期(累积)PD和边缘PD。通常,累积PD用于报告目的,而边际PD用作ECL计算的输入portfolioECL函数。

ECLProjectionsByScenario。PDLifetime = 0 (height(ECLProjectionsByScenario),1);ECLProjectionsByScenario。PDMarginal = 0 (height(ECLProjectionsByScenario),1);ECLProjectionsByScenario。LGD = 0(高度(ECLProjectionsByScenario),1);ECLProjectionsByScenario。EAD = 0 (height(ECLProjectionsByScenario),1);ii=1: numscenes ScenIndECLData = eclprojectionsbyscenario . scenario oid == scenes (ii);ECLProjectionsByScenario. pdlifetime (ScenIndECLData) = predictLifetime(pdECLModel,ECLProjectionsByScenario(ScenIndECLData,:));%的累积ECLProjectionsByScenario. pdmarginal (ScenIndECLData) = predictLifetime(pdECLModel,ECLProjectionsByScenario(ScenIndECLData,:),ProbabilityType=“边际”);ECLProjectionsByScenario. lgd (ScenIndECLData) = predict(lgdECLModel,ECLProjectionsByScenario(ScenIndECLData,:));ECLProjectionsByScenario. ead (ScenIndECLData) = predict(eadECLModel,ECLProjectionsByScenario(ScenIndECLData,:));结束头(ECLProjectionsByScenario, 10)
ScenarioID ID年龄ScoreGroupOrig LTVOrig限制时间GDPGROWTHLAG UNRATELAG TB3MSLAG PDLifetime PDMarginal乐金显示器含铅  ______________ __ ___ ______________ _______ _____ ___________ ____________ _________ ________ __________ __________ _______ ______ " SlowRecovery”9000 30 - 2009年6月- 13 LowRisk 0.81866 -0.78191 8.5 0.21 0.0092969 0.0092969 0.29862 4730.2”SlowRecovery”9000 9月30 - 14 LowRisk 0.81866 - 2009 -1.5 9.3 -0.5 0.020034 0.010737 0.33245 5111.1”SlowRecovery”15 LowRisk 0.81866 90002009年12月31日-1.2 10.1 -0.25 0.030184 0.01015 0.31095 6185“慢恢复”1 16低风险0.81866 9000 2010年3月31日-0.8 11 -0.15 0.039815 0.0096304 0.28469 7073.3“慢恢复”1 17低风险0.81866 9000 2010年6月30日-0.3 10.5 -0.05 0.046246 0.0064312 0.2543 6703“慢恢复”1 18低风险0.81866 9000 2010年9月30日0.1 9.9 0 0.050458 0.0042121 0.23014 6152.4“慢恢复”1 19低风险0.81866 9000 2010年12月31日0.5 9.1 0.05 0.05303 0.0025718 0.20708 5309.3“慢恢复”1 20低风险0.81866 90002011年3月31日1.8334 8.6536 -0.19292 0.054387 0.0013569 0.14745 4589.9“慢恢复”26低风险0.79881 9100 30- 2009年6月-0.78191 8.5 0.21 0.02793 0.02793 0.3326 4763.5“慢恢复”27低风险0.79881 9100 30- 2009年9月-1.5 9.3 -0.5 0.058871 0.030942 0.36752 5148.9

计算寿命ECL

方法计算生存期ECLportfolioECL函数。这个函数的输入是一些表,其中第一列是一个ID变量,表示哪些行对应哪些贷款。由于预测涵盖了每笔贷款的多个时期,并且不同贷款的剩余期限可能不同,所以ID变量是一个重要的输入。然后,对于每个ID,必须一段一段地提供信用预测,直到每笔贷款的生命周期结束。通常,边际PD具有多时期和多场景的大小。然而,在某些情况下,更常见的是LGD或EAD输入,信用预测可能没有每个时期的值,或者可能对场景不敏感。这种情况的一个典型例子是到期偿还本金的贷款,在这种贷款中,风险敞口被认为是每个时期的常数,与宏观经济情景无关。在本例中,EAD表输入每个ID有一个标量值,适用于所有时间段和所有场景。为了为边缘PD、LGD和EAD输入的不同输入维度提供灵活性,这些输入在语法中被分隔为三个单独的表portfolioECL

中存储的信用预测重新格式化ECLProjectionsByScenario表转换为包含时间变量。您可以使用这些中间表来逐个时期查看不同情景的详细预测。还有,这些表有时间变量用于逻辑索引,以提取仅为第一年的预测。

PDMarginalUnstacked = ECLProjectionsByScenario(:,[“ScenarioID”“ID”“时间”“PDMarginal”]);PDMarginalUnstacked = unstack(PDMarginalUnstacked,“PDMarginal”“ScenarioID”);PDMarginalUnstacked = movevars(PDMarginalUnstacked,“SlowRecovery”“之前”“基线”);disp(头(PDMarginalUnstacked))
ID时间慢恢复基线快速恢复__ ___________ ____________ _________ ____________ 1 2009年6月30日0.0092969 0.0092969 0.0092969 0.0078466 1 2009年9月31日0.01015 0.0090867 0.0078466 1 2010年3月31日0.0096304 0.0076948 0.005958 1 2010年6月30日0.0064312 0.0045587 0.0032064 1 2010年9月30日0.0042121 0.0030213 0.0019542 1 2010年12月31日0.0025718 0.0016771 0.0013505 1 2011年3月31日0.0013569 0.0011649 0.00096951
LGDUnstacked = ECLProjectionsByScenario(:,[“ScenarioID”“ID”“时间”“乐金显示器”]);LGDUnstacked = unstack(LGDUnstacked,“乐金显示器”“ScenarioID”);LGDUnstacked = movevars(LGDUnstacked,“SlowRecovery”“之前”“基线”);EADUnstacked = ECLProjectionsByScenario(:,[“ScenarioID”“ID”“时间”“o”]);EADUnstacked = unstack(EADUnstacked,“o”“ScenarioID”);EADUnstacked = movevars(EADUnstacked,“SlowRecovery”“之前”“基线”);

准备输入的最后一步portfolioECL就是移除时间列。还有其他方法来准备这些输入,例如,您可以在预测期间直接并排存储列。在本例中,说明了额外的准备步骤,以便您可以使用ECLProjectionsByScenario有关贷款级别的详细分析的表(见贷款水平的结果).

PDMarginalLifetimeInput = PDMarginalUnstacked(:,[1 3:end]);disp(头(PDMarginalLifetimeInput))
ID SlowRecovery Baseline FastRecovery __ ____________ _________ ____________ 1 0.0092969 0.0092969 0.0092969 0.0092969 1 0.010737 0.0090867 0.0078466 1 0.01015 0.0076948 0.005958 1 0.0096304 0.006847 0.0045918 1 0.0064312 0.0045587 0.0032064 1 0.0042121 0.0030213 0.0019542 1 0.0025718 0.0016771 0.0013505 1 0.0013569 0.0011649 0.00096951
LGDLifetimeInput = LGDUnstacked(:,[1 3:end]);EADLifetimeInput = EADUnstacked(:,[1 3:end]);

每笔贷款都有一个在贷款确认时确定的有效贴现率。

EIRInput = ECLPortfolioSnapshot(:,[“ID”“EffIntRate”]);EIRInput。EffIntRate = EIRInput.EffIntRate/100;转换为十进制

使用portfolioECL函数。

[totalECL, idel,periodECL] = portfolioECL(PDMarginalLifetimeInput,LGDLifetimeInput,EADLifetimeInput,...ScenarioNames = ScenarioIDs ScenarioProbabilities = scenarioProb利率= EIRInput);

totalECL输出是投资组合的生命周期ECL,它是投资组合所需的准备金总额。

流(“总投资组合生命周期ECL: %s”cur2str (totalECL))
总投资组合生命周期ECL: $67701.21

idECL输出是贷款级别的生命周期ECL。加入idECL输出带有分数组和来自ECL投资组合快照表的余额信息。有了这些数据,您可以计算终身ECL占贷款余额的百分比。您也可以按分数组进行汇总。的TotalsByScore表中显示,低质量评分组的终身ECL显著高于低质量评分组。

idECL = join(idECL,ECLPortfolioSnapshot(:,[“ID”“ScoreGroupOrig”“平衡”)));idECL。ECLPercent = 100*idECL.ECL./idECL.Balance;TotalsByScore = groupsummary(idECL,“ScoreGroupOrig”“和”,[“它”“平衡”]);TotalsByScore。ECLPercent = 100*TotalsByScore.sum_ECL./TotalsByScore.sum_Balance
TotalsByScore =3×5表ScoreGroupOrig GroupCount sum_ECL sum_Balance ECLPercent ______________ __________ _______ ___________ __________ HighRisk 76 22027 1.828e+05 12.05 MediumRisk 121 23921 3.312e+05 7.2225 LowRisk 130 21753 5.9629e+05 3.6481

TotalsByScore桌子都很高。这些结果已在计算1年ECL而且用平均宏观经济水平计算1年ECL部分。

按分数组可视化投资组合余额的分布和拨备的分布。只有约1/6的资产被分配给高风险贷款,但高风险拨备约占总拨备的1/3。另一方面,一半以上的资产配置在低风险贷款上,但低风险拨备却不到总拨备的1/3。

图tiledlayout(1,2) nexttile pie(totalsbscore . sum_balance)“按分数分组的平衡”nexttile pie(totalsbscoore . sum_ecl)《分数组规定》) leg = legend(TotalsByScore。ScoreGroupOrig,“位置”“南”“定位”“水平”);leg.Layout.Tile =“南”

计算1年ECL

如在计算寿命ECL,终身规定在TotalsByScore桌子都很高。为了更好地理解其中的原因,您可以计算1年准备金,以了解ECL生命周期部分在第一年之后的影响。

终身ECL和1年期ECL之间的差异对于IFRS 9法规很重要,其中第一阶段贷款(执行贷款)使用1年期ECL进行拨备,而第二阶段贷款(信用风险增加)和第三阶段贷款(信用受损)使用终身ECL。[1

要获得1年的ECL,请准备边缘PD、LGD和EAD输入表,以便它们涵盖未来一年。中创建的未堆叠表计算寿命ECL.这些未堆叠的表包含时间变量进行逻辑索引,并获得1年ECL的输入。在新的输入中,每个ID只有四个周期,任何剩余寿命小于四个季度的贷款的周期都更少。

FourthQuarterAhead = eclportfolioprojects . time (4);PDMarginal1YearInput = PDMarginalUnstacked(PDMarginalUnstacked。时间< = FourthQuarterAhead[1 3:结束]);disp(头(PDMarginal1YearInput))
ID SlowRecovery Baseline FastRecovery __ ____________ _________ ____________ 1 0.0092969 0.0092969 0.0092969 0.0092969 1 0.010737 0.0090867 0.0078466 1 0.01015 0.0076948 0.005958 1 0.0096304 0.006847 0.0045918 2 0.02793 0.02793 0.02793 2 0.030942 0.026838 0.023675 2 0.028822 0.022818 0.018364 2 0.026954 0.020285 0.014466
LGD1YearInput = LGDUnstacked(LGDUnstacked。时间< = FourthQuarterAhead[1 3:结束]);EAD1YearInput = EADUnstacked(EADUnstacked。时间< = FourthQuarterAhead[1 3:结束]);

使用portfolioECL有了新的输入。

[totalECL1Year,idECL1Year,periodECL1Year] = portfolioECL(PDMarginal1YearInput,LGD1YearInput,EAD1YearInput,...ScenarioNames = ScenarioIDs ScenarioProbabilities = scenarioProb利率= EIRInput);

使用分数组和余额信息展开ID级别ECL表。

idECL1Year。ScoreGroupOrig = idECL.ScoreGroupOrig;idECL1Year。Balance = idECL.Balance;idECL1Year。ECLPercent = 100*idECL1Year.ECL./idECL1Year.Balance;totalsbscore1year = groupsummary(idECL1Year,“ScoreGroupOrig”“和”,[“它”“平衡”]);TotalsByScore1Year。ECLPercent = 100* totalsbyscore1year . sum_ec ./TotalsByScore1Year.sum_Balance;

通过绘制每个评分组的寿命和1年ECL值占余额的比例来比较1年ECL与终身ECL。

图;酒吧([TotalsByScore。ECLPercent totalsbscocore1year .ECLPercent]) xticklabels(totalsbscocore1year . scoregrouporig)'ECL为余额的% ')传说(“终身发射极耦合逻辑”的1年期发射极耦合逻辑)标题(“ECL,终身vs. 1年”网格)

图中包含一个轴对象。标题为ECL, Lifetime vs. 1 Year的axis对象包含2个类型为bar的对象。这些对象表示终身ECL、1年ECL。

终身ECL相对于1年ECL有显著的增加。然而,1年ECL值较高。一般来说,从1年ECL到终身ECL的增量预计不会很大,因为边际PD值往往会随着贷款年限的增加而降低,在某些情况下,LGD和EAD预测所隐含的风险也会随着时间的推移而降低。这种行为的一个例子是分期偿还贷款。

本例中的宏观经济情况极为不利,而有关条款是根据宏观经济情况而定的。用平均宏观经济水平计算1年ECL探讨这些不利情景对ECL估计的影响。

用平均宏观经济水平计算1年ECL

为了比较1年期ECL与更正常的宏观经济条件,宏观经济情景从定义宏观经济情景被宏观经济变量的长期平均值所取代。为了简化起见,使用宏观经济变量的长期平均值来预测未来四个季度的情况。这种方法类似于整个周期(TTC)准备金方法,因为信贷预测反映了平均宏观经济状况。

使用整个样本的平均宏观经济水平。

MeanGDPGROWTH = mean(datamacrox . gdpgrowth);MeanUNRATE = mean(datamacrox . unrate);MeanTB3MS = mean(datamacrox . tb3ms);

要进行预测,您需要预测的预测器值和仅提前一年的数据。

ECLPortfolio1YearMacroAverage = ECLPortfolioProjections(ECLPortfolioProjections. time <=FourthQuarterAhead,:);ECLPortfolio1YearMacroAverage。gdp增长率达到LAG = zeros(height(ECLPortfolio1YearMacroAverage),1); ECLPortfolio1YearMacroAverage.UNRATELAG = zeros(height(ECLPortfolio1YearMacroAverage),1); ECLPortfolio1YearMacroAverage.TB3MSLAG = zeros(height(ECLPortfolio1YearMacroAverage),1);

附加宏观经济平均值,并对未来所有时期使用相同的平均值。

eclportfolio1yeararmacroaverage . gdpgrowthlag (:) = MeanGDPGROWTH;eclportfolio1yeararmacroaverage . unratelag (:) = MeanUNRATE;ECLPortfolio1YearMacroAverage.TB3MSLAG(:) = MeanTB3MS;

预测信用价值。ECL计算只需要边际PD值,但是还可以为分析在贷款水平的结果部分。

ECLPortfolio1YearMacroAverage。PDLifetime = predictLifetime(pdECLModel, eclportfolio1yeararmacroaverage);ECLPortfolio1YearMacroAverage。PDMarginal = predictLifetime(pdECLModel, eclportfolio1yeararmacroaverage,ProbabilityType=“边际”);ECLPortfolio1YearMacroAverage。LGD = predict(lgdECLModel,ECLPortfolio1YearMacroAverage);ECLPortfolio1YearMacroAverage。EAD = predict(eadECLModel,ECLPortfolio1YearMacroAverage);

在本例中,的输入portfolioECL函数只有一个场景。

PDMarginal1YearMacroAverageInput = ECLPortfolio1YearMacroAverage(:,[“ID”“PDMarginal”]);LGD1YearMacroAverageInput = ECLPortfolio1YearMacroAverage(:,[“ID”“乐金显示器”]);EAD1YearMacroAverageInput = ECLPortfolio1YearMacroAverage(:,[“ID”“o”]);

获得1年期ECL并展开贷款级别结果表。

[totalECL1YearMacroAverage,idECL1YearMacroAverage,periodECL1YearMacroAverage] = portfolioECL(PDMarginal1YearMacroAverageInput,LGD1YearMacroAverageInput,EAD1YearMacroAverageInput,InterestRate=EIRInput);idECL1YearMacroAverage。ScoreGroupOrig = idECL.ScoreGroupOrig;idECL1YearMacroAverage。Balance = idECL.Balance;idECL1YearMacroAverage。ECLPercent = 100*idECL1YearMacroAverage.ECL./idECL1YearMacroAverage.Balance;TotalsByScore1YearMacroAverage = groupsummary(idECL1YearMacroAverage,“ScoreGroupOrig”“和”,[“它”“平衡”]);TotalsByScore1YearMacroAverage。ECLPercent = 100* totalsbyscore1yeararmacroaverage . sum_ecl ./ totalsbyscore1yeararmacroaverage . sum_balance;

将具有平均宏观经济值的1年ECL与使用初始宏观经济情景的1年ECL和终身ECL方法进行比较。

图;酒吧([TotalsByScore。ECLPercent TotalsByScore1Year。ECLPercent totalsbyscore1yeararmacroaverage .ECLPercent) xticklabels(TotalsByScore.ScoreGroupOrig) ylabel('ECL为余额的% ')传说(“终身发射极耦合逻辑”的1年期发射极耦合逻辑“1年期ECL,宏观平均”)标题(“ECL,终身vs. 1年vs. 1年宏观平均”网格)

图中包含一个轴对象。标题为ECL, Lifetime vs. 1 Year vs. 1 Year Macro Average的坐标轴对象包含3个类型为bar的对象。这些对象表示终身ECL、1年ECL、1年ECL、宏观平均。

这些结果表明,严重不利的宏观经济情景定义定义宏观经济情景驱动高拨备。平均宏观经济水平的1年期ECL值要低得多,低风险的1年期ECL为当前拨备余额的0.5%。中等风险1年期ECL为当前拨备余额的1%,高风险1年期ECL为当前拨备余额的2%。

可视化贷款级别的结果

您可以在贷款级别上探索ECL预测和结果。使用SelectedID在投资组合中输入任何贷款ID。由此产生的可视化显示了贷款剩余期限内的预测生命周期PD、边际PD、LGD和EAD。图表显示了中定义的每个宏观经济情景的预测定义宏观经济情景以及宏观经济平均情景(仅限1年预测)。

SelectedID =1;IDDataLifetime = ECLProjectionsByScenario(ECLProjectionsByScenario. id ==SelectedID,:);IDData1YearMacroAverage = ECLPortfolio1YearMacroAverage(ECLPortfolio1YearMacroAverage. id ==SelectedID,:);图;T = tiledlayout(4,1);nexttile举行ii=1: numscenes ScenPlotInd = IDDataLifetime.ScenarioID==ScenarioIDs(ii);情节(IDDataLifetime.Time (ScenPlotInd) IDDataLifetime.PDLifetime (ScenPlotInd))结束情节(IDData1YearMacroAverage.Time IDData1YearMacroAverage.PDLifetime,“——”)举行ylabel (“PD Lifetine”)标题(“PD一生”网格)nexttile举行ii=1: numscenes ScenPlotInd = IDDataLifetime.ScenarioID==ScenarioIDs(ii);情节(IDDataLifetime.Time (ScenPlotInd) IDDataLifetime.PDMarginal (ScenPlotInd))结束情节(IDData1YearMacroAverage.Time IDData1YearMacroAverage.PDMarginal,“——”)举行ylabel (“PD边际”)标题(“PD边际”网格)nexttile举行ii=1: numscenes ScenPlotInd = IDDataLifetime.ScenarioID==ScenarioIDs(ii);情节(IDDataLifetime.Time (ScenPlotInd) IDDataLifetime.LGD (ScenPlotInd))结束情节(IDData1YearMacroAverage.Time IDData1YearMacroAverage.LGD,“——”)举行ylabel (“乐金显示器”)标题(“乐金显示器”网格)nexttile举行ii=1: numscenes ScenPlotInd = IDDataLifetime.ScenarioID==ScenarioIDs(ii);情节(IDDataLifetime.Time (ScenPlotInd) IDDataLifetime.EAD (ScenPlotInd))结束情节(IDData1YearMacroAverage.Time IDData1YearMacroAverage.EAD,“——”)举行ylabel (含铅的)标题(含铅的网格)腿=传说(“缓慢的复苏”“基线”“快速复苏”“宏观平均”“定位”“水平”);leg.Layout.Tile =“南”

图中包含4个轴对象。标题为PD Lifetime的坐标轴对象1包含4个类型为line的对象。标题为PD Marginal的坐标轴对象2包含4个类型为line的对象。标题为LGD的坐标轴对象3包含4个类型为line的对象。标题为EAD的Axes对象4包含4个类型为line的对象。这些对象表示慢恢复、基线、快速恢复、宏观平均。

下面的图表显示了贷款的ECL、终身情况的ECL、1年ECL情况以及使用平均宏观经济值的1年ECL。

图;IDECLInd = idECL。ID == SelectedID酒吧(分类(“规定”,[idECL.ECLPercent(IDECLInd) idECL1Year.ECLPercent(IDECLInd) idecl1yeararmacroaverage . eclpercent (IDECLInd)])“一生”“1年”“1年宏观平均”) ylabel ('ECL为余额的% ')标题= sprintf('ID: %g,分数组:%s'、SelectedID idECL.ScoreGroupOrig (IDECLInd));标题(TitleStr)网格

图中包含一个轴对象。标题ID为1,Score Group: LowRisk的坐标轴对象包含3个类型为bar的对象。这些对象表示生命周期、1年、1年宏观平均。

结论

该示例涵盖了整个工作流程,包括确定宏观经济情景和使用生命周期ECL计算估算准备金。该示例还展示了一些工具和可视化,以分析投资组合级别、分数组级别和贷款级别的结果。

该示例演示了来自计量经济学工具箱™和风险管理工具箱™的支持此工作流程的工具,包括宏观经济建模工具,如向量自回归(VAR)模型,以及信用风险工具,如违约终身概率(PD)模型(fitLifetimePDModel),默认损失(LGD)模型(fitLGDModel)、默认模式下的曝光(fitEADModel),以及portfolioECL函数。

参考文献

贝利尼,蒂齐亚诺。IFRS 9和CECL信用风险建模和验证:R和SAS中实例的实用指南。爱思唯尔,2019年。

布里登,约瑟夫。与CECL一起生活:建模词典。预见性模型有限责任公司,2018年。

Roesch, Daniel和Harald Scheule。深度信用风险:使用Python的机器学习。独立出版,2020年。

另请参阅

|||

相关的话题

Baidu
map