Оцените вероятности перехода от данных кредитных рейтингов
[
создает матрицу перехода из исторических данных кредитных рейтингов.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'}
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)
Чтобы понять, как 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
-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-ий столбец) |
---|---|---|---|
Таблица |
|
|
|
Система координат 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-ий столбец) |
---|---|---|---|
Камера |
|
|
|
Предварительно обработанная структура данных, полученная с помощью 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. The endDate
не может быть датой перед startDate
.
Типы данных: char
| double
| datetime
'labels'
- Кредитно-рейтинговая шкала{'AAA','AA','A','BBB','BB','B','CCC','D'}
(по умолчанию) | массив ячеек из векторов символовШкала кредитного рейтинга, заданная как разделенная разделенными запятой парами, состоящая из 'labels'
и a nRatings
-by- 1
, или 1
-by- 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
-by- nRatings
матрица переходов.
sampleTotals
- Структура с выборочными итогамиСтруктура с выборочными итогами, возвращенная с полями:
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'
idTotals
- итоговые значения идентификаторовИдентификаторы 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 переходные периоды.
Алгоритм вычисляет , количество переходных периодов, в которых n-должник начинается с рейтинговых i. Они складываются по всем должникам, чтобы получить Ni, количество должников в выборке, которые начинают период в рейтинговом i. Число периодов, в которых n-должник начинается с рейтинга i и заканчивается с рейтингом j, или мигрирует с i на j, обозначаемое как, также вычисляется. Они также складываются, чтобы получить , общее количество миграций из i в j в выборке.
Оценка вероятности перехода от i до j за один период, обозначеннаяявляется
Эти вероятности расположены в однопериодном переходе матрицы P0, где i,j вход в P0 является Pij.
Если количество снимков в год ns составляет 4 (квартальные снимки), вероятности в P0 являются 3-месячными (или 0,25-летними) вероятностями перехода. Однако вы можете быть заинтересованы в вероятностях перехода на 1 или 2 года. Последний временной интервал называется интервалом перехода t, и он используется для преобразования P0 в конечную матрицу перехода, P, по формуле :
Для примера, если ns = 4
и Β t = 2
, P содержит двухлетние вероятности перехода, оцененные из квартальных моментальных снимков.
Примечание
Для когортного алгоритма необязательные выходные аргументы idTotals
и sampleTotals
от transprob
содержат следующую информацию:
idTotals(n).totalsVec
=
idTotals(n).totalsMat
=
idTotals(n).algorithm
= 'cohort'
sampleTotals.totalsVec
=
sampleTotals.totalsMat
=
sampleTotals.algorithm
= 'cohort'
Для эффективности векторы и матрицы в idTotals
сохраняются как разреженные массивы.
Когда рейтинги должны быть исключены (см. excludeLabels
name-value входной параметр), все переходы с исключенными рейтингами удаляются из выборки. Для примера, если ‘NR’
рейтинг должен быть исключен, любые переходы в ‘NR’
и вне ‘NR’
исключены из выборки. Итоговые счетчики для всех других рейтингов корректируются соответствующим образом. Для получения дополнительной информации смотрите Визуализация данных переходов для transprob.
Алгоритм вычисляет , общее время, которое n-должник проводит в рейтинге i в пределах временного окна оценки. Эти количества складываются по всем должникам, чтобы получить , общее время, проведенное в рейтинге i, в совокупности, всеми должниками в выборке. Алгоритм также вычисляет , количество раз, когда n-должник мигрирует из рейтингового i в рейтинговое j, с i не равным j, в пределах временного окна оценки. И это также добавляет их, чтобы получить , общее количество миграций всеми должниками в выборке, от рейтинга i к j, с i не равными j.
Чтобы оценить вероятности перехода, алгоритм длительности сначала вычисляет матрицу генератора . Каждый off-диагональный вход этой матрицы является оценкой скорости перехода вне рейтинговой i в рейтинговую j и является
Диагональные элементы вычисляются как:
С матрицей генератора и интервалом Δ <reservedrangesplaceholder2> перехода (например, Δ <reservedrangesplaceholder1> = 2
соответствует двухлетним вероятностям перехода), матрица перехода получается как , где exp обозначает матричную экспоненцию (expm
в MATLAB).
Примечание
Для алгоритма длительности необязательные выходные аргументы idTotals
и sampleTotals
от transprob
содержат следующую информацию:
idTotals(n).totalsVec
=
idTotals(n).totalsMat
=
idTotals(n).algorithm
= 'duration'
sampleTotals.totalsVec
=
sampleTotals.totalsMat
=
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.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.