Оценка вероятностей перехода на основе данных кредитных рейтингов
[ создает матрицу перехода из исторических данных кредитных рейтингов.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 функция. Пример также описывает, как 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 вспомогательная функция (см. раздел Локальные функции) для форматирования информации о переходах для удобства чтения.
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(data,'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 содержит информацию о переходах на уровне идентификатора, компания за компанией (в том же порядке, в котором компании отображаются во входных данных).
Выберите компанию для отображения количества переходов и соответствующей визуализации переходов. hPlotTransitions вспомогательная функция (см. раздел Локальные функции) показывает историю переходов для компании.
CompanyID ="ABC"; UniqueIDs = unique(data.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)

Чтобы понять, как 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)

Чтобы удалить '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' (с конца 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
data - Данные кредитной миграцииИспользуя 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'
| Тип ввода данных | Идентификатор (1-й столбец) | Дата (2-й столбец) | Оценка (3-й столбец) |
|---|---|---|---|
| Стол |
|
|
|
Один 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'
| Тип ввода данных | Идентификатор (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'
(по умолчанию) | символьный вектор со значениями: 'duration' или 'cohort'Алгоритм оценки, определяемый как разделенная запятыми пара, состоящая из 'algorithm' и вектор символов со значением 'duration' или 'cohort'.
Типы данных: char
'endDate' - Дата окончания временного окна оценкиdata
(по умолчанию) | вектор символов | серийный номер даты | datetimeДата окончания временного окна оценки, указанного как пара, разделенная запятыми, состоящая из 'endDate' и вектор символов даты, серийный номер даты или объект datetime. endDate не может быть датой до startDate.
Типы данных: char | double | datetime
'labels' - Шкала кредитных рейтингов{'AAA','AA','A','BBB','BB','B','CCC','D'}
(по умолчанию) | массив ячеек символьных векторовШкала кредитного рейтинга, указанная как пара, разделенная запятыми, состоящая из 'labels' и nRatingsоколо-1, или 1около-nRatings клеточный массив символьных векторов.
labels должны соответствовать меткам оценок, используемым в третьем столбце data. Используйте массив ячеек чисел для числовых оценок и массив ячеек для символьных векторов для категориальных оценок.
Примечание
Когда входной аргумент data является предварительно обработанной структурой данных, полученной из предыдущего вызова transprobprep, этот дополнительный вход для 'labels не используется, поскольку метки в 'ratingsLabels' поле transprobprep иметь приоритет.
Типы данных: cell
'snapsPerYear' - Количество снимков кредитного рейтинга в год1 (по умолчанию) | числовые значения: 1, 2, 3, 4, 6, или 12Количество снимков кредитного рейтинга в год, которые должны учитываться для оценки, указанное как пара, разделенная запятыми, состоящая из 'snapsPerYear' и числовое значение 1, 2, 3, 4, 6, или 12.
Примечание
Этот параметр используется только с 'cohort'
algorithm.
Типы данных: double
'startDate' - Дата начала временного окна оценкиdata
(по умолчанию) | вектор символов | серийный номер даты | datetimeДата начала временного окна оценки, указанного как пара, разделенная запятыми, состоящая из 'startDate' и вектор символов даты, серийный номер даты или объект datetime.
Типы данных: char | double | datetime
'transInterval' - Продолжительность переходного интервала в годах1(вероятность перехода на один год) (по умолчанию) | числовыеДлина интервала перехода в годах, определяемая как разделенная запятыми пара, состоящая из 'transInterval' и числовое значение.
Типы данных: double
'excludeLabels' - Метка, исключенная из вычисления вероятности перехода'' (не исключайте метку) (по умолчанию) | числовой | символьный вектор | строкаМетка, исключенная из вычисления вероятности перехода, указанная как разделенная запятыми пара, состоящая из 'excludeLabels' и вектор символов, строку или числовую оценку.
Если требуется исключить несколько меток, 'excludeLabels' должен быть массивом ячеек, содержащим все метки для исключения. Тип меток, указанных в 'excludeLabels' должны согласовываться с типом данных, указанным в labels вход.
Список меток для исключения может быть указан или не указан в labels.
Типы данных: double | char | string
transMat - Матрица вероятностей перехода в процентахМатрица вероятностей перехода в процентах, возвращенная как nRatingsоколо-nRatings матрица перехода.
sampleTotals - Структура с итоговыми данными пробСтруктура с выборкой итогов, возвращенная с полями:
totalsVec - Вектор размера 1около-nRatings.
totalsMat - Матрица размера nRatingsоколо-nRatings.
algorithm - символьный вектор со значениями; 'duration' или 'cohort'.
Для 'duration' алгоритм, totalsMat(i, j) содержит суммарные переходы, наблюдаемые вне рейтинга i в ratingj (все диагональные элементы равны нулю). Общее время, затраченное на оценку i, хранится вtotalsVec(i). Например, если существует три категории рейтинга, инвестиционный класс (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 0totals.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, иtotalsVeci) является первоначальным подсчетом в рейтинге 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 1145totals.totalsVec = [4808 1572 1145]
totals.totalsMat = [4721 80 7
193 1347 32
0 0 1145
totals.algorithm = 'cohort'idTotals - итоговые идентификаторыИтоговые значения идентификаторов, возвращаемые в виде массива структуры размера nIDsоколо-1, где nID - количество отдельных идентификаторов в столбце 1 data когда это таблица или массив ячеек или, эквивалентно, равна длине idStart поле минус 1, когда data является предварительно обработанной структурой данных из transprobprep. Для каждого идентификатора в образце, idTotals содержит одну структуру со следующими полями:
totalsVec - Разреженный вектор размера 1около-nRatings.
totalsMat - Разреженная матрица размера nRatingsоколо-nRatings.
algorithm - символьный вектор со значениями; 'duration' или 'cohort'.
В этих полях содержится та же информация, что и в выходных данных. sampleTotals, но на уровне идентификатора. Например, для 'duration', idTotals(k).totalsVec содержит общее время, которое k-я компания потратила на каждый рейтинг.
Когортный алгоритм оценивает вероятности перехода на основе последовательности снимков кредитных рейтингов в регулярно разнесенные моменты времени.
Если кредитный рейтинг компании изменяется дважды между двумя моментальными датами, промежуточный рейтинг игнорируется, и только первоначальный и окончательный рейтинги влияют на оценки.
В отличие от когортного метода, алгоритм длительности оценивает вероятности перехода на основе полной истории кредитных рейтингов, просматривая точные даты, в которые происходят миграции кредитных рейтингов.
В этом методе нет концепции снимков, и все миграции кредитного рейтинга влияют на оценки, даже когда рейтинг компании меняется дважды в течение короткого времени.
Алгоритм сначала определяет t0,...,tK последовательности дат моментальных снимков. Прошедшее время в годах между двумя последовательными датами снимка tk-1 и tk равно 1 / ns, где ns - количество снимков в год. Эти K +1 даты определяют K переходных периодов.
Алгоритм вычисляет , число переходных периодов, в которых обязывающий n начинает с рейтингом I. Они складываются по всем обязывающим, чтобы получить Ni, число должников в выборке, которые начинают период с рейтингом i. Количество периодов, в течение которых должник n начинается с рейтингом i и заканчивается рейтингом j, или мигрирует с i на j, обозначается , также вычисляется. Они также добавляются, чтобы получить , общее количество миграций от i до j в выборке.
Оценка вероятности перехода от i к j за один период, обозначаемая , равна
НийНи
Эти вероятности расположены в однопериодической матрице перехода P0, где i, j запись в P0 является Pij.
Если количество снимков в год ns равно 4 (квартальные снимки), вероятности в P0 составляют 3-месячные (или 0,25-летние) вероятности перехода. Однако вы можете быть заинтересованы в вероятности перехода на один или два года. Последний временной интервал называется переходным интервалом Δt и используется для преобразования P0 в окончательную переходную матрицу P по формуле:
Например, если ns = 4 и Δt = 2, P содержит вероятности двухлетнего перехода, оцененные по квартальным снимкам.
Примечание
Для когортного алгоритма необязательные выходные аргументы idTotals и sampleTotals от transprob содержат следующую информацию:
idTotals(n).totalsVec = ∀i
idTotals(n).totalsMat = ∀ij
idTotals(n).algorithm = 'cohort'
sampleTotals.totalsVec = ∀i
sampleTotals.totalsMat = ∀ij
sampleTotals.algorithm = 'cohort'
Для эффективности векторы и матрицы в idTotals хранятся в виде разреженных массивов.
Когда оценки должны быть исключены (см. excludeLabels входной аргумент «имя-значение»), все переходы, включающие исключенные оценки, удаляются из выборки. Например, если ‘NR’ рейтинг должен быть исключен, любые переходы в ‘NR’ и вне ‘NR’ исключаются из выборки. Итоговые показатели для всех остальных оценок корректируются соответствующим образом. Дополнительные сведения см. в разделе Визуализация данных переходов для transprob.
Алгоритм вычисляет , общее время, которое обязывающий n проводит в рейтинге i в пределах временного окна оценки. Эти количества суммируются по всем должникам, чтобы получить , общее время, проведенное в рейтинге i, в совокупности всеми должниками в выборке. Алгоритм также вычисляет , число раз, которые обязывающий n переносит из рейтинга i в рейтинг j, с i, не равным j, в пределах временного окна оценки. А также складывает их, чтобы получить , общее количество миграций, всеми обязанными в выборке, от рейтинга i до j, с i не равным j.
Чтобы оценить вероятности перехода, алгоритм длительности сначала вычисляет генераторную матрицу . Каждый внедиагональный ввод этой матрицы является оценкой скорости перехода из рейтинга i в рейтинг j, и является
Диагональные элементы вычисляются следующим образом:
С генераторной матрицей и переходным интервалом Δt (например, Δt = 2 соответствует вероятности двухлетнего перехода), матрица перехода получается как ΔtΛ), где exp обозначает возведение матрицы в степень (expm в MATLAB).
Примечание
Для алгоритма длительности необязательные выходные аргументы idTotals и sampleTotals от transprob содержат следующую информацию:
idTotals(n).totalsVec = ∀i
idTotals(n).totalsMat = ∀ij
idTotals(n).algorithm = 'duration'
sampleTotals.totalsVec = ∀i
sampleTotals.totalsMat = ∀ij
sampleTotals.algorithm = 'duration'
Для эффективности векторы и матрицы в idTotals хранятся в виде разреженных массивов.
Когда оценки должны быть исключены (см. excludeLabels входной аргумент «имя-значение»), все переходы, включающие оценки исключения, удаляются из выборки. Например, если ‘NR’ рейтинг должен быть исключен, любые переходы в ‘NR’ и вне ‘NR’ исключаются из выборки. Общее время, проведенное в ‘NR’ (или любой другой исключенный рейтинг) также удаляется.
[1] Хэнсон, С., Т. Шуэрман. «Доверительные интервалы для вероятностей дефолта». Журнал банковских и финансовых операций. Том 30 (8), Elsevier, август 2006, стр. 2281-2301.
[2] Лёффлер, Г., П. Н. Пош. Моделирование кредитных рисков с использованием Excel и VBA. Западный Сассекс, Англия: Wiley Finance, 2007.
[3] Шуэрманн, Т. «Матрицы кредитной миграции». в Э. Мельник, Б. Эверитт (ред.), Энциклопедия количественного анализа и оценки рисков. Уайли, 2008.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.