predictLifetime

Вычисление совокупного времени жизни PD, предельной PD и вероятности выживания

Описание

пример

LifeTimePredictedPD = predictLifetime(pdModel,data) вычисляет совокупную вероятность жизни по умолчанию (PD), предельную PD и вероятность выживания.

пример

LifeTimePredictedPD = predictLifetime(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе.

Примеры

свернуть все

В этом примере показано, как использовать fitLifetimePDModel для подгонки данных к Probit модель, а затем предсказать пожизненную вероятность дефолта (PD).

Загрузка данных

Загрузите данные кредитного портфеля.

load RetailCreditPanelData.mat
disp(head(data))
    ID    ScoreGroup    YOB    Default    Year
    __    __________    ___    _______    ____

    1      Low Risk      1        0       1997
    1      Low Risk      2        0       1998
    1      Low Risk      3        0       1999
    1      Low Risk      4        0       2000
    1      Low Risk      5        0       2001
    1      Low Risk      6        0       2002
    1      Low Risk      7        0       2003
    1      Low Risk      8        0       2004
disp(head(dataMacro))
    Year     GDP     Market
    ____    _____    ______

    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(head(data))
    ID    ScoreGroup    YOB    Default    Year     GDP     Market
    __    __________    ___    _______    ____    _____    ______

    1      Low Risk      1        0       1997     2.72      7.61
    1      Low Risk      2        0       1998     3.57     26.24
    1      Low Risk      3        0       1999     2.86      18.1
    1      Low Risk      4        0       2000     2.43      3.19
    1      Low Risk      5        0       2001     1.26    -10.51
    1      Low Risk      6        0       2002    -0.59    -22.95
    1      Low Risk      7        0       2003     0.63      2.78
    1      Low Risk      8        0       2004     1.85      9.48

Данные о разделах

Разделите данные на обучающие и тестовые разделы.

nIDs = max(data.ID);
uniqueIDs = unique(data.ID);

rng('default'); % for reproducibility
c = cvpartition(nIDs,'HoldOut',0.4);

TrainIDInd = training(c);
TestIDInd = test(c);

TrainDataInd = ismember(data.ID,uniqueIDs(TrainIDInd));
TestDataInd = ismember(data.ID,uniqueIDs(TestIDInd));

Создайте Probit Жизненная модель PD

Использование fitLifetimePDModel для создания Probit моделировать с использованием обучающих данных.

pdModel = fitLifetimePDModel(data(TrainDataInd,:),"Probit",...
    'AgeVar','YOB',...
    'IDVar','ID',...
    'LoanVars','ScoreGroup',...
    'MacroVars',{'GDP','Market'},...
    'ResponseVar','Default');
disp(pdModel)
  Probit with properties:

        ModelID: "Probit"
    Description: ""
          Model: [1x1 classreg.regr.CompactGeneralizedLinearModel]
          IDVar: "ID"
         AgeVar: "YOB"
       LoanVars: "ScoreGroup"
      MacroVars: ["GDP"    "Market"]
    ResponseVar: "Default"

Отобразите базовую модель.

disp(pdModel.Model)
Compact generalized linear regression model:
    probit(Default) ~ 1 + ScoreGroup + YOB + GDP + Market
    Distribution = Binomial

Estimated Coefficients:
                               Estimate        SE         tStat       pValue   
                              __________    _________    _______    ___________

    (Intercept)                  -1.6267      0.03811    -42.685              0
    ScoreGroup_Medium Risk      -0.26542      0.01419    -18.704     4.5503e-78
    ScoreGroup_Low Risk         -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
    Market                    -0.0029609    0.0010618    -2.7885      0.0052954


388097 observations, 388091 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 1.85e+03, p-value = 0

Предсказание PD продолжительности жизни на обучающих и тестовых данных

Используйте predictLifetime функция для получения PD в течение жизни на обучающих или тестовых данных. Чтобы получить условные PD, используйте predict функция. Для валидации модели используйте modelDiscrimination и modelAccuracy функции на обучающих или тестовых данных.

DataSetChoice = "Testing";
if DataSetChoice = ="Training"
    Ind = TrainDataInd;
else
    Ind = TestDataInd;
end

% Predict lifetime PD
PD = predictLifetime (pdModel, данные (Ind,:));
head (данные (Ind,:))
ans=8×7 table
    ID    ScoreGroup     YOB    Default    Year     GDP     Market
    __    ___________    ___    _______    ____    _____    ______

    2     Medium Risk     1        0       1997     2.72      7.61
    2     Medium Risk     2        0       1998     3.57     26.24
    2     Medium Risk     3        0       1999     2.86      18.1
    2     Medium Risk     4        0       2000     2.43      3.19
    2     Medium Risk     5        0       2001     1.26    -10.51
    2     Medium Risk     6        0       2002    -0.59    -22.95
    2     Medium Risk     7        0       2003     0.63      2.78
    2     Medium Risk     8        0       2004     1.85      9.48

Предсказание PD в течение срока службы на новых данных

Модели PD в течение жизни используются для предсказаний существующих кредитов. The predictLifetime функция требует прогнозируемых значений как для кредита, так и для макропредикторов на оставшуюся часть срока действия кредита.

The DataPredictLifetime.mat файл содержит прогнозы для двух ссуд, а также для переменных макроса. Одному кредиту три года в конце 2019 года, со сроком жизни 10 лет, а другому - шесть лет со сроком жизни 10 лет. The ScoreGroup является постоянным, и значения возраста являются инкрементными. Для переменных макроса прогнозы для предикторов макроса должны охватывать самое длинное время жизни в портфеле.

load DataPredictLifetime.mat

disp(LoanData)
     ID      ScoreGroup      YOB    Year
    ____    _____________    ___    ____

    1304    "Medium Risk"     4     2020
    1304    "Medium Risk"     5     2021
    1304    "Medium Risk"     6     2022
    1304    "Medium Risk"     7     2023
    1304    "Medium Risk"     8     2024
    1304    "Medium Risk"     9     2025
    1304    "Medium Risk"    10     2026
    2067    "Low Risk"        7     2020
    2067    "Low Risk"        8     2021
    2067    "Low Risk"        9     2022
    2067    "Low Risk"       10     2023
disp(MacroScenario)
    Year    GDP    Market
    ____    ___    ______

    2020    1.1     4.5  
    2021    0.9     1.5  
    2022    1.2       5  
    2023    1.4     5.5  
    2024    1.6       6  
    2025    1.8     6.5  
    2026    1.8     6.5  
    2027    1.8     6.5  
LifetimeData = join(LoanData,MacroScenario);
disp(LifetimeData)
     ID      ScoreGroup      YOB    Year    GDP    Market
    ____    _____________    ___    ____    ___    ______

    1304    "Medium Risk"     4     2020    1.1     4.5  
    1304    "Medium Risk"     5     2021    0.9     1.5  
    1304    "Medium Risk"     6     2022    1.2       5  
    1304    "Medium Risk"     7     2023    1.4     5.5  
    1304    "Medium Risk"     8     2024    1.6       6  
    1304    "Medium Risk"     9     2025    1.8     6.5  
    1304    "Medium Risk"    10     2026    1.8     6.5  
    2067    "Low Risk"        7     2020    1.1     4.5  
    2067    "Low Risk"        8     2021    0.9     1.5  
    2067    "Low Risk"        9     2022    1.2       5  
    2067    "Low Risk"       10     2023    1.4     5.5  

Спрогнозируйте PD в течение срока службы и сохраните выход в виде нового столбца таблицы для удобства.

LifetimeData.PredictedPD = predictLifetime(pdModel,LifetimeData);
disp(LifetimeData)
     ID      ScoreGroup      YOB    Year    GDP    Market    PredictedPD
    ____    _____________    ___    ____    ___    ______    ___________

    1304    "Medium Risk"     4     2020    1.1     4.5       0.0080202 
    1304    "Medium Risk"     5     2021    0.9     1.5        0.014093 
    1304    "Medium Risk"     6     2022    1.2       5        0.018156 
    1304    "Medium Risk"     7     2023    1.4     5.5        0.020941 
    1304    "Medium Risk"     8     2024    1.6       6        0.022827 
    1304    "Medium Risk"     9     2025    1.8     6.5        0.024086 
    1304    "Medium Risk"    10     2026    1.8     6.5        0.024945 
    2067    "Low Risk"        7     2020    1.1     4.5       0.0015728 
    2067    "Low Risk"        8     2021    0.9     1.5       0.0027146 
    2067    "Low Risk"        9     2022    1.2       5        0.003431 
    2067    "Low Risk"       10     2023    1.4     5.5       0.0038939 

Визуализируйте прогнозируемый срок службы ПД для компании.

CompanyIDChoice = "1304";
CompanyID = str2double (CompanyIDChoice);
IndPlot = LifetimeData.ID = = CompanyID;
График (Lifetime Data. YOB (Ind Plot), Lifetime Data. Predicted PD (Ind Plot))
сетка on
xlabel ('YOB')
xticks (LifetimeData.YOB (IndPlot))
ylabel ('Lifetime PD')
заголовок (strcat ("Company ", CompanyIDChoice))

Figure contains an axes. The axes with title Company 1304 contains an object of type line.

Входные параметры

свернуть все

Вероятность модели по умолчанию, заданная как Logistic или Probit объект, ранее созданный с использованием fitLifetimePDModel.

Типы данных: object

Жизненные данные, заданные как NumRows-by- NumCols таблица с проецируемыми значениями предиктора для создания пожизненных предсказаний. Имена предикторов и типы данных должны быть согласованы с базовой моделью. The IDVar свойство pdModel Вход используется, чтобы идентифицировать столбец, содержащий значения идентификаторов в таблице, и идентификаторы используются, чтобы идентифицировать строки, соответствующие различным идентификаторам, и сделать предсказания жизни для каждого идентификатора.

Типы данных: table

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: LifetimeData = predictLifetime(pdModel,Data,'ProbabilityType','survival')

Тип вероятности, заданный как разделенная разделенными запятой парами, состоящая из 'ProbabilityType' и вектор символов или строка.

Типы данных: char | string

Выходные аргументы

свернуть все

Предсказанные значения PD во время жизни, возвращенные как NumRows-by- 1 числовой вектор.

Подробнее о

свернуть все

Срок службы ПД

Lifetime PD - вероятность события по умолчанию в течение срока службы финансового актива.

Lifetime PD обычно относится к совокупной вероятности по умолчанию, заданной как

PDcumulative(t)=P{Tt}

где T - время по умолчанию.

Для примера прогнозируемый срок службы, совокупный PD для второго года является вероятностью того, что заемщик по умолчанию устанавливает значение по умолчанию в любое время между текущим и двумя годами.

Близкая концепция, используемая для расчета ожидаемого кредитного убытка (ECL) в течение всего срока службы, является marginal PD, заданной как

PDmarginal=PDcumulative(t)PDcumulative(t1)

Близкая вероятность является survival probability, которая является дополнением совокупной вероятности и сообщается как

S(t)=P{T>1}=1PDcumulative(t)

Следующая рекурсивная формула показывает связь между условными PD и вероятностью выживания:

S(0)=1S(1)=S(0)(1PDcond(1))...S(t)=S(t1)(1PDcond(t))

The predictLifetime функция вызывает predict функция, чтобы получить условную PD, а затем преобразует ее в выживание, маргинальную или пожизненную совокупную PD, используя предыдущие формулы.

Ссылки

[1] Baesens, Bart, Daniel Roesch, and Harald Scheule. Аналитика кредитных рисков: методы измерения, приложения и примеры в SAS. Уайли, 2016.

[2] Беллини, Тициано. МСФО (IFRS) 9 и CECL «Моделирование и валидация кредитных рисков: практическое руководство с примерами, используемыми в R и SAS». Сан-Диего, Калифорния: Elsevier, 2019.

[3] Бриден, Джозеф. Жизнь с CECL: Словарь моделирования. Santa Fe, NM: Prescient Models LLC, 2018.

Введенный в R2020b