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 функция, чтобы получить пожизненные ФУНТЫ на обучении или тестовых данных. Чтобы получить условные ФУНТЫ, используйте predict функция. Для проверки допустимости модели используйте modelDiscrimination и modelAccuracy функции на обучении или тестовых данных.

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

% Predict lifetime PD
PD = predictLifetime (pdModel, данные (Ind, :));
голова (данные (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 файл содержит проекции для двух кредитов и также для макро-переменных. Одной ссуде три года в конце 2 019 со временем жизни 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  

Предскажите пожизненные ФУНТЫ и сохраните выход как новый столбец таблицы для удобства.

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;
график (LifetimeData.YOB(IndPlot), LifetimeData.PredictedPD(IndPlot))
сетка on
xlabel'YOB')
xticks (LifetimeData.YOB(IndPlot))
yLabel 'Lifetime PD')
заголовок (strcat ("Company ", CompanyIDChoice))

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

свернуть все

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Больше о

свернуть все

Пожизненный PD

Lifetime PD является вероятностью стандартного события за время жизни финансового актива.

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

PDcumulative(t)=P{Tt}

где T является временем, чтобы принять значение по умолчанию.

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

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

PDmarginal=PDcumulative(t)PDcumulative(t1)

Тесно связанной вероятностью является survival probability, который является дополнением интегральной вероятности и сообщается как

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

Следующая рекурсивная формула показывает отношение между условными ФУНТАМИ и вероятностью выживания:

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

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

Ссылки

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

[2] Беллини, Тициано. МСФО 9 и моделирование кредитного риска CECL и валидация: практическое руководство с примерами работало в R и SAS. Сан-Диего, CA: Elsevier, 2019.

[3] Breeden, Джозеф. Проживание с CECL: словарь моделирования. Санта-Фе, NM: наделенный даром предвидения LLC моделей, 2018.

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте