主要内容

预测

计算条件PD

描述

例子

conditionalPD=预测(<一个href="#mw_f2c08ad6-ae33-487f-a5f7-93dcbf7180eb" class="intrnllnk">pdModel,<一个href="#mw_a951c184-48bc-4372-886c-25c6aa5378c4" class="intrnllnk">数据计算违约条件概率(PD)。

例子

全部折叠

这个例子展示了如何使用<一个href="//www.tatmou.com/help/risk/fitlifetimepdmodel.html" class="a">fitLifetimePDModel来拟合数据<一个href="//www.tatmou.com/help/risk/risk.credit.pd.probit.html" class="a">Probit然后预测违约的条件概率(PD)。

加载数据

加载信贷组合数据。

负载RetailCreditPanelData.matdisp(头(数据))
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
disp(头(dataMacro))
年GDP市场____ _____ ______ 1997 2.72 7.61 1998 3.57 26.24 1999 2.86 18.1 2000 2.43 3.19 2001 1.26 -10.51 2002 -0.59 -22.95 2003 0.63 2.78 2004 1.85 9.48

将两个数据组件连接到一个数据集中。

data = join(data,dataMacro);disp(头(数据))
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

对数据进行分区

将数据分成训练分区和测试分区。

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));

创建一个Probit终身PD模型

使用<一个href="//www.tatmou.com/help/risk/fitlifetimepdmodel.html" class="a">fitLifetimePDModel要创建<一个href="//www.tatmou.com/help/risk/risk.credit.pd.probit.html" class="a">Probit模型。

pdModel = fitLifetimePDModel(data(TrainDataInd,:)),“Probit”...“AgeVar”“小无赖”...“IDVar”“ID”...“LoanVars”“ScoreGroup”...“MacroVars”, {“国内生产总值”“市场”},...“ResponseVar”“默认”);disp (pdModel)
Probit与属性:ModelID: "Probit"描述:""模型:[1x1 classreg.regr。CompactGeneralizedLinearModel] IDVar: "ID" AgeVar: "YOB" LoanVars: "ScoreGroup" MacroVars: ["GDP" "市场"]responsear: "违约"

显示底层模型。

disp (pdModel.Model)
紧凑广义线性回归模型:probit(Default) ~ 1 + ScoreGroup + YOB + GDP +市场分布=二项估计系数:估计SE tStat pValue __________ _________ _______ ___________(截距)-1.6267 0.03811 -42.685 0 ScoreGroup_Medium风险-0.26542 0.01419 -18.704 4.5503e-78 ScoreGroup_Low风险- 0.0.46794 0.016364 -28.595 7.775e-180 YOB -0.11421 0.0049724 -22.969 9.6208e-117 GDP -0.041537 0.014807 -2.8052 0.0050291市场-0.0029609 0.0010618 -2.7885 0.0052954 388097观测值,388091误差自由度离散度:1 Chi^2统计与常数模型:1.85e+03, p值= 0

训练和测试数据预测

预测训练或测试数据集的PD。

DataSetChoice =“培训”如果DataSetChoice = =“培训”Ind = TrainDataInd;其他的Ind = TestDataInd;结束%预测条件PDPD = predict(pdModel,data(Ind,:));头(数据(印第安纳州,:))
ans =8×7表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
disp (PD (1:8))
0.0095 0.0054 0.0045 0.0039 0.0036 0.0036 0.0017 0.0009

您可以使用以下工具分析和验证这些预测<一个href="//www.tatmou.com/help/risk/logistic.modeldiscrimination_lifetimepd.html" class="a">modelDiscrimination而且<一个href="//www.tatmou.com/help/risk/logistic.modelaccuracy_lifetimepd.html" class="a">modelAccuracy

这个例子展示了如何使用<一个href="//www.tatmou.com/help/risk/fitlifetimepdmodel.html" class="a">fitLifetimePDModel来拟合数据<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html" class="a">考克斯然后预测违约的条件概率(PD)。

加载数据

加载信贷组合数据。

负载RetailCreditPanelData.matdisp(头(数据))
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
disp(头(dataMacro))
年GDP市场____ _____ ______ 1997 2.72 7.61 1998 3.57 26.24 1999 2.86 18.1 2000 2.43 3.19 2001 1.26 -10.51 2002 -0.59 -22.95 2003 0.63 2.78 2004 1.85 9.48

将两个数据组件连接到一个数据集中。

data = join(data,dataMacro);disp(头(数据))
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

对数据进行分区

将数据分成训练分区和测试分区。

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));

创建一个考克斯终身PD模型

使用<一个href="//www.tatmou.com/help/risk/fitlifetimepdmodel.html" class="a">fitLifetimePDModel要创建<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html" class="a">考克斯模型。

ModelType =“考克斯”;pdModel = fitLifetimePDModel(data(TrainDataInd,:),ModelType,...“IDVar”“ID”“AgeVar”“小无赖”...“LoanVars”“ScoreGroup”“MacroVars”, {“国内生产总值”“市场”},...“ResponseVar”“默认”);disp (pdModel)
考克斯与属性:时间间隔:1 ExtrapolationFactor: 1 ModelID:“考克斯”描述:“”模型:[1x1 CoxModel] IDVar:“ID”AgeVar:“YOB”LoanVars:“ScoreGroup”MacroVars:[“GDP”“市场”]responsear:“违约”

显示底层模型。

disp (pdModel.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

预测训练数据中未观察到的年龄值

Cox模型对训练数据中观察到的年龄值范围进行预测。要外推训练数据中大于最大年龄的年龄,需要一个外推规则。

当使用预测与一个<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html" class="a">考克斯模型,你可以设置ExtrapolationFactor的属性<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html" class="a">考克斯模型。默认情况下,ExtrapolationFactor设置为1.年龄值(AgeVar)大于训练数据中观察到的最大年龄,预测使用训练数据中观察到的最大年龄来计算条件PD。特别是,如果预测值不改变,只有年龄值改变时,预测PD值是常数ExtrapolationFactor1

为了说明这一点,选择与单个ID对应的行,并添加新的年龄增量值的新行,超出训练数据中观察到的最大年龄。训练数据中观察到的最大年龄为8岁;出于说明目的,添加带有年龄的行91011,12

%选择一个ID对应的行% ID 1从第1行到第8行只需要ID、年龄(YOB)和预测变量dataNewAge =数据(1:8,{“ID”“小无赖”“ScoreGroup”“国内生产总值”“市场”});%分配更多行这一行复制了相同的预测值dataNewAge(9:12,:) = repmat(dataNewAge(8,:),4,1);重置年龄值为9,10,11,12dataNewAge.YOB(9:12) = (9:12)';显示新的数据集disp (dataNewAge)
ID小无赖ScoreGroup GDP市场  __ ___ __________ _____ ______ 1 1低风险2.72 - 7.61 1 2低风险低风险2.86 - 18.1 3.57 - 26.24 1 - 3 1 4低风险2.43 - 3.19 1 5低风险1.26 -10.51 1 6低风险-0.59 -22.95 1 7低风险0.63 2.78 1 8低风险1.85 - 9.48 1 9低风险1.85 - 9.48 1 10 11低风险低风险1.85 9.48 1 1.85 9.48 1 12低风险1.85 - 9.48

当具有新年龄值的行中预测值不变且外推因子为时1时,预测PD值为常数。如果将外推因子设置为小于1,则随着年龄值的增大,预测PD值逐渐减小,并以指数形式向零递减。

%外推因子可调整pdModel。Extr一个pol一个t我onF一个ctor =1将预测的条件PD存储在同一个表中dataNewAge。PD=预测(pdModel,d一个t一个NewAge); disp(dataNewAge)
ID小无赖ScoreGroup GDP市场PD  __ ___ __________ _____ ______ __________ 1 1低风险2.72 7.61 0.0092197 1 2低风险低风险2.86 18.1 0.0046079 3.57 26.24 0.005158 1 - 3 1 4低风险2.43 3.19 0.0041351 1 5低风险6低风险-0.59 -22.95 0.0041128 1.26 -10.51 0.003645 1 1 7低风险0.63 2.78 0.0017034 1 8低风险1.85 9.48 0.00092551 1 9低风险1.85 9.48 0.00092551 1 10 11低风险低风险1.85 9.48 0.00092551 1 12低风险1.85 9.48 0.00092551 1.85 9.48 0.00092551 1

此外,观察外推因子对寿命预测的影响也是有用的。

绘制预测的条件PD值和寿命PD值,以查看外推因素对这两个概率的影响。垂直虚线分隔了已知的年龄值(直到并包括年龄值)8),从训练数据中没有观察到的年龄值(大于8).如果外推因子是1,寿命PD呈稳定上升趋势,条件PD为常数。如果外推因子设置为较小的值,如0.5,生命周期PD迅速变平,因为条件PD迅速下降到零。

dataNewAge。LifetimePD = predictLifetime(pdModel,dataNewAge);图;yyaxis情节(dataNewAge.YOB dataNewAge.PD,‘*’) ylabel (“有条件的PD”) yyaxis正确的情节(dataNewAge.YOB dataNewAge.LifetimePD) ylabel (“一生PD”)标题(“未观察到年龄值的外推PD”)包含(“年龄”)参照线(8,“:”样本外的网格)

图中包含一个轴对象。标题为Extrapolated PD for observed Age Values的axes对象包含3个类型为line、constantline的对象。

输入参数

全部折叠

默认模型的概率,指定为先前创建的<一个href="//www.tatmou.com/help/risk/risk.credit.pd.logistic.html">物流,<一个href="//www.tatmou.com/help/risk/risk.credit.pd.probit.html">Probit,或<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html">考克斯对象使用<一个href="//www.tatmou.com/help/risk/fitlifetimepdmodel.html">fitLifetimePDModel

数据类型:对象

数据,指定为aNumRows——- - - - - -NumCols表与预测预测器值,以进行寿命预测。预测器名称和数据类型必须与底层模型一致。

数据类型:表格

输出参数

全部折叠

默认值的预测条件概率,返回为aNumRows——- - - - - -1数值向量。

更多关于

全部折叠

有条件的PD

有条件的PD是在没有违约的情况下违约的概率。

例如,预测第二年的有条件PD是借款人在第二年违约的概率,前提是借款人在第一年没有违约。

条件PD的公式是

P D t P t Δ t < T t | T > t Δ t

在哪里

  • T是默认的时间。

  • Δt“时间间隔”是否与面板训练的周期性一致数据(例如,每年一行)和默认指标值的定义。

默认指示灯为1如果有超过1年的违约。有关时间间隔的详细信息,请参见<一个href="//www.tatmou.com/help/risk/risk.credit.pd.logistic.html" class="a">Logistic模型的时间间隔,<一个href="//www.tatmou.com/help/risk/risk.credit.pd.probit.html" class="a">Probit模型的时间间隔,<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html" class="a">Cox模型的时间间隔.

在后面的公式中<一个href="//www.tatmou.com/help/risk/risk.credit.pd.logistic.html">物流,<一个href="//www.tatmou.com/help/risk/risk.credit.pd.probit.html">Probit,<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html">考克斯模型时,符号为:

  • Xt)为时间对应行的预测器数据t

  • β是基础模型的系数向量。

为<一个href="//www.tatmou.com/help/risk/risk.credit.pd.logistic.html">物流模型时,条件PD计算为:

P D c o n d t 1 1 + 经验值 X t β

为<一个href="//www.tatmou.com/help/risk/risk.credit.pd.probit.html">Probit模型时,条件PD计算为:

P D c o n d t ϕ X t β

为<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html">考克斯模型时,条件PD计算为

P D c o n d t 1 年代 t 年代 t Δ t

在哪里年代是生存函数。生存函数依赖于通过危险比的预测值。有关更多信息,请参见<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html" class="a">考克斯比例风险模型.有不同的方法显式地表示PD对预测器的依赖。的实现。预测函数使用的基线累积危险率函数由

H 0 t 0 t h 0 u d u

在哪里h0是基线危险率。有关更多信息,请参见<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html" class="a">考克斯比例风险模型.使用基线累积危险率,PD公式考克斯模型写为:

P D c o n d t 1 经验值 H 0 t H 0 t Δ t 经验值 X t β

外推的考克斯模型

基线累积危险函数H0考克斯模型以非参数方式拟合观测到的年龄值(即观测到的“时间到事件”)。

因此,需要某种形式的插值或外推来预测训练中没有观察到的年龄值数据.在预测函数,线性插值方法如下:

  • 如果已知年龄值为t1t2、……tN,t-t-1t,如果t0t1——Δt,那么:

    • H0t) = 0,对于所有tt0

    • H0t)是线性插值的t-1tt,因为= 0,…N

    • H0t)线性外推t>tN,沿着最后两个已知值定义的斜率H0tN- 1),H0tN).

这意味着基线危害率h0是分段常数,在最后一个拟合值之后保持不变。缺省情况下,在最后一个已知的年龄值之后,PD的计算方式如下

P D c o n d t | X t P D c o n d t N | X t

t>tN.此行为与ExtrapolationFactor的属性<一个href="//www.tatmou.com/help/risk/risk.credit.pd.cox.html">考克斯模型。有关更多信息,请参见<一个href="//www.tatmou.com/help/risk/logistic.predict_lifetimepd.html" class="intrnllnk">用Cox终身PD模型预测条件PD.

的外推因子考克斯模型

所实现的外推公式预测函数包括ExtrapolationFactor属性值

P D c o n d t N + k | X t N + k E x t r 一个 p o l 一个 t o n F 一个 c t o r k P D c o n d t N | X t N + k

在哪里tN+k是时间值k在训练数据中观察到的最大年龄之后的时间段tN,也就是说,tN+ktN+kt

默认情况下,外推因子为1,从而得到公式中的<一个href="//www.tatmou.com/help/risk/logistic.predict_lifetimepd.html" class="intrnllnk">考克斯模型的外推部分,其中PD值随着年龄的增加保持不变-如果预测值没有变化。如果将外推因子设置为小于1时,预测PD值呈指数下降0.因子越小,条件PD值下降得越快,生命周期PD值趋于平缓的速度就越快。

一般来说,PD值趋向于在贷款期限结束时下降,因为借款人池在较早的时候得到了治愈。这种情况发生的速度取决于产品,必须根据具体情况进行校准。

请注意,<一个href="//www.tatmou.com/help/risk/risk.credit.pd.logistic.html">物流而且<一个href="//www.tatmou.com/help/risk/risk.credit.pd.probit.html">Probit模型不需要特别考虑插值或外推。这些模型是全参数模型,并预测数据集中观察到的数值之间或超出数值的任何值的条件PD。

参考文献

[1] Baesens, Bart, Daniel Roesch和Harald Scheule。信用风险分析:SAS中的测量技术、应用和示例。威利,2016年。

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

布里登,约瑟夫。与CECL一起生活:建模词典。圣达菲,NM: Prescient Models LLC, 2018。

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

R2020b中介绍