creditMigrationCopula

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

Описание

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

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

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

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

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

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

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

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

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

Создание

Описание

пример

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

  • Портфель:

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

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

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

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

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

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

  • FactorCorrelation:

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

  • RatingLabels:

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

  • TransitionMatrix:

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

  • VaRLevel:

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

  • PortfolioValues:

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

пример

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

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

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

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

Значение миграции для оценки значения по умолчанию (последний столбец migrationValues введите), предварительное восстановление. Это - ссылочное значение (например, номинальная стоимость, передайте значение в текущей оценке или другом), который умножается на скорость восстановления во время симуляции, чтобы получить значение актива в случае значения по умолчанию. Скорость восстановления задана как 1lgd , где 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 введите устанавливает свойство TransitionMatrix.

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

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

Примечание

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

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

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

LGD может альтернативно быть задан как NumCounterparties- 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 имя аргумента и 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 возразите, есть ли у вас Parallel Computing Toolbox™. Однажды 'UseParallel' свойство установлено, параллельная обработка используется с riskContribution или simulate.

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

Свойства

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

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

Portfolio таблица имеет столбец для каждых из входных параметров конструктора (MigrationValues, Ratinglgd , 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 возразите, есть ли у вас 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')

Figure contains an axes object. The axes object 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: [2.0082e+06 1.9950e+06 1.9933e+06 2.0009e+06 ... ]

 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 object. The axes object 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: [2.0082e+06 1.9950e+06 1.9933e+06 2.0009e+06 ... ]

 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 object. The axes object 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 object. The axes object with title Distribution of Portfolio Values contains 2 objects of type histogram, line.

Ссылки

[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
Для просмотра документации необходимо авторизоваться на сайте