В этом примере показан общий рабочий процесс использования 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 Свойство для получения информации о значениях миграции, рейтингах, LGD и весах.Отобразите 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')
Используйте 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
______ _____ _____ _____
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: [1x100000 double]
Используйте portfolioRisk функция для получения отчета по показателям риска и доверительным интервалам для EL, Std, 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

asrf | confidenceBands | creditMigrationCopula | getScenarios | portfolioRisk | riskContribution | simulate