creditMigrationCopula

Моделируйте и анализируйте мультифакторную модель оценки миграции кредита

Описание

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

creditMigrationCopula сопоставляет каждого контрагента со случайной переменной, названной скрытой переменной, которая сопоставлена с кредитными рейтингами на основе матрицы перехода оценки. Для каждого сценария значение положения с каждым контрагентом повторно вычисляется на основе реализованного кредитного рейтинга контрагента. Эти скрытые переменные моделируются при помощи мультифакторной модели, где системные колебания кредита моделируются с серией факторов риска. Эти факторы могут быть основаны на отраслях промышленности (такой столь же финансовый или космос), географические области (такие как США или еврозона), или любой другой базовый драйвер кредитного риска. Каждый контрагент присвоен серия весов, которые определяют их чувствительность к каждому базовому кредиту факторы.

Входные параметры к модели:

  • migrationValues — Значения положений контрагента для каждого кредитного рейтинга.

  • ratings — Текущий кредитный рейтинг для каждого контрагента.

  • transitionMatrix — Матрица вероятностей перехода кредитного рейтинга.

  • Lgd Потеря, данная значение по умолчанию (1 − Recovery).

  • Weights — Факторные и особенные образцовые веса

После того, как вы создаете объект creditMigrationCopula (см., Создают creditMigrationCopula и Свойства), используйте функцию simulate, чтобы моделировать миграцию кредита при помощи мультифакторной модели. Затем для подробных отчетов используйте следующие функции: portfolioRisk, riskContribution, confidenceBands и getScenarios.

Создание

Синтаксис

cmc = creditMigrationCopula(migrationValues,ratings,transitionMatrix,LGD,Weights)
cmc = creditMigrationCopula(___,Name,Value)

Описание

пример

cmc = creditMigrationCopula(migrationValues,ratings,transitionMatrix,LGD,Weights) создает объект creditMigrationCopula. Объект creditMigrationCopula имеет следующие свойства:

  • Портфель:

    Таблица со следующими переменными:

    • ID — ID, чтобы идентифицировать каждого контрагента

    • migrationValues — Значения положений контрагента для каждого кредитного рейтинга

    • ratings — Текущий кредитный рейтинг для каждого контрагента

    • Lgd Потеря, данная значение по умолчанию

    • Weights — Факторные и особенные веса для контрагентов

  • FactorCorrelation:

    Факторная корреляционная матрица, NumFactors-by-NumFactors матрица, которая задает корреляцию между факторами риска.

  • RatingLabels:

    Набор всех возможных кредитных рейтингов.

  • TransitionMatrix:

    Матрица вероятностей, что контрагент переходы от начального кредитного рейтинга до оценки окончательного кредита. Строки представляют начальные кредитные рейтинги, и столбцы представляют итоговые оценки. Верхняя строка содержит вероятности для контрагента, который запускается при самой высокой оценке (например, AAA), и нижний ряд содержит тех для контрагента, запускающегося в состоянии по умолчанию. Нижний ряд может быть не использован, указав, что контрагент в значении по умолчанию остается в значении по умолчанию. Каждая строка должна суммировать к 1. Порядок строк и столбцов должен совпадать с порядком кредитных рейтингов, заданных в параметре RatingLabels. Последний столбец содержит вероятность значения по умолчанию для каждой из оценок. Если незаданный, метки оценки значения по умолчанию: "AAA","AA","A","BBB","BB","B","CCC","D".

  • VaRLevel:

    Подверженный риску значения уровень, используемый при создании отчетов о VaR и CVaR.

  • PortfolioValues:

    NumScenarios-by-1 вектор стоимости портфеля. Это свойство пусто, пока вы не используете функцию simulate.

пример

cmc = creditMigrationCopula(___,Name,Value) Свойства наборов с помощью пар "имя-значение" и любого из аргументов в предыдущем синтаксисе. Например, cmc = creditMigrationCopula(migrationValues,ratings,transitionMatrix,LGD,Weights,'VaRLevel',0.99). Можно задать несколько пар "имя-значение" как дополнительные аргументы пары "имя-значение".

Входные параметры

развернуть все

Значения положений контрагента для каждого кредитного рейтинга, заданного как NumCounterparties-by-NumRatings матрица. Каждая строка содержит возможные значения положения контрагента для каждого кредитного рейтинга. Последняя оценка должна быть оценкой по умолчанию. Вход migrationValues устанавливает свойство Portfolio.

Значение миграции для оценки значения по умолчанию (последний столбец входа migrationValues) является предварительным восстановлением. Это - ссылочное значение (например, номинальная стоимость, передайте значение в текущей оценке или другом), который умножается на скорость восстановления во время симуляции, чтобы получить значение актива в случае значения по умолчанию. Скорость восстановления задана как 1-LGD, где LGD задан с помощью входного параметра LGD. LGD является или константой или случайным числом, чертившим от бета распределения (см. описание входа LGD).

Примечание

Модель creditMigrationCopula моделирует изменения в стоимости портфеля по фиксированному периоду времени (например, один год). migrationValues и transitionMatrix должны быть характерны для периода определенного времени.

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

Текущий кредитный рейтинг для каждого контрагента, заданного как NumCounterparties-by-1 вектор, который представляет начальные состояния кредита. Набор всех допустимых кредитных рейтингов и их порядка задан при помощи дополнительного параметра RatingLabels. Вход ratings устанавливает свойство Portfolio.

Если RatingLabels не задан, метки оценки значения по умолчанию: "AAA","AA","A","BBB","BB","B","CCC","D".

Типы данных: double | string | cell

Вероятности перехода кредитного рейтинга, заданные как NumRatings-by-NumRatings матрица. Матрица содержит вероятности что контрагент, запускающийся в конкретном кредитном рейтинге переходы к любой оценке по некоторому фиксированному периоду времени. Каждая строка содержит все вероятности перехода для конкретного начального кредитного рейтинга. Вход transitionMatrix устанавливает свойство TransitionMatrix.

Верхняя строка содержит вероятности для контрагента, который запускается при самой высокой оценке (такой как AAA). Нижний ряд содержит вероятности для контрагента, запускающегося в состоянии по умолчанию. Нижний ряд может быть не использован, указав, что контрагент в значении по умолчанию остается в значении по умолчанию. Каждая строка должна суммировать к 1.

Порядок строк и столбцов должен совпадать с порядком кредитных рейтингов, заданных в параметре RatingLabels. Последний столбец содержит вероятность значения по умолчанию для каждой из оценок. Если RatingLabels не задан, метки оценки значения по умолчанию: "AAA","AA","A","BBB","BB","B","CCC","D".

Примечание

Модель creditMigrationCopula моделирует изменения в стоимости портфеля по фиксированному периоду времени (например, один год). migrationValues и transitionMatrix должны быть характерны для периода определенного времени.

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

Потеря, данная значение по умолчанию, заданное как NumCounterparties-by-1 числовой вектор с элементами от 0 до 1, представляя часть воздействия, которое потеряно когда контрагент значения по умолчанию. LGD задан как (1 − Recovery). Например, LGD 0,6 подразумевает 40%-ю скорость восстановления в случае значения по умолчанию. Вход LGD устанавливает свойство Portfolio.

LGD может альтернативно быть задан как NumCounterparties-by-2 матрица, где первый столбец содержит средние значения LGD, и 2-й столбец содержит стандартные отклонения LGD. Затем в случае значения по умолчанию значения LGD чертятся случайным образом от бета распределения с обеспеченными параметрами для принимающего значение по умолчанию контрагента.

Допустимые открытые интервалы для среднего и стандартного отклонения LGD:

  • Для первого столбца средние значения между 0 и 1.

  • Для второго столбца стандартные отклонения LGD между 0 и sqrt(m*(1-m)).

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

Факторные и особенные веса, заданные как NumCounterparties (NumFactors + 1) массив. Каждая строка содержит факторные веса для конкретного контрагента. Каждый столбец содержит веса для фактора базового риска. Последний столбец в Weights содержит особенный вес риска для каждого контрагента. Особенный вес представляет специфичный для компании кредитный риск. Общее количество весов для каждого контрагента (то есть, каждой строки) должно суммировать к 1. Вход Weights устанавливает свойство Portfolio.

Например, если кредитоспособность контрагента состояла из 60% США, 20%-го европейца, и особенных 20%, то вектором Weights является [0.6 0.2 0.2].

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

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

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

Пример: cmc = creditMigrationCopula(migrationValues,ratings,transitionMatrix,LGD,Weights,'VaRLevel',0.99)

Пользовательские идентификаторы для контрагентов, заданных как пара, разделенная запятой, состоящая из 'ID' и NumCounterparties-by-1 вектор ID s для каждого контрагента. ID используется, чтобы идентифицировать воздействия в таблице Portfolio и таблице вклада риска. ID должен быть числовым, массивом строк или массивом ячеек из символьных векторов. Аргумент пары "имя-значение" ID устанавливает свойство Portfolio.

Если незаданный, значения по умолчанию ID к числовому вектору (1:NumCounterparties).

Типы данных: double | string | cell

Значение подверженный риску уровень (используемый для создания отчетов о VaR и CVaR), заданный как пара, разделенная запятой, состоящая из 'VaRLevel' и числового между 0 и 1. Аргумент пары "имя-значение" VaRLevel устанавливает свойство VaRLevel.

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

Факторная корреляционная матрица, заданная как пара, разделенная запятой, состоящая из 'FactorCorrelation' и NumFactors-by-NumFactors матрица, которая задает корреляцию между факторами риска. Аргумент пары "имя-значение" FactorCorrelation устанавливает свойство FactorCorrelation.

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

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

Набор всех возможных кредитных рейтингов, заданных как пара, разделенная запятой, состоящая из 'RatingLabels' и NumRatings-by-1 вектор, где первый элемент является самым высоким кредитным рейтингом и последним элементом, является состоянием по умолчанию. Аргумент пары "имя-значение" RatingLabels устанавливает свойство RatingLabels.

Типы данных: cell | double | string

Отметьте, чтобы использовать параллельную обработку для симуляций, заданных как пара, разделенная запятой, состоящая из 'UseParallel' и скалярное значение true или false. Аргумент пары "имя-значение" UseParallel устанавливает свойство UseParallel.

Примечание

Свойство 'UseParallel' может только быть установлено при создании объекта creditMigrationCopula, если у вас есть Parallel Computing Toolbox™. Если свойство 'UseParallel' установлено, параллельная обработка используется с riskContribution или simulate.

Типы данных: логический

Свойства

развернуть все

Детали кредитного портфеля, заданного как таблица MATLAB®, которая содержит все данные о портфеле, которые были переданы как вход в объект creditMigrationCopula.

Таблица Portfolio имеет столбец для каждых из входных параметров конструктора (MigrationValues, Rating, LGD, Weights и ID). Каждая строка таблицы представляет одного контрагента.

Например:

    ID    MigrationValues    Rating     LGD        Weights   
    __    _______________    ______    ______    ____________

    1     [1x8 double]       "A"       0.6509     0.5     0.5
    2     [1x8 double]       "BBB"     0.8283     0.55    0.45
    3     [1x8 double]       "AA"      0.6041     0.7     0.3
    4     [1x8 double]       "BB"      0.6509     0.55    0.45
    5     [1x8 double]       "BBB"     0.4966     0.75    0.25

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

Корреляционная матрица для факторов кредита, заданных как NumFactors-by-NumFactors матрица. Задайте корреляционную матрицу при помощи дополнительного аргумента пары "имя-значение" 'FactorCorrelation', когда вы создадите объект creditMigrationCopula.

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

Набор всех возможных кредитных рейтингов, заданное использование дополнительного входного параметра значения имени для 'RatingLabels', когда вы создаете объект creditMigrationCopula.

Типы данных: double | cell | string

Вероятности, что контрагент переходы от начального кредитного рейтинга до оценки окончательного кредита, заданного использования входного параметра 'transitionMatrix', когда вы создаете объект creditMigrationCopula. Строки представляют начальные кредитные рейтинги, и столбцы представляют итоговые оценки. Верхняя строка соответствует самой высокой оценке.

Верхняя строка содержит вероятности для контрагента, который запускается при самой высокой оценке (такой как AAA), и нижний ряд содержит тех для контрагента, запускающегося в состоянии по умолчанию. Нижний ряд может быть не использован, указав, что контрагент в значении по умолчанию остается в значении по умолчанию. Каждая строка должна суммировать к 1.

Порядок строк и столбцов должен совпадать с порядком кредитных рейтингов, заданных в параметре RatingLabels. Последний столбец содержит вероятность значения по умолчанию для каждой из оценок. Если RatingLabels не задан, метки оценки значения по умолчанию: "AAA","AA","A","BBB","BB","B","CCC","D".

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

Подверженный риску уровень значения использовал при создании отчетов о VaR и CVaR, заданном использовании дополнительного аргумента пары "имя-значение" 'VaRLevel', когда вы создаете объект creditMigrationCopula.

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

Стоимость портфеля, заданная как 1-by-NumScenarios вектор. После создания объекта creditMigrationCopula свойство PortfolioValues пусто. После того, как вы вызовете функцию simulate, PortfolioValues заполняется со стоимостью портфеля по каждому сценарию.

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

Отметьте, чтобы использовать параллельную обработку для симуляций, заданного использования дополнительного аргумента пары "имя-значение" 'UseParallel', когда вы создадите объект creditMigrationCopula. Аргумент пары "имя-значение" UseParallel устанавливает свойство UseParallel.

Примечание

Свойство 'UseParallel' может только быть установлено при создании объекта creditMigrationCopula, если у вас есть Parallel Computing Toolbox. Если свойство 'UseParallel' установлено, параллельная обработка используется с riskContribution или simulate.

Типы данных: логический

Функции объекта

simulateМоделируйте миграции кредита с помощью creditMigrationCopula объект
portfolioRiskСгенерируйте измерения риска уровня портфеля
riskContributionСгенерируйте вклады риска для каждого контрагента в портфеле
confidenceBandsПолосы доверительного интервала
getScenariosСценарии контрагента

Примеры

свернуть все

Загрузите сохраненные данные о портфеле.

load CreditMigrationData.mat;

Масштабируйте цены облигаций для положений портфеля для каждой связи.

migrationValues = migrationPrices .* numBonds;

Создайте объект creditMigrationCopula с четырьмя факторными моделями с помощью creditMigrationCopula.

cmc = creditMigrationCopula(migrationValues,ratings,transMat,...
lgd,weights,'FactorCorrelation',factorCorr)
cmc = 
  creditMigrationCopula with properties:

            Portfolio: [250x5 table]
    FactorCorrelation: [4x4 double]
         RatingLabels: [8x1 string]
     TransitionMatrix: [8x8 double]
             VaRLevel: 0.9500
          UseParallel: 0
      PortfolioValues: []

Установите VaRLevel на 99%.

 cmc.VaRLevel = 0.99;

Свойство Portfolio содержит информацию о значениях миграции, оценках, LGDs и весах.

 head(cmc.Portfolio) 
ans=8×5 table
    ID    MigrationValues    Rating     LGD                    Weights              
    __    _______________    ______    ______    ___________________________________

    1      [1x8 double]      "A"       0.6509      0       0       0     0.5     0.5
    2      [1x8 double]      "BBB"     0.8283      0    0.55       0       0    0.45
    3      [1x8 double]      "AA"      0.6041      0     0.7       0       0     0.3
    4      [1x8 double]      "BB"      0.6509      0    0.55       0       0    0.45
    5      [1x8 double]      "BBB"     0.4966      0       0    0.75       0    0.25
    6      [1x8 double]      "BB"      0.8283      0       0       0    0.65    0.35
    7      [1x8 double]      "BB"      0.6041      0       0       0    0.65    0.35
    8      [1x8 double]      "BB"      0.4873    0.5       0       0       0     0.5

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

Например, это значения миграции для первого контрагента. Обратите внимание на то, что значение для значения по умолчанию выше, чем некоторые оценки не по умолчанию. Это вызвано тем, что значение миграции для оценки по умолчанию является ссылочным значением (например, номинальная стоимость, передайте значение в текущей оценке или другом), который умножается на скорость восстановления во время симуляции, чтобы получить значение актива в случае значения по умолчанию. Скоростью восстановления является 1-LGD, когда вход LGD к creditMigrationCopula является постоянным значением LGD (вход LGD имеет один столбец). Скорость восстановления является случайным количеством, когда вход LGD к creditMigrationCopula задан как среднее и стандартное отклонение для бета распределения (вход LGD имеет два столбца).

bar(cmc.Portfolio.MigrationValues(1,:))
xticklabels(cmc.RatingLabels)
title('Migration Values for First Company')

Используйте функцию simulate, чтобы моделировать 100 000 сценариев, и затем просмотреть меры по портфельному риску с помощью функции portfolioRisk.

 cmc = simulate(cmc,1e5)
cmc = 
  creditMigrationCopula with properties:

            Portfolio: [250x5 table]
    FactorCorrelation: [4x4 double]
         RatingLabels: [8x1 string]
     TransitionMatrix: [8x8 double]
             VaRLevel: 0.9900
          UseParallel: 0
      PortfolioValues: [1x100000 double]

 portRisk = portfolioRisk(cmc)
portRisk=1×4 table
      EL       Std      VaR     CVaR 
    ______    _____    _____    _____

    4573.9    13039    56515    84463

Просмотрите гистограмму стоимости портфеля.

h = histogram(cmc.PortfolioValues,125);
title('Distribution of Portfolio Values');

Загрузите сохраненные данные о портфеле.

load CreditMigrationData.mat;

Масштабируйте цены облигаций для положений портфеля для каждой связи.

migrationValues = migrationPrices .* numBonds;

Создайте объект creditMigrationCopula с четырьмя факторными моделями с помощью creditMigrationCopula.

cmc = creditMigrationCopula(migrationValues,ratings,transMat,...
lgd,weights,'FactorCorrelation',factorCorr)
cmc = 
  creditMigrationCopula with properties:

            Portfolio: [250x5 table]
    FactorCorrelation: [4x4 double]
         RatingLabels: [8x1 string]
     TransitionMatrix: [8x8 double]
             VaRLevel: 0.9500
          UseParallel: 0
      PortfolioValues: []

Установите VaRLevel на 99%.

 cmc.VaRLevel = 0.99;

Используйте функцию simulate, чтобы моделировать 100 000 сценариев, и затем просмотреть меры по портфельному риску при помощи функции portfolioRisk.

 cmc = simulate(cmc,1e5)
cmc = 
  creditMigrationCopula with properties:

            Portfolio: [250x5 table]
    FactorCorrelation: [4x4 double]
         RatingLabels: [8x1 string]
     TransitionMatrix: [8x8 double]
             VaRLevel: 0.9900
          UseParallel: 0
      PortfolioValues: [1x100000 double]

 portRisk = portfolioRisk(cmc)
portRisk=1×4 table
      EL       Std      VaR     CVaR 
    ______    _____    _____    _____

    4573.9    13039    56515    84463

Просмотрите гистограмму стоимости портфеля.

h = histogram(cmc.PortfolioValues,125);
title('Distribution of Portfolio Values');

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

CurrentRatingValue = portRisk.EL + mean(cmc.PortfolioValues);
     hold on
     plot([CurrentRatingValue CurrentRatingValue],[0 max(h.Values)],...
         'LineWidth',2);
     grid on

Ссылки

[1] Crouhy, M., Galai, D. и Марк, R. “Сравнительный анализ Текущих Моделей Кредитного риска”. Журнал Банковского дела и Финансов. Издание 24, 2000, стр 59–117.

[2] Gordy, M. “Сравнительная Анатомия Моделей Кредитного риска”. Журнал Банковского дела и Финансов. Издание 24, 2000, стр 119–149.

[3] Gupton, G., палец, C. и Bhatia, M. “CreditMetrics – технический документ”. J. P. Morgan, Нью-Йорк, 1997.

[4] Jorion, P. Финансовое руководство менеджера по рискам. 6-й выпуск. Финансы Вайли, 2011.

[5] Löffler, G. и Posch, P. Credit Risk Modeling Using Excel и VBA. Финансы Вайли, 2007.

[6] Макнейл, A., Фрэй, R. и Embrechts, P. Количественное управление рисками: Концепции, методы и инструменты. Издательство Принстонского университета, 2005.

Введенный в R2017a

Для просмотра документации необходимо авторизоваться на сайте