此示例显示了使用高斯copula为交易对手信用风险建模错误路径风险的方法。
交易对手信用风险(CCR)的基本方法(见交易对手信用风险和CVA假设市场和信用风险因素是相互独立的。对市场风险因素的模拟驱动了投资组合中所有合约的敞口。在另一个单独的步骤中,信用违约掉期(CDS)市场报价决定每个交易对手的违约概率。风险暴露、违约概率和给定的回收率被用来计算每个交易对手的信用价值调整(CVA),这是预期损失的衡量标准。风险因素的模拟和违约概率的模拟是相互独立的。
在实践中,违约概率和市场因素是相互关联的。这种关系对于某些类型的工具可能可以忽略不计,但对于其他类型的工具,市场和信用风险因素之间的关系可能太重要了,以至于在计算风险度量时不能忽视。当交易对手的违约概率和特定合同的风险敞口同时增加时,我们称该合同存在错误方向风险(wrong way risk, WWR)。
该示例演示了Garcia Cespedes等人所述的错误方式风险方法的实施。(参见参考文献).
许多金融机构都有模拟市场风险因素的系统,并在给定的模拟日期对其投资组合中的所有工具进行估值。这些模拟被用来计算暴露和其他风险措施。由于模拟是计算密集型的,因此重用它们进行后续风险分析是很重要的。
本例使用的数据和仿真结果来自交易对手信用风险和CVA例如,以前保存在ccr.mat
文件。的ccr.mat
文件包含:
等级规范
:计算合同价值时的费率规格
解决
:计算合同金额的结算日期
simulationDates
:模拟日期向量
掉期交易
:包含交换参数的结构
值
:NUMDATES
xNUMCONTRACT
x努姆塞纳里奥斯
每个日期/场景的模拟合同值的立方体
本例仅着眼于一年时间范围内的预期损失,因此数据在模拟一年后被裁剪。第一年的模拟日期为每月频率,因此第13个模拟日期为我们的一年时间范围(第一个模拟日期为结算日期)。
负载ccr.matoneYearIdx=13;values=values(1:oneYearIdx,:,:);dates=simulationDates(1:oneYearIdx);numcenarios=size(values,3);
根据模拟合同价值计算信用风险敞口。这些风险敞口是每个交易对手从结算日到我们一年时间范围内的每月信用风险敞口。
由于违约可能在一年内的任何时间发生,通常根据预期正风险敞口(EPE)的概念对违约风险敞口(EAD)进行建模。计算每个场景的时间平均风险敞口,称为PE(正风险敞口)。PE的平均值(包括所有场景)为EPE,也可从exposureprofiles
函数。
正曝光矩阵体育课
每个模拟场景包含一行,每个交易对手包含一列。这在本分析中用作EAD。
计算交易对手风险敞口[敞口,交易对手]=信用敞口(价值,互换)。交易对手,...“NettingID”,掉期。净额结算);numCP=numel(交易对手);计算每个场景的PE(时间平均曝光)区间权重=差异(日期)/(日期(结束)-日期(1));暴露中点=0.5*(暴露(1:end-1,:,:)+暴露(2:end,:,:);加权贡献=bsxfun(@倍,区间权重,暴露中点);PE=挤压(总和(加权贡献));计算每个场景的总投资组合风险totalExp = (PE、2)之和;%PE和totalExp的显示大小谁体育课totalExp
名称大小字节类属性PE 1000x5 40000 double totalExp 1000x1 8000 double
模拟信贷违约的常用方法是基于“单因素模型”,有时称为“资产价值法”(参见Gupton等人,1997年)。这是模拟相关默认值的有效方法。
每个公司我是否与随机变量相关彝族,以致
哪里Z是“一个因素”,是一个标准的正态随机变量,代表一个系统的信用风险因素,其值影响所有公司我公因数由下式给出beta_i,公司之间的相关性我和j是beta_i*beta_j.特殊的冲击εi是另一个标准正态变量,可能会减少或增加系统因素的影响,与任何其他公司的情况无关。
如果公司违约概率我是PDi,则默认为
哪里 为累积标准正态分布。
的彝族变量有时被解释为资产收益,有时被称为潜在变量。
这个模型是一个高斯关联函数,它引入了信用违约之间的相关性。copula提供了一种特殊的方式来引入相关,或者更普遍地说,两个相互依赖未知的随机变量之间的相互依赖。
利用CDS息差来引导每个交易对手一年的违约概率。CDS报价来自《华尔街日报》使用的掉期投资组合电子表格交易对手信用风险和CVA的例子。
为每一交易对手进口CDS市场信息游泳池=“cva掉期投资组合.xls”;cd = readtable (swapFile,“床单”,“CDS价差”);cdsDates = datenum (cds.Date);cdsSpreads = table2array (cds(:, 2:结束));%每个交易对手的引导违约概率zeroData=[RateSpec.EndDates RateSpec.Rates];defProb=零(1,大小(cdsSpreads,2));为i=1:numel(defProb)probData=cdsbootstrap(zeroData,[cdsDates cdsSpreads(:,i)],...解决“probDates”、日期(结束));defProb (i) = probData (2);结束
现在模拟信贷场景。由于违约非常罕见,因此通常会模拟大量信贷场景。
敏感性参数贝塔被设置为0.3
所有交易对手。这个值可以被校准或调整以探索模型的灵敏度。看到参考文献了解更多信息。
NUMCREDITSEN=100000;rng(“默认”);% Z是单个信用因素Z=randn(numcreditsen,1);%是特殊因素ε= randn (numCreditScen numCP);%贝塔系数是指交易对手对信贷因素的敏感性β=0.3*个(1,numCP);%交易对手潜在变量Y=bsxfun(@times,beta,Z)+bsxfun(@times,sqrt(1-beta.^2),ε);%默认指示器isDefault = bsxfun (@lt normcdf (Y), defProb);
现在有了一组分类的投资组合风险敞口场景和一组违约场景,请遵循Garcia Cespedes等人的方法,并使用高斯copula生成相关的风险敞口违约场景对。
定义一个潜在变量耶映射到模拟曝光的分布。耶定义为
哪里Z是信贷模拟中计算的系统因素,εe是一个独立的标准正态变量和ρ被解释为市场信用相关参数。通过构造,耶标准正态变量是否与Z与相关参数ρ.
之间的映射耶模拟的风险敞口要求我们根据一些可排序的标准,以有意义的方式对风险情景进行排序。该标准可以是任何有意义的数量,例如,它可以是合同价值(如利率)、总投资组合风险敞口等的潜在风险因素。
在本例中,使用总投资组合风险敞口(totalExp
)作为风险敞口情景准则,将信用因素与总风险敞口关联起来。如果ρ是负的,低价值的信贷因素Z往往与高价值的耶,因此高风险。这意味着ρ介绍WWR。
要实现耶还有暴露场景,把暴露场景分类totalExp
假设暴露场景的数量为年代(努姆塞纳里奥斯
).鉴于耶,求值j以致
然后选择场景j根据分类的暴露场景。
耶与模拟暴露和Z与模拟的默认值相关。的相关性ρ之间耶和Z因此,是风险敞口和信用模拟之间的关联。
%排序总曝光[~,totalExpIdx]=排序(totalExp);%情景切点切割点=0:1/numScenarios:1;% epsilonExp是潜在变量的特殊因素epsilonExp = randn (numCreditScen, 1);%设置市场信用关联值rho=-0.75;%潜变量y = rho * Z +根号(1 - rho^2) * epsilonExp;%找到相应的曝光场景binidx =离散化(normcdf(你们),割点);scenIdx = totalExpIdx (binidx);totalExpCorr = totalExp (scenIdx);PECorr = PE (scenIdx:);
下图显示了总投资组合风险敞口以及第一个交易对手的相关风险敞口信用情景。由于负相关性,信用系数为负值Z对应于高暴露水平(错误的风险)。
%我们最多只能策划10000个场景numScenPlot = min(10000年,numCreditScen);图;散射(Z (1: numScenPlot) totalExpCorr (1: numScenPlot))在…上散射(Z (1: numScenPlot) PECorr (1: numScenPlot, 1)包含(“信贷因素(Z)”)伊拉贝尔(“曝光”)头衔(['相关的风险敞口信贷场景,\rho='10〕num2str(rho)])图例(“总曝光量”,“CP1暴露”)持有关
为正值时ρ,信用因素和风险暴露之间的关系是反向的(正确的风险)。
ρ= 0.75;y = rho * Z +根号(1 - rho^2) * epsilonExp;binidx =离散化(normcdf(你们),割点);scenIdx = totalExpIdx (binidx);totalExpCorr = totalExp (scenIdx);图;散射(Z (1: numScenPlot) totalExpCorr (1: numScenPlot))包含(“信贷因素(Z)”)伊拉贝尔(“曝光”)头衔(['相关的风险敞口信贷场景,\rho='10〕num2str(ρ)))
您可以探索风险敞口或其他风险度量对一系列风险值的敏感性ρ.
对于每个值ρ,计算每个信贷场景的总损失以及每个交易对手的预期损失。本示例假设恢复率为40%。
恢复率=0.4;rhoValues=-1:0.1:1;Totalosses=零(NumCreditsen,numel(rhoValues));预期损失=零(numCP,numel(rhoValues));为i = 1:numel(rhoValues) rho = rhoValues(i);%潜变量y = rho * Z +根号(1 - rho^2) * epsilonExp;%找到相应的曝光场景binidx=离散化(normcdf(Ye),切点);sceneidx=totalExpIdx(binidx);模拟暴露=PE(sceneidx,:);%根据风险敞口和违约事件计算实际损失损失= isDefault .* simulateexposure * (1-Recovery);totalLosses (:, i) =(损失,2)之和;我们计算每个交易对手的预期损失expectedLosses(:,我)=意味着(损失);结束显示预期损失(rhoValues,ExpectedLoss)
预期损失Rho CP1 CP2 CP4 CP5 ------------------------------------------------- -1.0 604.10 260.44 194.70 1234.17 925.95-0.9 583.67 250.45 189.02 1158.65 897.91-0.8 560.45 245.19 183.23 1107.56 865.33-0.7 541.08 235.86 177.16 1041.39 835.12-0.6 521.89 228.78 170.49 991.70 803.22-0.5 502.68 217.30 165.25 926.92 774.27-0.4 487.15 211.29160.80 881.03 746.15 -0.3 471.17 203.55 154.79 828.90 715.63 -0.2 450.91 197.53 149.33 781.81 688.13 -0.1 433.87 189.75 144.37 744.00 658.19 0.0 419.20 181.25 138.76 693.26 630.38 0.1 399.36 174.41 134.83 650.66 605.89 0.2 385.21 169.86 130.93 617.91 579.01 0.3 371.21 164.19 124.62 565.78 552.83 0.4 355.57 158.14 119.92 530.79 530.19 0.5 342.58 152.10116.38 496.27 508.86 0.6 324.73 145.42 111.90 466.57 485.05 0.7 319.18 140.76 108.14 429.48 465.84 0.8 303.71 136.13 103.95 405.88 446.36 0.9 290.36 131.54 100.20 381.27 422.79 1.0 278.89 126.77 95.77 358.71 405.40
您可以可视化经济资本(EC)对市场信用相关参数的敏感性。将EC定义为百分位数之间的差异问损失的分布,减去预期损失。
负的ρ由于WWR,导致更高的资本要求。
pct=99;ec=prctile(totalosses,pct)-平均值(totalosses);数字;绘图(rhoValues,ec)标题(“经济资本(99%)对\rho”)xlabel(“Rho”); 伊拉贝尔(“经济资本”);
本例按照Garcia Cespedes等人的方法,实现了基于copula的WWR方法。该方法可以有效地重用现有的风险敞口和信用模拟,并且可以有效地计算对市场信用相关参数的敏感性,并方便地可视化所有相关值。
这里介绍的单参数copula方法可以扩展,以便更彻底地探索投资组合的WWR。例如,可以应用不同类型的copula,并可以使用不同的标准对风险敞口场景进行排序。其他扩展包括模拟多个系统信用风险变量(多因素模型),或从一年期框架转换为多期框架,以计算信用价值调整(CVA)等措施,如Rosen和Saunders(参见参考文献).
Garcia Cespedes,J.C.“巴塞尔协议II中错误路径风险、交易对手信用风险资本和阿尔法的有效建模。”风险模型验证杂志,第4卷/第1期,第71-98页,2010年春季。
Gupton,G.,C.Finger和M.Bathia。CreditMetrics™-技术文档。摩根大通,纽约,1997年。
Rosen,D.和D.Saunders,“CVA是错误的方式。”金融机构风险管理学报。2012年第5卷第3期,第252-272页。
作用displayExpectedLosses (rhoValues expectedLosses)流('预期损失\n');流(' Rho CP1 CP2 CP3 CP4 CP5\n');流(“-------------------------------------------------------------\n”);为i=1:numel(值)%显示预期损失流(“%.1f%9.2f%9.2f%9.2f%9.2f%9.2f%9.2f”,rho值(i),预期损失(:,i));结束结束
cdsbootstrap
|cdsprice
|cdsspread
|cdsrpv01