exponenta event banner

creditMigrationCopula

Моделирование и анализ многофакторной модели кредитного рейтинга

Описание

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

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

Входными данными для модели являются:

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

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

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

  • LGD - убыток по умолчанию (1 − восстановление).

  • Weights - Коэффициенты и удельные веса модели

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

Создание

Описание

пример

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

  • Портфель:

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

    • ID - Идентификатор для идентификации каждого контрагента

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

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

    • LGD - Потеря по умолчанию

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

  • Корреляция факторов:

    Корреляционная матрица коэффициента, a NumFactorsоколо-NumFactors матрица, которая определяет корреляцию между факторами риска.

  • Метки RatingLabels:

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

  • Матрица передачи:

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

  • VaRLevel:

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

  • PortfolioValues:

    A NumScenariosоколо-1 вектор стоимости портфеля. Это свойство пусто до тех пор, пока не будет использоваться simulate функция.

пример

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

Примечание

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

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

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

LGD может быть альтернативно указан как NumCounterpartiesоколо-2 матрица, где первый столбец содержит средние значения LGD, а второй столбец содержит стандартные отклонения 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 является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Свойства

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

Подробные данные кредитного портфеля, определенные как таблица 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около-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около-NumScenarios вектор. После создания creditMigrationCopula объект, PortfolioValues пустое свойство. После вызова simulate функция, PortfolioValues заполняется значениями портфеля для каждого сценария.

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

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

Примечание

'UseParallel' свойство может быть установлено только при создании creditMigrationCopula при наличии панели инструментов параллельных вычислений. Один раз '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;

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] Кроуи, М., Галаи, Д. и Марк, Р. «Сравнительный анализ текущих моделей кредитного риска». Журнал банковских и финансовых операций. Том 24, 2000, стр. 59-117.

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

[3] Гуптон, Г., Фингер, С. и Бхатия, М. «CreditMetrics - Технический документ». J. P. Морган, Нью-Йорк, 1997.

[4] Йорион, P. Руководство по управлению финансовыми рисками. 6-е издание. Уайли Финанс, 2011.

[5] Лёффлер, Г. и Пош, П. Моделирование кредитных рисков с использованием Excel и VBA. Уайли Финанс, 2007.

[6] Макнил, А., Фрей, Р. и Эмбрехтс, П. Количественное управление рисками: концепции, методики и инструменты. Princeton University Press, 2005.

Представлен в R2017a