Оцените вероятности перехода из данных о кредитных рейтингах
[
создает матрицу перехода из исторических данных кредитных рейтингов.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
функция помощника (см. раздел Local Functions) отформатировать информацию о переходах для простоты чтения.
StartYear = 2014; EndYear = 2017; startDate = datetime (StartYear, 12,31,'Locale','en_US'); endDate = datetime (EndYear, 12,31,'Locale','en_US'); RatingLabels = ["AAA","AA","A","BBB","BB","B","CCC","D"]; [TM, Св., это] = transprob (данные,'startDate', startDate,'endDate', endDate,'algorithm','cohort','labels', RatingLabels);
Вероятности перехода TransMat
выведите указывают на вероятность миграции между оценками. Вероятности описываются в %, то есть, они умножаются на 100.
hDisplayTransitions(tm,RatingLabels,"Transition Matrix")
Transition Matrix AAA AA A BBB BB B CCC D ___ __ ___ ___ __ _ ___ ___ AAA 100 0 0 0 0 0 0 0 AA 0 50 50 0 0 0 0 0 A 0 0 100 0 0 0 0 0 BBB 0 0 0 100 0 0 0 0 BB 0 0 0 50 50 0 0 0 B 0 0 0 0 0 0 100 0 CCC 0 0 0 0 0 0 0 100 D 0 0 0 0 0 0 0 100
Количества перехода хранятся в sampleTotals
дополнительный выход и указывает, сколько переходов находилось между оценками для целой выборки (то есть, все компании).
hDisplayTransitions(st.totalsMat,RatingLabels,"Transition counts, all companies")
Transition counts, all companies AAA AA A BBB BB B CCC D ___ __ _ ___ __ _ ___ _ AAA 0 0 0 0 0 0 0 0 AA 0 1 1 0 0 0 0 0 A 0 0 0 0 0 0 0 0 BBB 0 0 0 1 0 0 0 0 BB 0 0 0 1 1 0 0 0 B 0 0 0 0 0 0 1 0 CCC 0 0 0 0 0 0 0 1 D 0 0 0 0 0 0 0 1
Третий выход transprob
idTotals
это содержит информацию о переходах на уровне ID, компании компанией (в том же порядке, что компании появляются во входных данных).
Выберите компанию, чтобы отобразить количества перехода и соответствующую визуализацию переходов. hPlotTransitions
функция помощника (см. раздел Local Functions) показывает историю переходов для компании.
CompanyID = "ABC"; UniqueIDs = уникальный (data.ID,'stable'); [~, CompanyIndex] = ismember (CompanyID, UniqueIDs); hDisplayTransitions (это (CompanyIndex).totalsMat, RatingLabels, strcat ("Transition counts, company ID: ", CompanyID))
Transition counts, company ID: ABC AAA AA A BBB BB B CCC D ___ __ _ ___ __ _ ___ _ AAA 0 0 0 0 0 0 0 0 AA 0 1 1 0 0 0 0 0 A 0 0 0 0 0 0 0 0 BBB 0 0 0 0 0 0 0 0 BB 0 0 0 0 0 0 0 0 B 0 0 0 0 0 0 0 0 CCC 0 0 0 0 0 0 0 0 D 0 0 0 0 0 0 0 0
hPlotTransitions(CompanyID,startDate,endDate,data,RatingLabels)
Понять как transprob
обрабатывает данные, когда первая наблюдаемая дата после того, как дата начала анализа, или чей в последний раз наблюдаемая дата происходит перед датой окончания анализа, рассматривает следующий пример. Для компании 'ABC'
предположите, что анализ имеет дату начала 31-Dec-2014
и дата окончания 31-Dec-2017
. Существует только два перехода, о которых сообщают для этой компании для того аналитического окна времени. Первое наблюдение для 'ABC'
произошедший на 17-Feb-2015
. Так 31-Dec-2015
снимок состояния является первым разом, когда компания наблюдается. 31-Dec-2016
, компания осталась в исходном 'AA'
оценка. 31-Dec-2017
, снижение к 'A'
зарегистрирован. В соответствии с этим, количества перехода показывают один переход от 'AA'
к 'AA'
(от конца 2 015 в конец 2 016), и один переход от 'AA'
к 'A'
(от конца 2 016 в конец 2 017). График показывает последнюю оценку точечной красной линией, чтобы подчеркнуть, что последняя оценка в данных экстраполируется неопределенно в будущее. Нет никакой экстраполяции в прошлое; история компании проигнорирована, пока оценка компании не известна целым переходным периодом (31-Dec-2015
через 31-Dec-2016
в случае 'ABC'
).
Вычислите матрицу перехода, содержащую NR
(Не расчетный) оценка
Рассмотрите различные выборочные данные, содержащие только одну компанию 'DEF'
. Данные содержат переходы компании 'DEF'
от 'A'
к 'NR'
оценка и последующий переход от 'NR'
к 'BBB'
.
dataNR = {'DEF','17-Mar-2011','A'; 'DEF','24-Mar-2014','NR'; 'DEF','26-Sep-2016','BBB'}; dataNR = cell2table(dataNR,'VariableNames',{'ID','Date','Rating'}); disp(dataNR)
ID Date Rating _______ _______________ _______ {'DEF'} {'17-Mar-2011'} {'A' } {'DEF'} {'24-Mar-2014'} {'NR' } {'DEF'} {'26-Sep-2016'} {'BBB'}
transprob
обработки 'NR'
как другая оценка. Матрица перехода ниже показов предполагаемая вероятность перехода в и из 'NR'
.
StartYearNR = 2010; EndYearNR = 2018; startDateNR = datetime(StartYearNR,12,31,'Locale','en_US'); endDateNR = datetime(EndYearNR,12,31,'Locale','en_US'); CompanyID_NR = "DEF"; RatingLabelsNR = ["AAA","AA","A","BBB","BB","B","CCC","D","NR"]; [tmNR,~,itNR] = transprob(dataNR,'startDate',startDateNR,'endDate',endDateNR,'algorithm','cohort','labels',RatingLabelsNR); hDisplayTransitions(tmNR,RatingLabelsNR,"Transition Matrix")
Transition Matrix AAA AA A BBB BB B CCC D NR ___ ___ ______ ___ ___ ___ ___ ___ ______ AAA 100 0 0 0 0 0 0 0 0 AA 0 100 0 0 0 0 0 0 0 A 0 0 66.667 0 0 0 0 0 33.333 BBB 0 0 0 100 0 0 0 0 0 BB 0 0 0 0 100 0 0 0 0 B 0 0 0 0 0 100 0 0 0 CCC 0 0 0 0 0 0 100 0 0 D 0 0 0 0 0 0 0 100 0 NR 0 0 0 50 0 0 0 0 50
Отобразите количества перехода и соответствующую визуализацию переходов.
hDisplayTransitions(itNR.totalsMat,RatingLabelsNR,strcat("Transition counts, company ID: ",CompanyID_NR))
Transition counts, company ID: DEF AAA AA A BBB BB B CCC D NR ___ __ _ ___ __ _ ___ _ __ AAA 0 0 0 0 0 0 0 0 0 AA 0 0 0 0 0 0 0 0 0 A 0 0 2 0 0 0 0 0 1 BBB 0 0 0 2 0 0 0 0 0 BB 0 0 0 0 0 0 0 0 0 B 0 0 0 0 0 0 0 0 0 CCC 0 0 0 0 0 0 0 0 0 D 0 0 0 0 0 0 0 0 0 NR 0 0 0 1 0 0 0 0 1
hPlotTransitions(CompanyID_NR,startDateNR,endDateNR,dataNR,RatingLabelsNR)
Удалить 'NR'
из матрицы перехода используйте 'excludeLabels'
входной параметр значения имени в transprob
. Список меток, чтобы исключить может или не может быть задан в аргументе пары "имя-значение" labels
. Например, оба RatingLabels
и RatingLabelsNR
сгенерируйте тот же выход от transprob
.
[tmNR,stNR,itNR] = transprob(dataNR,'startDate',startDateNR,'endDate',endDateNR,'algorithm','cohort','labels',RatingLabelsNR,'excludeLabels','NR'); hDisplayTransitions(tmNR,RatingLabels,"Transition Matrix")
Transition Matrix AAA AA A BBB BB B CCC D ___ ___ ___ ___ ___ ___ ___ ___ AAA 100 0 0 0 0 0 0 0 AA 0 100 0 0 0 0 0 0 A 0 0 100 0 0 0 0 0 BBB 0 0 0 100 0 0 0 0 BB 0 0 0 0 100 0 0 0 B 0 0 0 0 0 100 0 0 CCC 0 0 0 0 0 0 100 0 D 0 0 0 0 0 0 0 100
Отобразите количества перехода и соответствующую визуализацию переходов.
hDisplayTransitions(itNR.totalsMat,RatingLabels,strcat("Transition counts, company ID: ",CompanyID_NR))
Transition counts, company ID: DEF AAA AA A BBB BB B CCC D ___ __ _ ___ __ _ ___ _ AAA 0 0 0 0 0 0 0 0 AA 0 0 0 0 0 0 0 0 A 0 0 2 0 0 0 0 0 BBB 0 0 0 2 0 0 0 0 BB 0 0 0 0 0 0 0 0 B 0 0 0 0 0 0 0 0 CCC 0 0 0 0 0 0 0 0 D 0 0 0 0 0 0 0 0
hPlotTransitions(CompanyID_NR,startDateNR,endDateNR,dataNR,RatingLabels)
В соответствии с предыдущим графиком, количества перехода все еще показывают два перехода от 'A'
к 'A'
(от конца 2 012 в конец 2 014), и два перехода от 'BBB'
к 'BBB'
(от конца 2 017 в конец 2 019).
Однако отличающийся от предыдущего графика, задавая 'NR'
использование 'excludeLabels'
входной параметр значения имени transprob
удаляет любые переходы в и из 'NR'
оценка.
Локальные функции
function hDisplayTransitions(TransitionsData,RatingLabels,Title) % Helper function to format transition information outputs TransitionsAsTable = array2table(TransitionsData,... 'VariableNames',RatingLabels,'RowNames',RatingLabels); fprintf('\n%s\n\n',Title) disp(TransitionsAsTable) end function hPlotTransitions(CompanyID,startDate,endDate,data,RatingLabels) % Helper function to visualize transitions between ratings Ind = string(data.ID)==CompanyID; DatesOriginal = datetime(data.Date(Ind),'Locale','en_US'); RatingsOriginal = categorical(data.Rating(Ind),flipud(RatingLabels(:)),flipud(RatingLabels(:))); stairs(DatesOriginal,RatingsOriginal,'LineWidth',2) hold on; % Indicate rating extrapolated into the future (arbitrarily select 91 % days after endDate as the last date on the plot) endDateExtrap = endDate+91; if endDateExtrap>DatesOriginal(end) DatesExtrap = [DatesOriginal(end); endDateExtrap]; RatingsExtrap = [RatingsOriginal(end); RatingsOriginal(end)]; stairs(DatesExtrap,RatingsExtrap,'LineWidth',2,'LineStyle',':') end hold off; % Add lines to indicate the snapshot dates % transprob uses 1 as the default for 'snapsPerYear', hardcoded here for simplicity % The call to cfdates generates the exact same snapshot dates that transprob uses snapsPerYear = 1; snapDates = cfdates(startDate-1,endDate,snapsPerYear)'; yLimits = ylim; for ii=1:length(snapDates) line([snapDates(ii) snapDates(ii)],yLimits,'Color','m') end title(strcat("Company ID: ",CompanyID)) end
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'
Тип ввода данных | ID (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'
Тип ввода данных | ID (1-й столбец) | Дата (2-й столбец) | Оценка (3-й столбец) |
---|---|---|---|
Ячейка |
|
|
|
Предварительно обработанная структура данных получила использование transprobprep
. Эта структура данных содержит fields'idStart'
, 'numericDates'
, 'numericRatings'
, и 'ratingsLabels'
.
Типы данных: table
| cell
| struct
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
transMat = transprob(data,'algorithm','cohort')
'algorithm'
— Алгоритм оценки'duration'
(значением по умолчанию) | вектор символов со значениями является '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
, 2
, 3
, 4
, 6
, или 12
Количество кредитного рейтинга создает снимки в год, чтобы быть рассмотренным для оценки в виде разделенной запятой пары, состоящей из 'snapsPerYear'
и числовое значение 1
, 2, 3
, 4
, 6
, или
12
.
Примечание
Этот параметр только используется с 'cohort'
algorithm
.
Типы данных: double
'startDate'
— Дата начала окна времени оценкиdata
(значение по умолчанию) | вектор символов | последовательный номер даты | datetimeДата начала окна времени оценки в виде разделенной запятой пары, состоящей из 'startDate'
и вектор символов даты, последовательный номер даты или объект datetime.
Типы данных: char |
double
| datetime
'transInterval'
— Длина интервала перехода в годах
(одна вероятность перехода года) (значение по умолчанию) | числовойДлина интервала перехода, в годах в виде разделенной запятой пары, состоящей из 'transInterval'
и числовое значение.
Типы данных: double
'excludeLabels'
— Пометьте, который исключен из расчета вероятности перехода''
(не исключайте метку) (значение по умолчанию) | числовой | вектор символов | строкаПометьте, который исключен из расчета вероятности перехода в виде разделенной запятой пары, состоящей из 'excludeLabels'
и вектор символов, строка или числовая оценка.
Если несколько меток должны быть исключены, 'excludeLabels'
должен быть массив ячеек, содержащий все метки для исключения. Тип меток дан в 'excludeLabels'
должно быть сопоставимо с типом данных, заданным в labels
входной параметр.
Список меток, чтобы исключить может или не может быть задан в labels
.
Типы данных: double |
char
| string
transMat
— Матрица вероятностей перехода в процентеМатрица вероятностей перехода в проценте, возвращенном как nRatings
- nRatings
матрица перехода.
sampleTotals
— Структура с демонстрационными общими количествамиСтруктура с демонстрационными общими количествами, возвращенными с полями:
totalsVec
— Вектор из размера 1
- nRatings
.
totalsMat
— Матрица A размера 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 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
— Общие количества идентификаторовОбщие количества идентификаторов, возвращенные как массив структур размера nIDs
- 1
, где идентификатор n является количеством отличных идентификаторов в столбце 1 data
когда это - таблица или массив ячеек или, эквивалентно, равный длине idStart
поле минус 1, когда data
предварительно обработанная структура данных от transprobprep
. Для каждого ID в выборке, idTotals
содержит одну структуру со следующими полями:
totalsVec
— Разреженный вектор из размера 1
- nRatings
.
totalsMat
— Разреженная матрица размера nRatings
- nRatings
.
algorithm
— Вектор символов со значениями 'duration'
или 'cohort'
.
Эти поля содержат ту же информацию, описанную для выхода sampleTotals
, но на уровне ID. Например, для 'duration'
, idTotals
(k).totalsVec
содержит общее время, когда k-th компания потратил на каждую оценку.
Алгоритм когорты оценивает вероятности перехода на основе последовательности снимков состояния кредитных рейтингов в расположенных с равными интервалами моментах времени.
Если кредитный рейтинг компании изменяется дважды между двумя датами снимка состояния, промежуточная оценка пропущена, и только начальные и итоговые оценки влияют на оценки.
В отличие от метода когорты, алгоритм длительности оценивает вероятности перехода на основе полной истории кредитных рейтингов, смотря на точные даты, в которые происходят миграции кредитного рейтинга.
Нет никакой концепции снимков состояния в этом методе, и все миграции кредитного рейтинга влияют на оценки, даже когда оценка компании изменяется дважды в течение короткого времени.
Алгоритм сначала определяет последовательность t0,...,tK дат снимка состояния. Прошедшее время, в годах, между двумя последовательными датами снимка состояния tk-1 и tk равно 1
/ ns, где ns является количеством снимков состояния в год. Они K +1
даты определяют переходные периоды K.
Алгоритм вычисляет , количество переходных периодов, в который должника 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 содержит вероятности перехода 2D года, оцененные из ежеквартальных снимков состояния.
Примечание
Для алгоритма когорты, дополнительные выходные аргументы idTotals
и sampleTotals
от transprob
содержите следующую информацию:
idTotals(n).totalsVec
=
idTotals(n).totalsMat
=
idTotals(n).algorithm
= 'cohort'
sampleTotals.totalsVec
=
sampleTotals.totalsMat
=
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
соответствует вероятностям перехода 2D года), матрица перехода получена как , где 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
входной параметр значения имени), все переходы, включающие исключить оценки, удалены из выборки. Например, если ‘NR’
оценка должна быть исключена, любые переходы в ‘NR’
и из ‘NR’
исключены из выборки. Общее время проведено в ‘NR’
(или любая другая исключенная оценка), также удален.
[1] Хэнсон, S., Т. Шюрманн. "Доверительные интервалы для Вероятностей Значения по умолчанию". Журнал Banking & Finance. Издание 30 (8), Elsevier, август 2006, стр 2281–2301.
[2] Löffler, G., П. Н. Пош. Credit Risk Modeling Using Excel и VBA. Западный Сассекс, Англия: финансы Вайли, 2007.
[3] Шюрманн, T. "Матрицы миграции кредита". в Э. Мелнике, Б. Эверитте (редакторы)., энциклопедия количественного анализа рисков и оценки. Вайли, 2008.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.