В этом примере показан общий рабочий процесс использования 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