Этот пример показывает общий рабочий процесс для использования объекта creditMigrationCopula
для портфеля кредитных рейтингов контрагента.
Загрузите сохраненные данные о портфеле.
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: []
Установите свойство VarLevel
для объекта creditMigrationCopula
к 99% (значение по умолчанию составляет 95%).
cmc.VaRLevel = 0.99;
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
Например, можно отобразить значения миграции для первого контрагента. Обратите внимание на то, что значение для значения по умолчанию выше, чем некоторые оценки не по умолчанию. Это вызвано тем, что значение миграции для оценки по умолчанию является ссылочным значением (например, номинальная стоимость, передайте значение в текущей оценке или другом), который умножается на скорость восстановления во время симуляции, чтобы получить значение актива в случае значения по умолчанию. Скоростью восстановления является 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 сценариев.
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]
Используйте функцию
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
Просмотрите гистограмму стоимости портфеля.
figure
h = histogram(cmc.PortfolioValues,125);
title('Distribution of Portfolio Values');
Наложите значение, которое принимает объект портфеля (cmc
), если все контрагенты поддерживают свои текущие кредитные рейтинги.
CurrentRatingValue = portRisk.EL + mean(cmc.PortfolioValues); hold on plot([CurrentRatingValue CurrentRatingValue],[0 max(h.Values)],'LineWidth',2); grid on
Используйте функцию
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
Чтобы использовать 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]
Используйте функцию
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
Просмотрите гистограмму стоимости портфеля.
figure
h = histogram(cmct.PortfolioValues,125);
title('Distribution of Portfolio Values for t Copula');
Наложите значение, которое принимает объект портфеля (cmct
), если все контрагенты поддерживают свои текущие кредитные рейтинги.
CurrentRatingValue2 = portRisk2.EL + mean(cmct.PortfolioValues); hold on plot([CurrentRatingValue2 CurrentRatingValue2],[0 max(h.Values)],'LineWidth',2); grid on
asrf
| confidenceBands
| creditMigrationCopula
| getScenarios
| portfolioRisk
| riskContribution
| simulate