exponenta event banner

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

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

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

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

% Predict lifetime PD
PD = predictLifetime(pdModel,data(Ind,:));
head(data(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 используются для прогнозирования существующих ссуд. predictLifetime функция требует прогнозируемых значений для предикторов ссуды и макрокоманд на оставшуюся часть срока действия ссуды.

DataPredictLifetime.mat файл содержит прогнозы для двух ссуд, а также для переменных макросов. Одному кредиту на конец 2019 года три года при сроке действия 10 лет, а другому - шесть лет при сроке действия 10 лет. 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 

Визуализация прогнозируемого срока службы PD для компании.

CompanyIDChoice = "1304";
CompanyID = str2double(CompanyIDChoice);
IndPlot = LifetimeData.ID==CompanyID;
plot(LifetimeData.YOB(IndPlot),LifetimeData.PredictedPD(IndPlot))
grid on
xlabel('YOB')
xticks(LifetimeData.YOB(IndPlot))
ylabel('Lifetime PD')
title(strcat("Company ",CompanyIDChoice))

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Подробнее

свернуть все

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

Время жизни PD - это вероятность события дефолта в течение срока жизни финансового актива.

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

PDкумулятивный (t) =P{T≤t}

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

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

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

PDmarginal = PDкумулятивный (t) PDкумулятивный (t − 1)

Тесно связанная вероятность - это вероятность выживания, которая является дополнением кумулятивной вероятности и сообщается как

S (t) = P {T > 1} = 1 PDсовокупный (t)

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

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

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

Ссылки

[1] Бэзенс, Барт, Даниэль Рош и Харальд Шиле. Анализ кредитных рисков: методы измерения, приложения и примеры в SAS. Уайли, 2016.

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

[3] Бриден, Иосиф. Жизнь с CECL: The Modeling Dictionary. Santa Fe, NM: Prescient Models LLC, 2018.

Представлен в R2020b