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'}

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

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

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

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

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, st, it] = 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 который содержит информацию о переходах на уровне идентификатора, компании по компаниям (в том же порядке, в котором компании появляются в входных данных).

Выберите компанию для отображения счетчиков переходов и соответствующей визуализации переходов. The hPlotTransitions функция helper (см. раздел «Локальные функции») показывает историю переходов для компании.

CompanyID = "ABC";
UniqueIDs = уникальные данные .ID,'stable');
[~, CompanyIndex] = ismember (CompanyID, UniqueIDs);
hDisplayTransitions (it (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)

Figure contains an axes. The axes with title Company ID: ABC contains 6 objects of type stair, line.

Чтобы понять, как 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' (с конца 2015 года по конец 2016 года), и один переход от 'AA' на 'A' (с конца 2016 года по конец 2017 года). График показывает последний рейтинг как пунктирную красную линию, чтобы подчеркнуть, что последний рейтинг в данных экстраполируется на неопределенный срок в будущее. Экстраполяции в прошлое не происходит; история компании игнорируется до тех пор, пока рейтинг компании не будет известен за целый переходный период (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)

Figure contains an axes. The axes with title Company ID: DEF contains 11 objects of type stair, line.

Чтобы удалить '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)

Figure contains an axes. The axes with title Company ID: DEF contains 11 objects of type stair, line.

В соответствии с предыдущим графиком, счетчики переходов все еще показывают два перехода от 'A' на 'A' (с конца 2012 года по конец 2014 года), и два перехода от 'BBB' на 'BBB' (с конца 2017 года по конец 2019 года).

Однако отличается от предыдущего графика, задавая '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-by- 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'
    где каждая строка содержит идентификатор (столбец 1), дату (столбец 2) и кредитный рейтинг (столбец 3). Столбец 3 является рейтингом, присвоенным соответствующему идентификатору на соответствующую дату. Вся информация, соответствующая одному и тому же идентификатору, должна храниться в смежных строках. Сортировка этой информации по дате не требуется, но рекомендуется для эффективности. При использовании входа таблицы MATLAB имена столбцов нерелевантны, но идентификатор, дата и рейтинговая информация приняты в первом, втором и третьем столбцах соответственно. Кроме того, при использовании таблицы входа, первый и третий столбцы могут быть категориальными массивами, а второй может быть массивом datetime. Ниже приведены поддерживаемые типы данных для входа в таблицу:

    Тип входных данныхИдентификатор (1-ый столбец)Дата (2-й Столбец)Рейтинг (3-ий столбец)
    Таблица

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

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

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

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

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

    • Массив Datetime

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

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

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

  • Система координат nRecords-by- 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'
    где каждая строка содержит идентификатор (столбец 1), дату (столбец 2) и кредитный рейтинг (столбец 3). Столбец 3 является рейтингом, присвоенным соответствующему идентификатору на соответствующую дату. Вся информация, соответствующая одному и тому же идентификатору, должна храниться в смежных строках. Сортировка этой информации по дате не требуется, но рекомендуется для эффективности. Идентификаторы, даты и рейтинги хранятся в формате вектора символов, но они также могут быть введены в числовом формате. Ниже приведены поддерживаемые типы данных для входа массива ячеек:

    Тип входных данныхИдентификатор (1-ый столбец)Дата (2-й Столбец)Рейтинг (3-ий столбец)
    Камера

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

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

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

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

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

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

  • Предварительно обработанная структура данных, полученная с помощью transprobprep. Эта структура данных содержит поля '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. The endDate не может быть датой перед startDate.

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

Шкала кредитного рейтинга, заданная как разделенная разделенными запятой парами, состоящая из 'labels' и a nRatings-by- 1, или 1-by- 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-by- nRatings матрица переходов.

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

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

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

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

Для 'duration' алгоритм, totalsMat(i, j) содержит общие переходы, наблюдаемые вне рейтинговых i, в рейтинговые j (все диагональные элементы равны нулю). Общее время, потраченное на рейтинговые i, хранится в totalsVec(<reservedrangesplaceholder1>). Для примера, если существует три рейтинговые категории, Инвестиционный класс (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'

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

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

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

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

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

Подробнее о

свернуть все

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

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

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

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

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

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

Алгоритмы

свернуть все

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

Алгоритм сначала определяет 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 содержит двухлетние вероятности перехода, оцененные из квартальных моментальных снимков.

Примечание

Для когортного алгоритма необязательные выходные аргументы 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 name-value входной параметр), все переходы с исключенными рейтингами удаляются из выборки. Для примера, если ‘NR’ рейтинг должен быть исключен, любые переходы в ‘NR’ и вне ‘NR’ исключены из выборки. Итоговые счетчики для всех других рейтингов корректируются соответствующим образом. Для получения дополнительной информации смотрите Визуализация данных переходов для transprob.

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

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

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

λij=TijTi,ij

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

λii=jiλij

С матрицей генератора и интервалом Δ <reservedrangesplaceholder2> перехода (например, Δ <reservedrangesplaceholder1> = 2 соответствует двухлетним вероятностям перехода), матрица перехода получается как 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 name-value входной параметр), все переходы, связанные с рейтингами исключения, удаляются из выборки. Для примера, если ‘NR’ рейтинг должен быть исключен, любые переходы в ‘NR’ и вне ‘NR’ исключены из выборки. Общее время пребывания в ‘NR’ (или любой другой исключенный рейтинг) также удаляется.

Ссылки

[1] Hanson, S., T. Schuermann. Доверительные интервалы для вероятностей дефолта. Журнал банковского дела и финансов. Том 30 (8), Elsevier, август 2006, стр. 2281-2301.

[2] Löffler, G., P. N. Posch. Моделирование кредитного риска с использованием Excel и VBA. Западный Сассекс, Англия: Wiley Finance, 2007.

[3] Schuermann, T. «Credit Migration Matrices». in E. Melnick, B. Everitt (eds.), Encyclopedia of Quantitative Risk Analysis and Assessment. Уайли, 2008.

Введенный в R2010b