Рабочий процесс Симуляции creditMigrationCopula

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

Шаг 1. Создайте объект creditMigrationCopula с 4 факторными моделями

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

load CreditMigrationData.mat;

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

migrationValues = migrationPrices .* numBonds;

Создайте объект creditMigrationCopula с 4 факторными моделями с помощью 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: []

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

Установите свойство VarLevel для объекта creditMigrationCopula к 99% (значение по умолчанию составляет 95%).

 cmc.VaRLevel = 0.99;

Шаг 3. Отобразите свойство Portfolio для получения информации о значениях миграции, оценках, LGDs и весах.

Отобразите свойство 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

Шаг 4. Отобразите значения миграции для контрагента.

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

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

Шаг 5. Запустите симуляцию.

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

 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]

Шаг 6. Сгенерируйте отчет для портфельного риска.

Используйте функцию portfolioRisk, чтобы получить отчет для мер по риску и доверительные интервалы для EL, Std, VaR, и CVaR.

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

    4573.9    13039    56515    84463

RiskConfidenceInterval=1×4 table
           EL                Std               VaR               CVaR     
    ________________    ______________    ______________    ______________

    4493.1    4654.7    12982    13096    55043    58038    82485    86441

Шаг 7. Визуализируйте распределение.

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

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

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

Наложите значение, которое принимает объект портфеля (cmc), если все контрагенты поддерживают свои текущие кредитные рейтинги.

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

Шаг 9. Сгенерируйте отчет вкладов риска.

Используйте функцию riskContribution, чтобы отобразить вклад риска. Вклады риска, EL и CVaR, являются дополнением. Если вы суммируете каждую из этих двух метрик по всем контрагентам, вы сообщили о значениях для целого портфеля в таблице portfolioRisk.

rc = riskContribution(cmc);
disp(rc(1:10,:))
    ID      EL       Std       VaR       CVaR 
    __    ______    ______    ______    ______

     1    16.397    40.977    192.11    254.12
     2    9.1179    21.417      83.3    134.31
     3    5.7873    24.887    99.573    236.84
     4    6.4235     57.71    192.06    338.23
     5    22.739    72.371    289.12    544.69
     6    10.776    111.12    327.96    704.29
     7    2.9046     88.98    324.91     551.4
     8    12.152    42.123    189.38    265.97
     9    2.1567    4.0432    3.2359    26.112
    10    1.7495    2.4593    11.003    15.933

Шаг 10. Моделируйте рискозависимость с t связкой.

Чтобы использовать t связку с 10 степенями свободы, используйте функцию simulate с дополнительными входными параметрами. Сохраните результаты в новый объект creditMigrationCopula (cmct).

cmct = simulate(cmc,1e5,'Copula','t','DegreesOfFreedom',10)
cmct = 
  creditMigrationCopula with properties:

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

Шаг 11. Сгенерируйте отчет для портфельного риска для t связки.

Используйте функцию portfolioRisk, чтобы получить отчет для мер по риску и доверительные интервалы для EL, Std, VaR, и CVaR.

[portRisk2,RiskConfidenceInterval2] = portfolioRisk(cmct)
portRisk2=1×4 table
      EL       Std      VaR        CVaR   
    ______    _____    _____    __________

    4553.6    17158    72689    1.2545e+05

RiskConfidenceInterval2=1×4 table
           EL                Std               VaR                    CVaR          
    ________________    ______________    ______________    ________________________

    4447.2    4659.9    17083    17233    70834    75063    1.2144e+05    1.2947e+05

Шаг 12. Визуализируйте распределение для t связки.

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

figure
h = histogram(cmct.PortfolioValues,125);
title('Distribution of Portfolio Values for t Copula');

Шаг 13. Наложите значение, если все контрагенты поддерживают текущие кредитные рейтинги для t связки.

Наложите значение, которое принимает объект портфеля (cmct), если все контрагенты поддерживают свои текущие кредитные рейтинги.

CurrentRatingValue2 = portRisk2.EL + mean(cmct.PortfolioValues);

hold on
plot([CurrentRatingValue2 CurrentRatingValue2],[0 max(h.Values)],'LineWidth',2);
grid on

Смотрите также

| | | | | |

Связанные примеры

Больше о