基于Cox比例风险的违约概率建模
这个例子展示了如何使用消费者(零售)信贷面板数据来可视化不同级别的违约概率(pd)。它还展示了如何拟合Cox比例风险(PH)模型,也称为Cox回归,以预测pd。此外,它还展示了如何执行压力测试分析,如何建模生命周期pd,以及如何使用计算生命周期预期信用损失(ECL)值portfolioECL
.
这个例子使用了fitLifetimePDModel
从风险管理工具箱™,以适应考克斯
PH值模型。虽然同样的模型可以拟合使用fitcox
的缺省(PD)版本的生存期概率考克斯
该模型是为信用应用设计的,支持条件PD预测、寿命PD预测和模型验证工具,包括判别图和精度图。万博1manbetx
一个类似的例子,基于面板数据的消费者信贷违约概率压力测试,遵循相同的工作流程,但它使用物流
而不是回归模型考克斯
模型。这两种方法的主要区别是:
使用生存分析工具进行数据探索
从一些数据可视化开始,主要是pd作为年龄函数的可视化,在这个数据集中与账面年数(YOB)相同。因为考克斯
PH是一个生存分析模型,本例讨论了一些生存分析工具和概念,并使用了经验累积分布函数(ecdf
)功能的一些计算和可视化。
主要数据集(数据
)包含以下变量:
ID
:贷款标识符。ScoreGroup
:贷款开始时的信用评分,离散为三组,高的风险
,中等风险
,低风险
.小无赖
:书本上的岁月。默认的
:默认指示灯。这是响应变量。一年
:日历年。
还有一个小数据集(dataMacro
),并附上相应历年的宏观经济数据,其中包含以下变量:
一年
:日历年。国内生产总值
:国内生产总值(gdp)同比增长。市场
:市场收益(逐年)。
的变量小无赖
,一年
,国内生产总值
,市场
在相应的历年结束时进行观察。的ScoreGroup
是贷款开始时原始信用评分的离散化。值为1
为默认的
意味着贷款在相应的日历年违约。
第三个数据集(dataMacroStress
)包含宏观经济变量的基线、不利和严重不利的情景。的压力测试分析本例中使用此表。
加载模拟数据。
负载RetailCreditPanelData.matdisp(头(数据,10))
ID ScoreGroup YOB默认年份__ ___________ __________ ____ 1低风险1 0 1997 1低风险20 1998 1低风险3 0 1999 1低风险4 0 2000 1低风险5 0 2001 1低风险6 0 2002 1低风险7 0 2003 1低风险8 0 2004 2中等风险1 0 1997 2中等风险20 1998
对面板数据进行预处理,使其符合某些生存分析工具所期望的格式。
使用groupsummary将数据减少到每行一个ID,并跟踪%,无论贷款是否违约。dataSurvival = groupsummary(数据,“ID”,“和”,“默认”);disp(头(dataSurvival 10))
ID GroupCount sum_Default __ __________ ___________ 1 8 0 2 8 0 3 8 0 4 6 0 5 7 0 6 7 0 7 8 0 8 6 0 9 7 0 10 8 0
您还可以从YOB中获得观测到的年份,不过在本例中,始终是YOB%从数据中的1开始,因此GroupCount等于最终的YOB。dataSurvival.Properties。VariableNames {2} =“YearsObserved”;dataSurvival.Properties。VariableNames {3} =“默认”;%如果没有默认值,它是一个过滤观察值。dataSurvival。审查=~dataSurvival.Default; disp(head(dataSurvival,10))
ID YearsObserved Default deleted __ _____________ _______ ________ 1 8 0 true 2 8 0 true 3 8 0 true 4 6 0 true 5 7 0 true 6 7 0 true 7 8 0 true 8 6 0 true 9 7 0 true 10 8 0 true
主要变量是观察每笔贷款的时间(YearsObserved
),即帐面上的年数的最终值(小无赖
)变量。所观察到的年份是违约前的年数,或观察期(八年)结束前的年数,或贷款因提前还款而从样本中移除前的年数。在这个数据集中,小无赖
信息与贷款的年龄相同,因为所有贷款都以a开头小无赖
为1。对于其他数据集,这种情况可能是正确的。例如,在一个交易组合中小无赖
年龄可能会有所不同,因为在第三年购买的贷款的年龄会是3.
,但小无赖
值为1。
第二个需要的变量是审查变量(审查
).在这个分析中,利息事件就是贷款违约。如果在违约之前观察到一笔贷款,则您可以获得有关违约之前时间的所有信息。因此,生命周期信息是未经审查或完整的。或者,如果在观察期结束时贷款没有违约,则该信息被认为是审查过的或不完整的。贷款不可能违约,因为它是预付的,或者在样本中的8年观察期结束时贷款没有违约。
添加ScoreGroup
而且古董
信息转换为数据。这些变量的值在整个贷款期限内保持不变。在开始时给出的分数决定ScoreGroup
起源年份决定了古董
或队列。
你可以从YOB==1中得到ScoreGroup,因为在这个数据集中,% YOB总是从1开始,并且ID在data和中的顺序相同% dataSurvival。dataSurvival。ScoreGroup=数据.年代c或eGroup(data.YOB==1);根据贷款开始的年份定义年份。所有贷款%在这个数据集中开始于他们生命的第一年。dataSurvival。古董=数据.一年(数据.小无赖==1);disp(头(dataSurvival 10))
ID YearsObserved默认审查ScoreGroup古董 __ _____________ _______ ________ ___________ _______ 1 8 0 1997年真正的低风险2 8 0真正中等风险1997 3 1997 0真正中等风险4 6 0真正中等风险1999 5 7 0真正中等风险1998 6 7 0真正中等风险1998 7 8 0真正中等风险1997 8 6 0真正中等风险1999 9 7 0真正的低风险1998 10 8 0 1997年真正的低风险
比较原始数据集(以面板数据格式)和聚合数据集(以更传统的生存格式)中的行数。
流('原始数据行数:%d\n'、高度(数据));
原始数据行数:646724
流('生存数据行数:%d\n'高度(dataSurvival));
行数生存数据:96820
使用经验累积分布函数(ecdf
).
ecdf (dataSurvival。YearsObserved,“审查”, dataSurvival。审查,“界限”,“上”)标题(“累积违约概率,所有得分组”)包含(《读书的岁月》)
对YOB绘制有条件的一年pd。例如,有条件的一年期PD小无赖
的3.
是有条件的一年期PD,适用于第三年的贷款。在生存分析中,该值与离散危险率相吻合,表示为h因为特定年份的违约数量是“失败”的数量,而当年年初仍在账面上的贷款数量与“风险数量”相同。来计算h,得到累积危险函数输出,表示为H,并转化为危险性函数h.有关更多信息,请参见kaplan meier方法.
[H,x] = ecdf(datassurvival .)YearsObserved,“审查”, dataSurvival。审查,...“函数”,“累积风险”);取H的差,得到危险值H。h = diff(h);X (1) = [];在这个例子中,观察到的时间(存储在变量x中)没有改变%不同的分数组,或者训练组和测试组。对于其他数据集,您可能需要在每次调用ecdf函数后检查x和h变量%绘制或连接结果。(例如,如果数据集在中没有默认值%为测试数据的特定年份。)情节(x, h,‘*’网格)在标题(“有条件一年期pd”) ylabel (“PD”)包含(《读书的岁月》)
你也可以直接用groupsummary
使用原始面板数据格式。有关更多信息,请参阅附带的示例,基于面板数据的消费者信贷违约概率压力测试.或者,你可以用grpstats
使用原始面板数据格式。这两种方法都给出了相同的有条件的一年pd。
PDvsYOBByGroupsummary = groupsummary(数据,“小无赖”,“的意思是”,“默认”);PDvsYOBByGrpstats = grpstats(data.Default,data.YOB);PDvsYOB = table((1:8)',h,PDvsYOBByGroupsummary.mean_Default,PDvsYOBByGrpstats,...“VariableNames”, {“小无赖”,“ECDF”,“Groupsummary”,“Grpstats”});disp (PDvsYOB)
YOB ECDF Groupsummary Grpstats ____________ ____________ _________ 1 0.017507 0.017507 0.017507 2 0.012704 0.012704 0.011168 0.011168 0.011168 4 0.010728 0.010728 0.010728 5 0.0085949 0.0085949 0.0085949 6 0.006413 0.006413 0.006413 0.0033231 0.0033231 8 0.0016272 0.0016272 0.0016272
将数据分段为ScoreGroup
来分解pdScoreGroup
.
ScoreGroupLabels = categories(dataSurvival.ScoreGroup);NumScoreGroups = length(ScoreGroupLabels);hSG = 0(长度(h),NumScoreGroups);为ii=1:NumScoreGroups Ind = dataSurvival.ScoreGroup==ScoreGroupLabels{ii};H = ecdf(datasvival . yearsoobserved (Ind),“审查”dataSurvival.Censored(印第安纳州));hSG(:,ii) = diff(H);结束情节(x, hSG集团)‘*’网格)在标题(“有条件的一年期pd,按分数分组”)包含(《读书的岁月》) ylabel (“PD”传奇(ScoreGroupLabels)
您还可以通过古董
以类似的方式对数据进行信息和分段。你可以把这些pd画出来小无赖
或者与日历年相反。要查看这些可视化效果,请参见基于面板数据的消费者信贷违约概率压力测试.
无宏观效应的Cox PH模型
本节展示如何适合考克斯
PH模型不含宏观信息。该模型只包括时间无关的预测器ScoreGroup
在贷款的源头。与时间无关的预测器包含在整个贷款生命周期内保持不变的信息。本例仅使用ScoreGroup
,但其他与时间无关的预测因子可以添加到模型中(例如,古董
信息)。
Cox比例危险回归是一种半参数方法,用于调整生存率估计,以量化预测变量的影响。该方法将解释变量的影响表示为公共基线危险函数的乘数, .风险函数是Cox比例风险回归函数的非参数部分,而预测变量的影响是一个对数线性回归。Cox PH模型为:
地点:
预测变量是我主题。
的系数是j预测变量。
危险率是否及时t为 .
是基线危险率函数。
有关详细信息,请参见考克斯
而且fitcox
或考克斯比例风险模型以及其中的参考文献。
的基本考克斯
PH模型假设预测值在整个贷款期限内不变。在这个例子中,ScoreGroup
不会改变,因为它是在贷款开始时给予借款人的分数。古董
在整个贷款期限内也是不变的。
一个考克斯
模型可以使用依赖时间的分数。例如,如果信用评分信息每年更新一次,则在模型中建模与时间相关的预测器考克斯
方法中将宏变量添加到模型中的方法宏观效应的Cox PH模型部分。
为了适合考克斯
寿命PD模型fitLifetimePDModel
,使用原版数据
面板数据格式的表格。虽然生存数据格式在dataSurvival
表可以与其他生存函数一起使用,如ecdf
或fitcox
,fitLifetimePDModel
函数总是与面板数据格式一起工作。这简化了有或没有依赖时间模型的模型之间的切换,并且相同的面板数据格式用于验证函数,例如modelAccuracyPlot
.当拟合Cox模型时,fitLifetimePDModel
函数处理年龄变量(“AgeVar”
参数)作为事件的时间,它使用响应变量(“ResponseVar”
参数)的二进制值,以识别经过删减的观测值。
在接下来的拟合模型中,唯一的预测因子是ScoreGroup
变量。的fitLifetimePDModel
函数检查数据的周期性(最常见的年龄增量)并将其存储在“TimeInterval”
的属性考克斯
寿命PD模型。的“TimeInterval”
信息对于条件局部放电的预测是很重要的预测
.
将数据分成训练子集和测试子集,然后使用训练数据拟合模型。
nIDs = max(data.ID);uniqueIDs =唯一的(data.ID);rng (“默认”);%用于再现性c = cvpartition(nIDs,“坚持”, 0.4);TrainIDInd =训练(c);testdind =测试(c);TrainIDInd = ismember(data.ID,uniqueIDs(TrainIDInd));TestDataInd = ismember(data.ID,uniqueIDs(testdind));pdModel = fitLifetimePDModel(data(TrainDataInd,:)),考克斯的,...“IDVar”,“ID”,“AgeVar”,“小无赖”,“LoanVars”,“ScoreGroup”,“ResponseVar”,“默认”);disp (pdModel)
考克斯与属性:TimeInterval: 1 ExtrapolationFactor: 1 ModelID:“考克斯”描述:“”模型:[1x1 CoxModel] IDVar:“ID”AgeVar:“YOB”LoanVars:“ScoreGroup”MacroVars:“ResponseVar:“默认”
disp (pdModel.Model)
Cox比例风险回归模型Beta SE zStat pValue ________ ________ _______ ___________ ScoreGroup_Medium Risk -0.67831 0.037029 -18.319 5.8806e-75 ScoreGroup_Low Risk -1.2453 0.045243 -27.525 8.8419e-167 Log-likelihood: -41783.047
要预测条件pd,请使用预测
.例如,预测第一个的PDID
在数据中。
PD_ID1 = predict(pdModel,data(1:8,:))
PD_ID1 =8×10.0083 0.0059 0.0055 0.0052 0.0039 0.0033 0.0016 0.0009
要将预测的pd与训练或测试数据中观察到的违约率进行比较,请使用modelAccuracyPlot
.该图是预测PD值精度的可视化(也称为模型校准或预测能力)。PD模型精度需要一个分组变量。通过使用小无赖
作为分组变量,观察到的违约率与中讨论的违约率相同使用生存分析工具进行数据探索部分。
DataSetChoice =“测试”;如果DataSetChoice = =“培训”Ind = TrainDataInd;其他的Ind = TestDataInd;结束modelAccuracyPlot (pdModel数据(印第安纳州,:),“小无赖”,“DataID”DataSetChoice)
精度图接受第二个分组变量。例如,使用ScoreGroup
作为第二个分组变量来可视化每个PD预测ScoreGroup
,与小无赖
.
modelAccuracyPlot (pdModel数据(印第安纳州,:),{“小无赖”,“ScoreGroup”},“DataID”DataSetChoice)
的modelDiscriminationPlot
返回ROC曲线。使用可选的“SegmentBy”
参数来可视化每个ROCScoreGroup
.
modelDiscriminationPlot (pdModel数据(印第安纳州,:),“DataID”DataSetChoice,“SegmentBy”,“ScoreGroup”)
Cox模型的非参数部分允许它紧密匹配训练数据模式,即使只有ScoreGroup
是这个模型中的一个预测因子。测试数据的结果比训练数据的误差更大,但这个结果仍然是很好的拟合。
添加宏观信息很重要,因为压力测试和寿命PD预测都需要显式地依赖于宏观信息。
宏观效应的Cox PH模型
本节展示如何适合考克斯
PH模型,包括宏观信息,具体来说,国内生产总值(GDP)增长和股票市场增长。宏观变量的值每年都在变化,因此预测因子是时间相关的。
Cox比例风险模型对时间相关变量的扩展如下:
地点:
预测变量的值是我主题和j时间无关预测器。
预测变量的值是我主题和k时间依赖预测器t。
的系数是j时间无关预测变量。
的系数是k时间相关的预测变量。
危险率是否及时t为
是基线危险率函数。
详情请参见考克斯
,fitcox
,或考克斯比例风险模型以及其中的参考文献。
宏观变量被视为时变变量。如果信息与时间无关,如初值ScoreGroup
,提供贷款存续期间的风险基线水平,因此有理由预期宏观环境的改变可能会增加或减少该基线水平附近的风险。此外,如果宏观条件发生变化,你可以预期这些风险的变化每年都会有所不同。例如,经济增长较低的年份应该使所有贷款的风险都更高,而不受初始贷款的影响ScoreGroup
.
的数据输入考克斯
具有时变预测因子的寿命PD模型使用原始面板数据加上宏信息。
如前所述,在拟合Cox模型时fitLifetimePDModel
函数处理年龄变量(“AgeVar”
参数)作为事件的时间,它使用响应变量(“ResponseVar”
参数)的二进制值,以识别经过删减的观测值。在接下来拟合的模型中,预测因子为ScoreGroup
,国内生产总值
,市场
.的fitLifetimePDModel
检查数据的周期性(最常见的年龄增量)并将其存储在“TimeInterval”
的属性考克斯
寿命PD模型。对于依赖时间的模型,“TimeInterval”
Value用于为预测值为常数的每一行定义年龄间隔。有关更多信息,请参见Cox模型的时间间隔.的“TimeInterval”
在使用时,这些信息对于条件PD的预测也很重要预测
.
在内部,fitLifetimePDModel
函数使用fitcox
.使用fitLifetimePDModel
对于信用模式提供了一些优势fitcox
.比如,当你直接和fitcox
,对于与时间无关的模型,您需要数据的生存版本,而对于与时间相关的模型,则需要数据的“计数过程”版本(类似于面板数据表单,但带有额外的信息)。的fitLifetimePDModel
函数始终以面板数据形式作为输入,并在调用之前执行数据预处理fitcox
.还有,用终身PD版的考克斯
模型中,您可以访问底层Cox模型中不直接支持的特定于信用的预测和验证功能。万博1manbetx
data = join(data,dataMacro);头(数据)
ID ScoreGroup YOB默认年份GDP市场__ __________ __________ _________ ______ 1低风险10 1997 2.72 7.61 1低风险20 1998 3.57 26.24 1低风险3 0 1999 2.86 18.1 1低风险4 0 2000 2.43 3.19 1低风险5 0 2001 1.26 -10.51 1低风险6 0 2002 -0.59 -22.95 1低风险7 0 2003 0.63 2.78 1低风险8 0 2004 1.85 9.48
pdModelMacro = fitLifetimePDModel(data(TrainDataInd,:)),考克斯的,...“IDVar”,“ID”,“AgeVar”,“小无赖”,“LoanVars”,“ScoreGroup”,...“MacroVars”, {“国内生产总值”,“市场”},“ResponseVar”,“默认”);disp (pdModelMacro)
考克斯与属性:时间间隔:1 ExtrapolationFactor: 1 ModelID:“考克斯”描述:“”模型:[1x1 CoxModel] IDVar:“ID”AgeVar:“YOB”LoanVars:“ScoreGroup”MacroVars:[“GDP”“市场”]responsear:“违约”
disp (pdModelMacro.Model)
Cox比例风险回归模型Beta SE zStat pValue __________ _________ _______ ___________ ScoreGroup_Medium Risk -0.6794 0.037029 -18.348 3.4442e-75 ScoreGroup_Low Risk -1.2442 0.045244 -27.501 1.7116e-166 GDP -0.084533 0.043687 -1.935 0.052995 Market -0.0084411 0.0032221 -2.6198 0.0087991 Log-likelihood: -41742.871
可视化使用预测PD值的准确性(也称为模型校准或预测能力)modelAccuracyPlot
.
DataSetChoice =“测试”;如果DataSetChoice = =“培训”Ind = TrainDataInd;其他的Ind = TestDataInd;结束modelAccuracyPlot (pdModelMacro数据(印第安纳州,:),“小无赖”,“DataID”DataSetChoice)
宏观效应帮助模型与观察到的违约率更接近,与训练数据的匹配看起来像宏观模型的插值。
精度图为ScoreGroup
ROC曲线的创建方法与没有宏观变量的Cox模型相同。
压力测试
方法执行pd的压力测试分析考克斯
宏观模型。
假设监管机构为宏观经济变量提供了以下压力情景国内生产总值
而且市场
.
disp (dataMacroStress)
GDP市场_____ ______基线2.27 15.02不利1.31 4.56严重-0.22 -5.64
下面的代码预测每种类型的pdScoreGroup
以及每个宏观场景。对于每个宏观场景的可视化,取的平均值ScoreGroups
将数据汇总成一个PD小无赖
.
dataStress = table;dataStress。小无赖=repmat((1:8)',3,1); dataStress.ScoreGroup = repmat(""、大小(dataStress.YOB));dataStress.ScoreGroup(1:8) = ScoreGroupLabels{1};dataStress.ScoreGroup(9:16) = ScoreGroupLabels{2};dataStress.ScoreGroup(17:24) = ScoreGroupLabels{3};dataStress。国内生产总值=zeros(size(dataStress.YOB)); dataStress.Market = zeros(size(dataStress.YOB)); ScenarioLabels = dataMacroStress.Properties.RowNames; NumScenarios = length(ScenarioLabels); PDScenarios = zeros(length(x),NumScenarios);为jj=1: numscenes Scenario = Scenario olabels {jj};dataStress.GDP(:) = dataMacroStress.GDP(场景);dataStress.Market(:) = dataMacroStress.Market(场景);为当前场景的每个评分组预测PD。dataStress。PD=预测(pdModelMacro,dataStress);%平均PD评分组,按年龄,可视化在一个单一的情节。PDAvgTable = groupsummary(dataStress,“小无赖”,“的意思是”,“PD”);pdscenes (:,jj) = PDAvgTable.mean_PD;结束图;标题栏(x, PDScenarios) (“压力测试,违约概率”)包含(《读书的岁月》) ylabel (“PD”)传说(“基线”,“不良”,“严重”网格)在
终身PD和ECL
方法计算生存期pd考克斯
宏观模型以及如何计算生命周期预期信用损失(ECL)。
对于生命周期建模,PD模型是相同的,但是使用方式不同。你需要预测的pd不只是提前一个时期,而是每一笔特定贷款生命周期中的每一年。在贷款的整个生命周期中,你还需要宏观场景。本示例设置了可选的长期宏观场景,计算每个场景下的生命周期pd,并计算相应的一年pd、边际pd和生存概率。在每个宏观场景下,每年的生命周期和边际pd都是可视化的。然后计算每个场景的ECL和加权平均生命周期ECL。
为了具体起见,这个例子在贷款的第三年开始时研究了一项8年期贷款,并从数年预测了一年的PD3.
通过8
贷款的期限。这个例子还计算了贷款剩余期限内的生存概率。生存概率之间的关系
以及一年期有条件的pd或风险率
,有时也称为向前PDs,是:
终身PD (LPD)是贷款期限内的累计PD,由生存概率的补项给出:
另一个感兴趣的量是边际PD (MPD),它是连续两个时期之间生命周期PD的增加:
由此可见,边际PD也是连续时期之间生存概率的下降,也是危险率乘以生存概率:
有关更多信息,请参见predictLifetime
而且kaplan meier方法.的predictLifetime
函数支持生命周期P万博1manbetxD,边际PD和生存概率格式。
指定三个宏观经济情景、一个基线预测和两个简单的基线增长值高20%或低20%的变化更快的增长而且经济增长放缓,分别。本例中的场景和相应的概率都是简单的场景,仅供说明之用。使用计量经济学工具箱™或统计学和机器学习工具箱™,可以使用更强大的模型构建更全面的场景集;比如,模拟美国经济(计量经济学工具箱).自动化方法通常可以模拟大量的场景。在实践中,只需要少量的场景,这些场景及其对应的概率是结合定量工具和专家判断来选择的。此外,请参阅在贷款组合ECL计算中纳入宏观经济情景预测该示例显示了ECL计算的详细工作流程,包括宏场景的确定。
CurrentAge = 3;%目前开始第三年的贷款成熟度= 8;贷款在第8年年底结束YOBLifetime = (CurrentAge:Maturity)';NumYearsRemaining =长度(YOBLifetime);dataLifetime = table;dataLifetime。ID=在es(NumYearsRemaining,1); dataLifetime.YOB = YOBLifetime; dataLifetime.ScoreGroup = repmat(“高风险”、大小(dataLifetime.YOB));%高风险dataLifetime。国内生产总值=zeros(size(dataLifetime.YOB)); dataLifetime.Market = zeros(size(dataLifetime.YOB));用于生命周期分析的宏场景gdp预测= [2.3;2.2;2.1;2.0;1.9;1.8);gdp预测= [0.8* gdp预测gdp预测1.2* gdp预测];市场预测= [15;13;11; 9; 7; 5]; MarketPredict = [0.8*MarketPredict MarketPredict 1.2*MarketPredict]; ScenLabels = [“增长放缓”“基线”“快速增长”];NumMacroScen = size(GDPPredict,2);%用于计算生命周期ECL的场景概率PScenario = [0.2;0.5;0.3);PDLifetime = 0(大小(GDPPredict));PDMarginal = 0(大小(GDPPredict));为ii = 1:NumMacroScen dataLifetime。GDP = GDPPredict(:,ii);dataLifetime。市场=市场Predict(:,ii); PDLifetime(:,ii) = predictLifetime(pdModelMacro,dataLifetime);默认情况下返回生命周期PDPDMarginal(:,ii) = predictLifetime(pdModelMacro,dataLifetime,“ProbabilityType”,“边际”);结束%从去年开始生命周期PD,值为0,用于可视化%的目的。tLifetime0 = (datamacrox . year (end): datamacrox . year (end)+NumYearsRemaining)';PDLifetime = [0 (1,NumMacroScen);PDLifetime];tLifetime = tLifetime0(2:结束);图;subplot(2,1,1) plot(tLifetime0,PDLifetime) xticks(tLifetime0)网格在包含(“年”) ylabel (“一生PD”)标题(“按场景划分的终身PD”)传说(ScenLabels“位置”,“最佳”) subplot(2,1,2) bar(tLifetime,PDMarginal)网格在包含(“年”) ylabel (“边际PD”)标题(“按情景划分的边际PD”传奇(ScenLabels)
这些按场景划分的生命周期pd是计算生命周期预期信用损失(ECL)的输入之一。ECL还要求每个场景的缺省损失(LGD)和缺省暴露(EAD)的生命周期值以及场景概率。为简单起见,本例假设LGD和EAD值不变,但是LGD和EAD模型的这些参数可能因场景和时间段而异。有关更多信息,请参见fitLGDModel
而且fitEADModel
.使用portfolioECL
来计算生命周期ECL。
生命周期ECL的计算还需要有效利率(EIR)来进行贴现。在本例中,贴现因子在时间段结束时计算,但可以使用其他贴现时间。例如,你可以使用两个时间段之间的中点;也就是说,用6个月的折现因子贴现第一年的金额,用1.5年的折现因子贴现第二年的金额,以此类推)。
有了这些输入,预计信用损失的时间t的场景年代定义为:
在哪里t表示时间段,年代表示一个场景,和 .
对于每个场景,生命周期ECL的计算方法是跨时间添加ECL,从分析中的第一个时间段到产品的预期生命周期T.在这个例子中,它是5年(这个贷款是一个简单的贷款,还有5年到期):
最后,计算所有场景下这些预期信用损失的加权平均值,以获得单个生命周期ECL值,其中 表示场景概率:
方法支持这些计算万博1manbetxportfolioECL
函数。
LGD = 0.55;默认损失%Ead = 100;默认曝光率%Eir = 0.045;%实际利率PDMarginalTable = table(dataLifetime. table)ID,PDMarginal(:,1), PDMarginal(:,2), PDMarginal(:,3),“VariableNames”, (“ID”ScenLabels]);LGDTable = table(dataLifetime.ID(1), LGD,“VariableNames”, (“ID”,“乐金显示器”]);EADTable = table(dataLifetime.ID(1), EAD,“VariableNames”, (“ID”,“o”]);[totalECL, ECLByID, ECLByPeriod] = portfolioECL(PDMarginalTable, LGDTable, EADTable,“利率”EIR,...“ScenarioNames”ScenLabels,“ScenarioProbabilities”PScenario,“IDVar”,“ID”,“周期性”,“年”);disp (ECLByID);
Id ecl __ ______ 1 2.7441
disp (ECLByPeriod);
ID TimePeriod慢增长基线快增长____________ _____________ ________ _____________ 1 1 0.95927 0.90012 0.8446 12 0.703 0.66366 0.62646 13 0.48217 0.45781 0.43463 14 0.40518 0.38686 0.36931 1 5 0.22384 0.21488 0.20624 1 6 0.13866 0.13381 0.1291
流('终身ECL: %g\n'totalECL)
生命周期ECL: 2.7441
当LGD和EAD不依赖于场景时(即使它们随时间变化),使用寿命PD曲线的加权平均来获得单个平均寿命PD曲线。
边际pdlifetimeweightedavg = PDMarginal*PScenario;MarginalPDLifetimeWeightedAvgTable = table(dataLifetime。ID、MarginalPDLifetimeWeightedAvg“VariableNames”, (“ID”,“PD”]);totalECLByWeightedPD = portfolioECL(MarginalPDLifetimeWeightedAvgTable, LGDTable, EADTable,“利率”EIR,...“IDVar”,“ID”,“周期性”,“年”);流('寿命ECL,使用加权寿命PD: %g,由于LGD和EAD恒定,结果相同。\n',...totalECLByWeightedPD)
寿命ECL,使用加权寿命PD: 2.7441,由于LGD和EAD不变,结果相同。
然而,当LGD和EAD值随着场景而变化时,将传递与场景相关的输入PDMarginalTable
输入)到portfolioECL
函数首先计算场景级的ECL值。然后您可以找到ECL值的加权平均值。例如,请参见在贷款组合ECL计算中纳入宏观经济情景预测其中所有输入(边际PD, LGD和EAD)都会随时期变化,并对宏观经济情景敏感。
结论
这个例子展示了如何为pd拟合Cox模型,如何执行pd的压力测试,以及如何计算pd和ECL的寿命。一个类似的例子,基于面板数据的消费者信贷违约概率压力测试,遵循相同的工作流程,但使用逻辑回归,而不是Cox回归。的fitLifetimePDModel
功能支持万博1manbetx考克斯
,物流
,Probit
模型。在本例结束时,寿命pd和ECL的计算也可以使用逻辑或probit模型来执行。有关示例,请参见预期信用损失计算.
参考文献
[1] Baesens, Bart, Daniel Roesch和Harald Scheule。信用风险分析:SAS中的测量技术、应用和示例。威利,2016年。
贝利尼,蒂齐亚诺。IFRS 9和CECL信用风险建模和验证:R和SAS中实例的实用指南。加州圣地亚哥:爱思唯尔,2019年。
[3]美联储,综合资本分析和审查(CCAR):https://www.federalreserve.gov/bankinforeg/ccar.htm
英国银行,压力测试:https://www.bankofengland.co.uk/financial-stability
[5]欧洲银行管理局,全欧盟压力测试:https://www.eba.europa.eu/risk-analysis-and-data/eu-wide-stress-testing
另请参阅
fitLifetimePDModel
|预测
|predictLifetime
|modelDiscrimination
|modelDiscriminationPlot
|modelAccuracy
|modelAccuracyPlot
|物流
|Probit
|考克斯