Этот пример показывает общий рабочий процесс для использования 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: [2.0082e+06 1.9950e+06 1.9933e+06 2.0009e+06 ... ]
Используйте portfolioRisk
функция, чтобы получить отчет для мер по риску и доверительные интервалы для EL
станд
var
, и CVaR
.
[portRisk,RiskConfidenceInterval] = portfolioRisk(cmc)
portRisk=1×4 table
EL Std VaR CVaR
______ _____ _____ _____
4515.9 12963 57176 83975
RiskConfidenceInterval=1×4 table
EL Std VaR CVaR
________________ ______________ ______________ ______________
4435.6 4596.3 12907 13021 55739 58541 82137 85812
Просмотрите гистограмму стоимости портфеля.
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 15.521 41.153 238.72 279.18 2 8.49 18.838 92.074 122.19 3 6.0937 20.069 113.22 181.53 4 6.6964 55.885 272.23 313.25 5 23.583 73.905 360.32 573.39 6 10.722 114.97 445.94 728.38 7 1.8393 84.754 262.32 490.39 8 11.711 39.768 175.84 253.29 9 2.2154 4.4038 22.797 31.039 10 1.7453 2.5545 9.8801 17.603
Чтобы использовать 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: [2.0021e+06 2.0007e+06 1.9834e+06 2.0025e+06 ... ]
Используйте portfolioRisk
функция, чтобы получить отчет для мер по риску и доверительные интервалы для EL
станд
var
, и CVaR
.
[portRisk2,RiskConfidenceInterval2] = portfolioRisk(cmct)
portRisk2=1×4 table
EL Std VaR CVaR
____ _____ _____ __________
4544 17034 72270 1.2391e+05
RiskConfidenceInterval2=1×4 table
EL Std VaR CVaR
________________ ______________ ______________ ________________________
4438.5 4649.6 16960 17109 69769 75382 1.1991e+05 1.2791e+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
creditMigrationCopula
| simulate
| portfolioRisk
| riskContribution
| confidenceBands
| getScenarios
| asrf