transprob

Оцените вероятности перехода из данных о кредитных рейтингах

Описание

пример

[transMat,sampleTotals,idTotals] = transprob(data) создает матрицу перехода из исторических данных кредитных рейтингов.

пример

[transMat,sampleTotals,idTotals] = transprob(___,Name,Value) добавляют дополнительные аргументы пары "имя-значение".

Примеры

свернуть все

Используя историческую таблицу кредитного рейтинга как входные данные от Data_TransProb.mat отобразите первые десять строк и вычислите матрицу перехода:

load Data_TransProb
data(1:10,:)
ans=10×3 table
         ID              Date          Rating 
    ____________    _______________    _______

    {'00010283'}    {'10-Nov-1984'}    {'CCC'}
    {'00010283'}    {'12-May-1986'}    {'B'  }
    {'00010283'}    {'29-Jun-1988'}    {'CCC'}
    {'00010283'}    {'12-Dec-1991'}    {'D'  }
    {'00013326'}    {'09-Feb-1985'}    {'A'  }
    {'00013326'}    {'24-Feb-1994'}    {'AA' }
    {'00013326'}    {'10-Nov-2000'}    {'BBB'}
    {'00014413'}    {'23-Dec-1982'}    {'B'  }
    {'00014413'}    {'20-Apr-1988'}    {'BB' }
    {'00014413'}    {'16-Jan-1998'}    {'B'  }

% Estimate transition probabilities with default settings
transMat = transprob(data)
transMat = 8×8

   93.1170    5.8428    0.8232    0.1763    0.0376    0.0012    0.0001    0.0017
    1.6166   93.1518    4.3632    0.6602    0.1626    0.0055    0.0004    0.0396
    0.1237    2.9003   92.2197    4.0756    0.5365    0.0661    0.0028    0.0753
    0.0236    0.2312    5.0059   90.1846    3.7979    0.4733    0.0642    0.2193
    0.0216    0.1134    0.6357    5.7960   88.9866    3.4497    0.2919    0.7050
    0.0010    0.0062    0.1081    0.8697    7.3366   86.7215    2.5169    2.4399
    0.0002    0.0011    0.0120    0.2582    1.4294    4.2898   81.2927   12.7167
         0         0         0         0         0         0         0  100.0000

Используя исторические табличные входные данные кредитного рейтинга от Data_TransProb.mat, вычислите матрицу перехода использование cohort алгоритм:

%Estimate transition probabilities with 'cohort' algorithm
transMatCoh = transprob(data,'algorithm','cohort')
transMatCoh = 8×8

   93.1345    5.9335    0.7456    0.1553    0.0311         0         0         0
    1.7359   92.9198    4.5446    0.6046    0.1560         0         0    0.0390
    0.1268    2.9716   91.9913    4.3124    0.4711    0.0544         0    0.0725
    0.0210    0.3785    5.0683   89.7792    4.0379    0.4627    0.0421    0.2103
    0.0221    0.1105    0.6851    6.2320   88.3757    3.6464    0.2873    0.6409
         0         0    0.0761    0.7230    7.9909   86.1872    2.7397    2.2831
         0         0         0    0.3094    1.8561    4.5630   80.8971   12.3743
         0         0         0         0         0         0         0  100.0000

Используя исторические данные о кредитном рейтинге с инвестиционным классом оценок ('IG'), спекулятивный класс ('SG'), и значение по умолчанию ('D'), от Data_TransProb.mat отобразите первые десять строк и вычислите матрицу перехода:

dataIGSG(1:10,:)
ans=10×3 table
         ID              Date          Rating
    ____________    _______________    ______

    {'00011253'}    {'04-Apr-1983'}    {'IG'}
    {'00012751'}    {'17-Feb-1985'}    {'SG'}
    {'00012751'}    {'19-May-1986'}    {'D' }
    {'00014690'}    {'17-Jan-1983'}    {'IG'}
    {'00012144'}    {'21-Nov-1984'}    {'IG'}
    {'00012144'}    {'25-Mar-1992'}    {'SG'}
    {'00012144'}    {'07-May-1994'}    {'IG'}
    {'00012144'}    {'23-Jan-2000'}    {'SG'}
    {'00012144'}    {'20-Aug-2001'}    {'IG'}
    {'00012937'}    {'07-Feb-1984'}    {'IG'}

transMatIGSG = transprob(dataIGSG,'labels',{'IG','SG','D'})
transMatIGSG = 3×3

   98.6719    1.2020    0.1261
    3.5781   93.3318    3.0901
         0         0  100.0000

Используя исторические данные о кредитном рейтинге с числовыми рейтингами для инвестиционного класса (1), спекулятивный класс (2), и значение по умолчанию (3), от Data_TransProb.mat отобразите первые десять строк и вычислите матрицу перехода:

dataIGSGnum(1:10,:)
ans=10×3 table
         ID              Date          Rating
    ____________    _______________    ______

    {'00011253'}    {'04-Apr-1983'}      1   
    {'00012751'}    {'17-Feb-1985'}      2   
    {'00012751'}    {'19-May-1986'}      3   
    {'00014690'}    {'17-Jan-1983'}      1   
    {'00012144'}    {'21-Nov-1984'}      1   
    {'00012144'}    {'25-Mar-1992'}      2   
    {'00012144'}    {'07-May-1994'}      1   
    {'00012144'}    {'23-Jan-2000'}      2   
    {'00012144'}    {'20-Aug-2001'}      1   
    {'00012937'}    {'07-Feb-1984'}      1   

transMatIGSGnum = transprob(dataIGSGnum,'labels',{1,2,3})
transMatIGSGnum = 3×3

   98.6719    1.2020    0.1261
    3.5781   93.3318    3.0901
         0         0  100.0000

Используя таблицу MATLAB®, содержащую исторические входные данные массива ячеек кредитного рейтинга (dataCellFormat) от Data_TransProb.mat, оцените вероятности перехода с настройками по умолчанию.

load Data_TransProb
transMat = transprob(dataCellFormat)
transMat = 8×8

   93.1170    5.8428    0.8232    0.1763    0.0376    0.0012    0.0001    0.0017
    1.6166   93.1518    4.3632    0.6602    0.1626    0.0055    0.0004    0.0396
    0.1237    2.9003   92.2197    4.0756    0.5365    0.0661    0.0028    0.0753
    0.0236    0.2312    5.0059   90.1846    3.7979    0.4733    0.0642    0.2193
    0.0216    0.1134    0.6357    5.7960   88.9866    3.4497    0.2919    0.7050
    0.0010    0.0062    0.1081    0.8697    7.3366   86.7215    2.5169    2.4399
    0.0002    0.0011    0.0120    0.2582    1.4294    4.2898   81.2927   12.7167
         0         0         0         0         0         0         0  100.0000

Используя исторические входные данные массива ячеек кредитного рейтинга (dataCellFormat), вычислите матрицу перехода использование cohort алгоритм:

%Estimate transition probabilities with 'cohort' algorithm
transMatCoh = transprob(dataCellFormat,'algorithm','cohort')
transMatCoh = 8×8

   93.1345    5.9335    0.7456    0.1553    0.0311         0         0         0
    1.7359   92.9198    4.5446    0.6046    0.1560         0         0    0.0390
    0.1268    2.9716   91.9913    4.3124    0.4711    0.0544         0    0.0725
    0.0210    0.3785    5.0683   89.7792    4.0379    0.4627    0.0421    0.2103
    0.0221    0.1105    0.6851    6.2320   88.3757    3.6464    0.2873    0.6409
         0         0    0.0761    0.7230    7.9909   86.1872    2.7397    2.2831
         0         0         0    0.3094    1.8561    4.5630   80.8971   12.3743
         0         0         0         0         0         0         0  100.0000

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

Выборочные данные

Настройте фиктивные выборочные данные в целях рисунка.

data = {'ABC','17-Feb-2015','AA';
    'ABC','6-Jul-2017','A';
    'LMN','12-Aug-2014','B';
    'LMN','9-Nov-2015','CCC';
    'LMN','7-Sep-2016','D';
    'XYZ','14-May-2013','BB';
    'XYZ','21-Jun-2016','BBB'};
data = cell2table(data,'VariableNames',{'ID','Date','Rating'});
disp(data)
      ID            Date          Rating 
    _______    _______________    _______

    {'ABC'}    {'17-Feb-2015'}    {'AA' }
    {'ABC'}    {'6-Jul-2017' }    {'A'  }
    {'LMN'}    {'12-Aug-2014'}    {'B'  }
    {'LMN'}    {'9-Nov-2015' }    {'CCC'}
    {'LMN'}    {'7-Sep-2016' }    {'D'  }
    {'XYZ'}    {'14-May-2013'}    {'BB' }
    {'XYZ'}    {'21-Jun-2016'}    {'BBB'}

transprob функция изучает, что этот формат данных панели указывает на даты, когда новая оценка присвоена данной компании. transprob принимает, что такие оценки остаются неизменными, если последующая строка явным образом не указывает на изменение оценки. Например, для компании 'ABC', transprob изучает что 'A' оценка неизменна для любой даты после '6-Jul-2017' (неопределенно).

Вычислите количества матрицы и перехода перехода

transprob функция возвращает матрицу вероятности перехода как первичный выход. Существуют также дополнительные выходные параметры, которые содержат дополнительную информацию для того, сколько переходов произошло. Для получения дополнительной информации смотрите transprob для получения информации о дополнительных выходных параметрах для обоих 'cohort' и 'duration' методы.

В целях рисунка этот пример позволяет вам выбирать StartYear (ограниченный 2014 или 2015 для этого примера) и EndYear(2016 или 2017). Этот пример также использует hDisplayTransitions функция помощника (см. раздел Local Functions) отформатировать информацию о переходах для простоты чтения.

StartYear = 2014;
EndYear = 2017;
startDate = datetime (StartYear, 12,31,'Locale','en_US');
endDate = datetime (EndYear, 12,31,'Locale','en_US');
RatingLabels = ["AAA","AA","A","BBB","BB","B","CCC","D"];

[TM, Св., это] = transprob (данные,'startDate', startDate,'endDate', endDate,'algorithm','cohort','labels', RatingLabels);

Вероятности перехода TransMat выведите указывают на вероятность миграции между оценками. Вероятности выражаются в %, то есть, они умножаются на 100.

hDisplayTransitions(tm,RatingLabels,"Transition Matrix")
Transition Matrix

           AAA    AA     A     BBB    BB    B    CCC     D 
           ___    __    ___    ___    __    _    ___    ___

    AAA    100     0      0      0     0    0      0      0
    AA       0    50     50      0     0    0      0      0
    A        0     0    100      0     0    0      0      0
    BBB      0     0      0    100     0    0      0      0
    BB       0     0      0     50    50    0      0      0
    B        0     0      0      0     0    0    100      0
    CCC      0     0      0      0     0    0      0    100
    D        0     0      0      0     0    0      0    100

Количества перехода хранятся в sampleTotals дополнительный выход и указывает, сколько переходов произошло между оценками для целой выборки (то есть, все компании).

hDisplayTransitions(st.totalsMat,RatingLabels,"Transition counts, all companies")
Transition counts, all companies

           AAA    AA    A    BBB    BB    B    CCC    D
           ___    __    _    ___    __    _    ___    _

    AAA     0     0     0     0     0     0     0     0
    AA      0     1     1     0     0     0     0     0
    A       0     0     0     0     0     0     0     0
    BBB     0     0     0     1     0     0     0     0
    BB      0     0     0     1     1     0     0     0
    B       0     0     0     0     0     0     1     0
    CCC     0     0     0     0     0     0     0     1
    D       0     0     0     0     0     0     0     1

Третий выход transprob idTotals это содержит информацию о переходах на уровне ID, компании компанией (в том же порядке, что компании появляются во входных данных).

Выберите компанию, чтобы отобразить количества перехода и соответствующую визуализацию переходов. hPlotTransitions функция помощника (см. раздел Local Functions) показывает историю переходов для компании.

CompanyID = "ABC";
UniqueIDs = уникальный (data.ID,'stable');
[~, CompanyIndex] = ismember (CompanyID, UniqueIDs);
hDisplayTransitions (это (CompanyIndex).totalsMat, RatingLabels, strcat ("Transition counts, company ID: ", CompanyID))
Transition counts, company ID: ABC

           AAA    AA    A    BBB    BB    B    CCC    D
           ___    __    _    ___    __    _    ___    _

    AAA     0     0     0     0     0     0     0     0
    AA      0     1     1     0     0     0     0     0
    A       0     0     0     0     0     0     0     0
    BBB     0     0     0     0     0     0     0     0
    BB      0     0     0     0     0     0     0     0
    B       0     0     0     0     0     0     0     0
    CCC     0     0     0     0     0     0     0     0
    D       0     0     0     0     0     0     0     0
hPlotTransitions(CompanyID,startDate,endDate,data,RatingLabels)

Понять как transprob обрабатывает данные, когда первая наблюдаемая дата после того, как дата начала анализа, или чей в последний раз наблюдаемая дата происходит перед датой окончания анализа, рассматривает следующий пример. Для компании 'ABC' предположите, что анализ имеет дату начала 31-Dec-2014 и дата окончания 31-Dec-2017. Существует только два перехода, о которых сообщают для этой компании для того аналитического окна времени. Первое наблюдение для 'ABC' произошедший на 17-Feb-2015. Так 31-Dec-2015 снимок состояния является первым разом, когда компания наблюдается. 31-Dec-2016, компания осталась в исходном 'AA' оценка. 31-Dec-2017, снижение к 'A' зарегистрирован. В соответствии с этим, количества перехода показывают один переход от 'AA' к 'AA' (от конца 2 015 в конец 2 016), и один переход от 'AA' к 'A' (от конца 2 016 в конец 2 017). График показывает последнюю оценку точечной красной линией, чтобы подчеркнуть, что последняя оценка в данных экстраполируется неопределенно в будущее. Нет никакой экстраполяции в прошлое; история компании проигнорирована, пока оценка компании не известна целым переходным периодом (31-Dec-2015 через 31-Dec-2016 в случае 'ABC').

Вычислите матрицу перехода, содержащую NR (Не расчетный) оценка

Рассмотрите различные выборочные данные, содержащие только одну компанию 'DEF'. Данные содержат переходы компании 'DEF' от 'A' к 'NR' оценка и последующий переход от 'NR' к 'BBB'.

dataNR = {'DEF','17-Mar-2011','A';
    'DEF','24-Mar-2014','NR';
    'DEF','26-Sep-2016','BBB'};
dataNR = cell2table(dataNR,'VariableNames',{'ID','Date','Rating'});
disp(dataNR)
      ID            Date          Rating 
    _______    _______________    _______

    {'DEF'}    {'17-Mar-2011'}    {'A'  }
    {'DEF'}    {'24-Mar-2014'}    {'NR' }
    {'DEF'}    {'26-Sep-2016'}    {'BBB'}

transprob обработки 'NR' как другая оценка. Матрица перехода ниже показов предполагаемая вероятность перехода в и из 'NR'.

StartYearNR = 2010;
EndYearNR = 2018;
startDateNR = datetime(StartYearNR,12,31,'Locale','en_US');
endDateNR = datetime(EndYearNR,12,31,'Locale','en_US');
CompanyID_NR = "DEF";

RatingLabelsNR = ["AAA","AA","A","BBB","BB","B","CCC","D","NR"];

[tmNR,~,itNR] = transprob(dataNR,'startDate',startDateNR,'endDate',endDateNR,'algorithm','cohort','labels',RatingLabelsNR);
hDisplayTransitions(tmNR,RatingLabelsNR,"Transition Matrix")
Transition Matrix

           AAA    AA       A       BBB    BB      B     CCC     D       NR  
           ___    ___    ______    ___    ___    ___    ___    ___    ______

    AAA    100      0         0      0      0      0      0      0         0
    AA       0    100         0      0      0      0      0      0         0
    A        0      0    66.667      0      0      0      0      0    33.333
    BBB      0      0         0    100      0      0      0      0         0
    BB       0      0         0      0    100      0      0      0         0
    B        0      0         0      0      0    100      0      0         0
    CCC      0      0         0      0      0      0    100      0         0
    D        0      0         0      0      0      0      0    100         0
    NR       0      0         0     50      0      0      0      0        50

Отобразите количества перехода и соответствующую визуализацию переходов.

hDisplayTransitions(itNR.totalsMat,RatingLabelsNR,strcat("Transition counts, company ID: ",CompanyID_NR))
Transition counts, company ID: DEF

           AAA    AA    A    BBB    BB    B    CCC    D    NR
           ___    __    _    ___    __    _    ___    _    __

    AAA     0     0     0     0     0     0     0     0    0 
    AA      0     0     0     0     0     0     0     0    0 
    A       0     0     2     0     0     0     0     0    1 
    BBB     0     0     0     2     0     0     0     0    0 
    BB      0     0     0     0     0     0     0     0    0 
    B       0     0     0     0     0     0     0     0    0 
    CCC     0     0     0     0     0     0     0     0    0 
    D       0     0     0     0     0     0     0     0    0 
    NR      0     0     0     1     0     0     0     0    1 
hPlotTransitions(CompanyID_NR,startDateNR,endDateNR,dataNR,RatingLabelsNR)

Удалить 'NR' из матрицы перехода используйте 'excludeLabels' входной параметр значения имени в transprob. Список меток, чтобы исключить может или не может быть задан в аргументе пары "имя-значение" labels. Например, оба RatingLabels и RatingLabelsNR сгенерируйте тот же выход от transprob.

[tmNR,stNR,itNR] = transprob(dataNR,'startDate',startDateNR,'endDate',endDateNR,'algorithm','cohort','labels',RatingLabelsNR,'excludeLabels','NR');
hDisplayTransitions(tmNR,RatingLabels,"Transition Matrix")
Transition Matrix

           AAA    AA      A     BBB    BB      B     CCC     D 
           ___    ___    ___    ___    ___    ___    ___    ___

    AAA    100      0      0      0      0      0      0      0
    AA       0    100      0      0      0      0      0      0
    A        0      0    100      0      0      0      0      0
    BBB      0      0      0    100      0      0      0      0
    BB       0      0      0      0    100      0      0      0
    B        0      0      0      0      0    100      0      0
    CCC      0      0      0      0      0      0    100      0
    D        0      0      0      0      0      0      0    100

Отобразите количества перехода и соответствующую визуализацию переходов.

hDisplayTransitions(itNR.totalsMat,RatingLabels,strcat("Transition counts, company ID: ",CompanyID_NR))
Transition counts, company ID: DEF

           AAA    AA    A    BBB    BB    B    CCC    D
           ___    __    _    ___    __    _    ___    _

    AAA     0     0     0     0     0     0     0     0
    AA      0     0     0     0     0     0     0     0
    A       0     0     2     0     0     0     0     0
    BBB     0     0     0     2     0     0     0     0
    BB      0     0     0     0     0     0     0     0
    B       0     0     0     0     0     0     0     0
    CCC     0     0     0     0     0     0     0     0
    D       0     0     0     0     0     0     0     0
hPlotTransitions(CompanyID_NR,startDateNR,endDateNR,dataNR,RatingLabels)

В соответствии с предыдущим графиком, количества перехода все еще показывают два перехода от 'A' к 'A' (от конца 2 012 в конец 2 014), и два перехода от 'BBB' к 'BBB' (от конца 2 017 в конец 2 019).

Однако отличающийся от предыдущего графика, задавая 'NR' использование 'excludeLabels' входной параметр значения имени transprob удаляет любые переходы в и из 'NR' оценка.

Локальные функции

function hDisplayTransitions(TransitionsData,RatingLabels,Title)
% Helper function to format transition information outputs

TransitionsAsTable = array2table(TransitionsData,...
   'VariableNames',RatingLabels,'RowNames',RatingLabels);

fprintf('\n%s\n\n',Title)
disp(TransitionsAsTable)

end

function hPlotTransitions(CompanyID,startDate,endDate,data,RatingLabels)
% Helper function to visualize transitions between ratings

   Ind = string(data.ID)==CompanyID;
   DatesOriginal = datetime(data.Date(Ind),'Locale','en_US');
   RatingsOriginal = categorical(data.Rating(Ind),flipud(RatingLabels(:)),flipud(RatingLabels(:)));
   
   stairs(DatesOriginal,RatingsOriginal,'LineWidth',2)
   hold on;

   % Indicate rating extrapolated into the future (arbitrarily select 91
   % days after endDate as the last date on the plot)
   endDateExtrap = endDate+91;
   if endDateExtrap>DatesOriginal(end)
      DatesExtrap = [DatesOriginal(end); endDateExtrap];
      RatingsExtrap = [RatingsOriginal(end); RatingsOriginal(end)];
      stairs(DatesExtrap,RatingsExtrap,'LineWidth',2,'LineStyle',':')
   end
   hold off;

   % Add lines to indicate the snapshot dates
   % transprob uses 1 as the default for 'snapsPerYear', hardcoded here for simplicity
   % The call to cfdates generates the exact same snapshot dates that transprob uses
   snapsPerYear = 1;
   snapDates = cfdates(startDate-1,endDate,snapsPerYear)';
   yLimits = ylim;
   for ii=1:length(snapDates)
      line([snapDates(ii) snapDates(ii)],yLimits,'Color','m')
   end
   title(strcat("Company ID: ",CompanyID))
end

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

свернуть все

Используя transprob оценить вероятности перехода, данные исторические данные кредитных рейтингов (то есть, данные о миграции кредита), data введите может быть одно из следующего:

  • nRecords- 3 Таблица MATLAB®, содержащая исторические данные о кредитных рейтингах формы:

     ID          Date          Rating
    __________  _____________  ______
    '00010283'  '10-Nov-1984'  'CCC'
    '00010283'  '12-May-1986'  'B'
    '00010283'  '29-Jun-1988'  'CCC'
    '00010283'  '12-Dec-1991'  'D'
    '00013326'  '09-Feb-1985'  'A'
    '00013326'  '24-Feb-1994'  'AA'
    '00013326'  '10-Nov-2000'  'BBB'
    '00014413'  '23-Dec-1982'  'B'
    где каждая строка содержит ID (столбец 1), дата (столбец 2) и кредитный рейтинг (столбец 3). Столбец 3 является оценкой, присвоенной соответствующему ID в соответствующую дату. Вся информация, соответствующая тому же ID, должна храниться в непрерывных строках. Сортировка этой информации по дате не требуется, но рекомендуется для КПД. При использовании табличного входа MATLAB имена столбцов не важны, но ID, дата и информация об оценке приняты, чтобы быть в первых, вторых, и третьих столбцах, соответственно. Кроме того, при использовании табличного входа первые и третьи столбцы могут быть категориальными массивами, и вторым может быть массив datetime. Следующее обобщает поддерживаемые типы данных для табличного входа:

    Тип ввода данныхID (1-й столбец)Дата (2-й столбец)Оценка (3-й столбец)
    Таблица

    • Числовой массив

    • Массив ячеек из символьных векторов

    • Категориальный массив

    • Числовой массив

    • Массив ячеек из символьных векторов

    • Массив datetime

    • Числовой массив

    • Массив ячеек из символьных векторов

    • Категориальный массив

  • nRecords- 3 массив ячеек из символьных векторов, содержащий исторические данные о кредитных рейтингах формы:

    '00010283'  '10-Nov-1984'  'CCC'
    '00010283'  '12-May-1986'  'B'
    '00010283'  '29-Jun-1988'  'CCC'
    '00010283'  '12-Dec-1991'  'D'
    '00013326'  '09-Feb-1985'  'A'
    '00013326'  '24-Feb-1994'  'AA'
    '00013326'  '10-Nov-2000'  'BBB'
    '00014413'  '23-Dec-1982'  'B'
    где каждая строка содержит ID (столбец 1), дата (столбец 2) и кредитный рейтинг (столбец 3). Столбец 3 является оценкой, присвоенной соответствующему ID в соответствующую дату. Вся информация, соответствующая тому же ID, должна храниться в непрерывных строках. Сортировка этой информации по дате не требуется, но рекомендуется для КПД. Идентификаторы, даты и оценки хранятся в символьном векторном формате, но они могут также быть введены в числовой формат. Следующее обобщает поддерживаемые типы данных для входа массива ячеек:

    Тип ввода данныхID (1-й столбец)Дата (2-й столбец)Оценка (3-й столбец)
    Ячейка

    • Числовые элементы

    • Элементы вектора символов

    • Числовые элементы

    • Элементы вектора символов

    • Числовые элементы

    • Элементы вектора символов

  • Предварительно обработанная структура данных, полученная с помощью transprobprep. Эта структура данных содержит fields'idStart', 'numericDates', 'numericRatings', и 'ratingsLabels'.

Типы данных: table | cell | struct

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

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

Пример: transMat = transprob(data,'algorithm','cohort')

Алгоритм оценки, заданный как разделенная запятой пара, состоящая из 'algorithm' и вектор символов со значением 'duration' или 'cohort'.

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

Дата окончания окна времени оценки, заданного как разделенная запятой пара, состоящая из 'endDate' и вектор символов даты, последовательный номер даты или объект datetime. endDate не может быть дата перед startDate.

Типы данных: char | double | datetime

Шкала кредитного рейтинга, заданная как разделенная запятой пара, состоящая из 'labels' и nRatings- 1, или 1- nRatings массив ячеек из символьных векторов.

labels должно быть сопоставимо с метками оценок, используемыми в третьем столбце data. Используйте массив ячеек чисел для числовых рейтингов и массив ячеек для векторов символов для категориальных оценок.

Примечание

Когда входной параметр data предварительно обработанная структура данных, полученная от предыдущего вызова до transprobprep, этот дополнительный вход для 'labels не использовано потому что метки в 'ratingsLabels' поле transprobprep возьмите приоритет.

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

Количество снимков состояния кредитного рейтинга в год, чтобы быть рассмотренным для оценки, заданной как разделенная запятой пара, состоящая из 'snapsPerYear' и числовое значение 1, 2, 3, 4, 6, или 12.

Примечание

Этот параметр только используется с 'cohort' algorithm.

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

Дата начала окна времени оценки, заданного как разделенная запятой пара, состоящая из 'startDate' и вектор символов даты, последовательный номер даты или объект datetime.

Типы данных: char | double | datetime

Длина интервала перехода, в годах, заданных как разделенная запятой пара, состоящая из 'transInterval' и числовое значение.

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

Пометьте, который исключен из расчета вероятности перехода, заданного как разделенная запятой пара, состоящая из 'excludeLabels' и вектор символов, строка или числовая оценка.

Если несколько меток должны быть исключены, 'excludeLabels' должен быть массив ячеек, содержащий все метки для исключения. Тип меток дан в 'excludeLabels' должно быть сопоставимо с типом данных, заданным в labels входной параметр.

Список меток, чтобы исключить может или не может быть задан в labels.

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

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

свернуть все

Матрица вероятностей перехода в проценте, возвращенном как nRatings- nRatings матрица перехода.

Структура с демонстрационными общими количествами, возвращенными с полями:

  • totalsVec — Вектор размера 1- nRatings.

  • totalsMat — Матрица A размера nRatings- nRatings.

  • algorithm — Вектор символов со значениями 'duration' или 'cohort'.

Для 'duration' алгоритм, totalsMat(i, j), содержит общие переходы, наблюдаемые из оценки i в ratingj (все диагональные элементы являются нулем). Общее время, проведенное при оценке i, хранится в totalsVeci. Например, если существует три категории оценки, Инвестиционный класс (IG), спекулятивный класс (SG), и Значение по умолчанию (D), и следующая информация:

Total time spent    IG       SG       D
in rating:       4859.09  1503.36  1162.05
 
Transitions             IG   SG    D
out of (row)       IG    0   89    7
into (column):     SG  202    0   32
                    D    0    0    0
Затем
totals.totalsVec = [4859.09  1503.36  1162.05]
totals.totalsMat = [  0   89    7
                    202    0   32
                      0    0    0]
totals.algorithm = 'duration'

Для 'cohort' алгоритм, totalsMat(i, j), содержит общие переходы, наблюдаемые от оценки i к оценке j и totalsVec(i) является начальным количеством в оценке i. Например, учитывая следующую информацию:

Initial count       IG     SG     D
in rating:        4808   1572   1145
 
Transitions         IG     SG     D
from (row)    IG  4721     80      7
to (column):  SG   193   1347     32
               D     0      0   1145
Затем

totals.totalsVec = [4808   1572   1145]
totals.totalsMat = [4721     80      7
                    193   1347     32
                      0      0   1145
totals.algorithm = 'cohort'

Общие количества идентификаторов, возвращенные как массив структур размера nIDs- 1, где идентификатор n является количеством отличных идентификаторов в столбце 1 data когда это - таблица или массив ячеек или, эквивалентно, равный длине idStart поле минус 1, когда data предварительно обработанная структура данных от transprobprep. Для каждого ID в выборке, idTotals содержит одну структуру со следующими полями:

  • totalsVec — Разреженный вектор размера 1- nRatings.

  • totalsMat — Разреженная матрица размера nRatings- nRatings.

  • algorithm — Вектор символов со значениями 'duration' или 'cohort'.

Эти поля содержат ту же информацию, описанную для выхода sampleTotals, но на уровне ID. Например, для 'duration', idTotals(k).totalsVec содержит общее время, когда k-th компания потратил на каждую оценку.

Больше о

свернуть все

Оценка когорты

Алгоритм когорты оценивает вероятности перехода на основе последовательности снимков состояния кредитных рейтингов в расположенных с равными интервалами моментах времени.

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

Оценка длительности

В отличие от метода когорты, алгоритм длительности оценивает вероятности перехода на основе полной истории кредитных рейтингов, смотря на точные даты, в которые происходят миграции кредитного рейтинга.

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

Алгоритмы

свернуть все

Оценка когорты

Алгоритм сначала определяет последовательность t0,...,tK дат снимка состояния. Прошедшее время, в годах, между двумя последовательными датами снимка состояния tk-1 и tk равно 1 / ns, где ns является количеством снимков состояния в год. Они K +1 даты определяют переходные периоды K.

Алгоритм вычисляет Nin, количество переходных периодов, в который должника n запускается при оценке i. Они сложены по всем должникам, чтобы получить Ni, количество должников в выборке, которые запускают период при оценке i. Периоды номера, в который должника n запускается при оценке i и заканчивается при оценке j или мигрирует от i до j, обозначенногоNijn, также вычисляется. Они также сложены, чтобы добраться Nij, общее количество миграций от i до j в выборке.

Оценка вероятности перехода от i до j в один период, обозначенныйPij,

Pij=NijNi

Эти вероятности располагаются в матрице перехода с одним периодом P0, где записью i,j в P0 является Pij.

Если количество снимков состояния в год ns равняется 4 (ежеквартальные снимки состояния), вероятности в P0 являются 3-месячными (или 0.25-летними), вероятности перехода. Можно, однако, интересоваться 1-летним или 2-летними вероятностями перехода. Последний временной интервал называется интервалом перехода, Δt, и это используется, чтобы преобразовать P0 в итоговую матрицу перехода, P, согласно формуле:

P=P0nst

Например, если ns = 4 и Δt = 2, P содержит вероятности перехода 2D года, оцененные из ежеквартальных снимков состояния.

Примечание

Для алгоритма когорты, дополнительные выходные аргументы idTotals и sampleTotals от transprob содержите следующую информацию:

  • idTotals(n).totalsVec = (Nin)i

  • idTotals(n).totalsMat = (Ni,jn)ij

  • idTotals(n).algorithm = 'cohort'

  • sampleTotals.totalsVec = (Ni)i

  • sampleTotals.totalsMat = (Ni,j)ij

  • sampleTotals.algorithm = 'cohort'

Для КПД, векторов и матриц в idTotals хранятся как разреженные массивы.

Когда оценки должны будут быть исключены (см. excludeLabels входной параметр значения имени), все переходы, включающие исключенные оценки, удалены из выборки. Например, если ‘NR’ оценка должна быть исключена, любые переходы в ‘NR’ и из ‘NR’ исключены из выборки. Общие счета для всех других оценок настроены соответственно. Для получения дополнительной информации смотрите, Визуализируют Данные о Переходах для transprob.

Оценка длительности

Алгоритм вычисляет Tin, общее время, когда должник n тратит в оценке i в окне времени оценки. Эти количества сложены по всем должникам, чтобы добраться Ti, общее время, проведенное в оценке i, коллективно, всеми должниками в выборке. Алгоритм также вычисляет Tijn, времена номера, которые должник n перемещает от оценки i к оценке j, с i, не равным j, в окне времени оценки. И это также складывает их, чтобы добраться Tij, общее количество миграций, всеми должниками в выборке, от оценки i к j, с i не равняется j.

Чтобы оценить вероятности перехода, алгоритм длительности сначала вычисляет порождающую матрицу Λ. Каждая недиагональная запись этой матрицы является оценкой уровня перехода из оценки i в оценку j и

λij=TijTi,ij

Диагональные элементы вычисляются как:

λii=jiλij

С порождающей матрицей и интервалом перехода Δt (например, Δt = 2 соответствует вероятностям перехода 2D года), матрица перехода получена как P=exp(ΔtΛ), где exp обозначает матричное возведение в степень (expm в MATLAB).

Примечание

Для алгоритма длительности, дополнительные выходные аргументы idTotals и sampleTotals от transprob содержите следующую информацию:

  • idTotals(n).totalsVec = (Tin)i

  • idTotals(n).totalsMat = (Ti,jn)ij

  • idTotals(n).algorithm = 'duration'

  • sampleTotals.totalsVec = (Ti)i

  • sampleTotals.totalsMat = (Ti,j)ij

  • sampleTotals.algorithm = 'duration'

Для КПД, векторов и матриц в idTotals хранятся как разреженные массивы.

Когда оценки должны будут быть исключены (см. excludeLabels входной параметр значения имени), все переходы, включающие исключить оценки, удалены из выборки. Например, если ‘NR’ оценка должна быть исключена, любые переходы в ‘NR’ и из ‘NR’ исключены из выборки. Общее время проведено в ‘NR’ (или любая другая исключенная оценка), также удален.

Ссылки

[1] Хэнсон, S., Т. Шюрманн. "Доверительные интервалы для Вероятностей Значения по умолчанию". Журнал Banking & Finance. Издание 30 (8), Elsevier, август 2006, стр 2281–2301.

[2] Löffler, G., П. Н. Пош. Credit Risk Modeling Using Excel и VBA. Западный Сассекс, Англия: финансы Вайли, 2007.

[3] Шюрманн, T. "Матрицы миграции кредита". в Э. Мелнике, Б. Эверитте (редакторы)., энциклопедия количественного анализа рисков и оценки. Вайли, 2008.

Представленный в R2010b