transprob

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

Синтаксис

[transMat,sampleTotals,idTotals] = transprob(data)
[transMat,sampleTotals,idTotals] = transprob(___,Name,Value)

Описание

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

Примечание

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

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

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

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

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

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

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

свернуть все

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

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

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

  • totalsMat — Матрица размера nRatings-by-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'

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

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

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

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

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

Больше о

свернуть все

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

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

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

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

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

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

Алгоритмы

свернуть все

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

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

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

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

Pij=NijNi

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

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

P=P0nst

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

Примечание

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

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

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

  • idTotals(n).algorithm = 'cohort'

  • sampleTotals.totalsVec = (Ni)i

  • sampleTotals.totalsMat = (Ni,j)ij

  • sampleTotals.algorithm = 'cohort'

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

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

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

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

λij=TijTi,ij

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

λii=jiλij

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

Примечание

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

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

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

  • idTotals(n).algorithm = 'duration'

  • sampleTotals.totalsVec = (Ti)i

  • sampleTotals.totalsMat = (Ti,j)ij

  • sampleTotals.algorithm = 'duration'

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

Ссылки

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

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

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

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