creditMigrationCopula

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

Описание

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

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

Входные входы модели:

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

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

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

  • LGD - Потеря по умолчанию (1 − Recovery).

  • Weights - Коэффициентные и идиосинкратические веса модели

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

Создание

Описание

пример

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

  • Портфолио:

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

    • 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.

  • ПортфолиоЦенности:

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

пример

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

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

расширить все

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

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

Примечание

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Свойства

расширить все

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

The 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 объект. The UseParallel аргумент пары "имя-значение" устанавливает UseParallel свойство.

Примечание

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

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

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

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;

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

 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')

Figure contains an axes. The axes with title Migration Values for First Company contains an object of type bar.

Используйте 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 
    ______    _____    _____    _____

    4515.9    12963    57176    83975

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

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

Figure contains an axes. The axes with title Distribution of Portfolio Values contains an object of type histogram.

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

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 
    ______    _____    _____    _____

    4515.9    12963    57176    83975

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

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

Figure contains an axes. The axes with title Distribution of Portfolio Values contains an object of type histogram.

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

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

Figure contains an axes. The axes with title Distribution of Portfolio Values contains 2 objects of type histogram, line.

Ссылки

[1] Crouhy, M., Galai, D. and Mark, R. «Сравнительный анализ текущих моделей кредитного риска». Журнал банковского дела и финансов. Том 24, 2000, стр. 59-117.

[2] Горди, М. «Сравнительная анатомия моделей кредитного риска». Журнал банковского дела и финансов. Том 24, 2000, стр. 119-149.

[3] Gupton, G., Finger, C., and Bhatia, M. «CreditMetrics - Technical Document». J. P. Морган, Нью-Йорк, 1997.

[4] Jorion, P. Financial Risk Manager Handbook. 6-е издание. Wiley Finance, 2011.

[5] Löffler, G. and Posch, P. Credit Risk Modeling Using Excel и VBA. Wiley Finance, 2007.

[6] McNeil, A., Frey, R. and Embrechts, P. Quantitative Risk Management: Концепции, Technologies, and Tools. Пресса Принстонского университета, 2005.

Введенный в R2017a