В этом примере показан общий рабочий процесс для использования creditMigrationCopula объект для портфеля кредитных рейтингов контрагентов.
Загрузите сохраненные данные портфеля.
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 для свойства 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 coula с 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