主要内容

交易对手信用风险和CVA

这个例子展示了如何计算单边信贷价值(估值)调整(CVA)的银行持有一个投资组合的香草利率掉期与几个交易对手。CVA是由于交易对手违约而导致的场外合约或合约组合的预期损失。特定交易对手的CVA定义为每一时刻的预期风险折现乘以该交易对手在该时刻违约的概率,所有这些乘以1减去回收率。CVA公式为:

C V. 一种 = 1 - R. 0. T. D. 一世 S. C E. E. T. D. P. D. T.

在哪里R.是复苏,,dis贴现的预期风险敞口T.PD.默认概率分布。

通过首先模拟给定合同或投资组合的许多风险因素的未来情景来计算预期的曝光。危险因素可以是利率,如本例所示,但基于投资组合会有所不同,并且可以包括外汇税率,股票或商品价格,或者任何将影响合同市场价值的任何东西。一旦模拟了足够的情景,合同或投资组合可以在每种情况下都有一系列未来日期。结果是合同值的矩阵或“立方体”。

在考虑到银行可能已经到位的抵押协议之后,这些价格被转换为暴露,如本例所示,若干合同价值可能相互抵消,降低其总曝光率。

每种方案的合同值都会折扣以计算折扣曝光。然后可以通过每个模拟日期的折扣曝光的简单平均值来计算折扣预期的预期曝光。

最后,交易对手违约概率通常来自信用违约掉期(CDS)市场报价,交易对手的CVA可根据上述公式计算。假设交易对手违约与其风险敞口无关(无错向风险)。

此示例演示了Vanilla兴趣率掉的组合,其目标是计算特定对手的CVA。

阅读交换产品组合

掉期投资组合的价值有时接近于零T.=0..每个交换都与交易对手相关联,可能或可能不包括在网状协议中。

从电子表格读取交换游泳池=“cva-swap-portfolio.xls”;掉期= readtable (swapFile,“表”“交换组合”);swaps.legtype = [swaps.legtype〜swaps.legtype];swaps.legrate = [swaps.legraphereceiving swaps.legratepaying];swaps.legreset =那些(尺寸(掉掉,1),1);numswaps =尺寸(掉掉,1);

有关交换参数的更多信息抵押品Nettingid., 看信用风险。有关的交换参数的详细信息主要成熟legtype.勒格拉特最后的忘恩负义者legrees, 看天鹅座

从利率曲线创建RateSpec

解决= datenum (‘2007年12月14日’)期限=[3 6 12 5*12 7*12 10*12 20*12 30*12]';零利率=[0.033 0.034 0.035 0.040 0.042 0.044 0.048 0.0475]';零日期=日期(结算,期限);复利=2;基准=0;利率规范=intenvset(startdate可以的解决“结束日期”,Zerodates,......“费率”ZeroRates,“复利”,复合,“基础”,基础);图;图(Zerodates,Zerorates,'O-');Xlabel('日期');datetick(“keeplimits”);ylabel(“零利率”);网格在…上;头衔(“结算日的收益率曲线”);

图中包含一个轴对象。暂停日期的标题屈服曲线的轴对象包含类型线的对象。

设置可变的模拟参数

您可以更改生成的模拟利率场景的数量。此示例首先将模拟日期设置为更频繁,然后在将来进一步设置为不频繁。

%蒙特卡罗模拟次数numScenarios = 1000;%计算每月仿真日期,然后稍后每季度日期。simulationDates=datemnth(结算,0:12);simulationDates=[simulationDates-datemnth(simulationDates(end,3:3:74)];numDates=numel(simulationDates);

计算浮动复位日期

对于每个模拟日期,计算每个交换的先前浮动重置日期。

floatDates = cfdates(解决- 360,swaps.Maturity swaps.Period);互换。FloatingResetDates = zeros(numSwaps,numDates);为了i = numDates:-1:1 thisDate = simulationDates(i);floatDates(floatDates > thisDate) = 0;swaps.FloatingResetDates(:,我)= max (floatDates [], 2);结尾

建立船体白色单因素模型

模拟为合约估值的风险因素是零曲线。对于本例,您使用单因素赫尔-怀特模型对利率期限结构进行建模。这是一个短期利率模型,其定义为:

D. R. = [ θ T. - 一种 R. ] D. T. + σ D. Z.

在哪里

  • D. R. :在较小的时间变化后,在短速度变化, D. T.

  • 一种 :平均回归率

  • σ :短率的波动

  • D. Z. :韦纳过程(标准的正常过程)

  • θ T. :Drive功能定义为:

θ T. = F T. 0. T. + 一种 F 0. T. + σ 2 2 一种 1 - E. - 2 一种 T.

F 0. T. :时间上的瞬时远期速率 T.

F T. 0. T. :的偏导数 F 关于时间

模拟短速率的路径后,使用公式在每个模拟日期生成完整的产量曲线:

R. T. T. = - 1 T. - T. 自然对数 一种 T. T. + 1 T. - T. B. T. T. R. T.

自然对数 一种 T. T. = 自然对数 P. 0. T. P. 0. T. + B. T. T. F 0. T. - 1 4. 一种 3. σ 2 E. - 一种 T. - E. - 一种 T. 2 E. 2 一种 T. - 1

B. T. T. = 1 - E. - 一种 T. - T. 一种

R. T. T. :时间零率 T. 一段时间 T. - T.

P. T. T. :当时零息债券的价格 T. 一次付一美元 T.

每个场景都包含在我们选择的每个模拟日期建模的随时间推移的完整期限结构。

参考利用市场数据校准赫尔白模型有关Hull-White单因素模型校准的更多详细信息,请在“金融仪器”工具箱“™用户指南中。

α= 0.2;σ= 0.015;hw1 = HullWhite1F (RateSpec、ασ);

模拟的场景

对于每个场景,使用赫尔-怀特单因素利率模型模拟每个估值日期的未来利率曲线。

%使用可复制的随机数发生器(改变种子以产生%不同的随机场景)。prevrng = rng(0,'twister');dt = diff(verfrac(sollar,sumingdates,1));nperiods = numel(dt);场景= hw1.simtermstructs(nperiods,......“nTrials”,numscenarios,......“德拉蒂姆”,dt);%恢复随机数发生器状态rng (prevRNG);%通过每个实现的利率计算折扣因素%情景。Dfortors = ONE(NUMDATES,NUMSCENARIOS);为了i = 2:Numdates Tenordates = DateMnth(模拟(I-1),男高音);RateAtNextSimdate = Interp1(TenOrdates,Squeeze(方案(I-1,:,:)),......simulationDates(我),'线性''extrap');%计算D (t1, t2)dfactors(i,:)=zero2disc(rateAtNextSimDate,......Repmat(模拟(I),1,NumScenarios),模拟(I-1), -  1,3);结尾dfacts=cumprod(dfacts,1);

检查一个场景

为特定场景创建收益率曲线演变的曲面图。

我= 20;图;冲浪(男高音,仿真,方案(:,:,i)轴datetick(“是的”“嗯”);Xlabel('男高音(月)');ylabel(“观察日期”);Zlabel(“费率”);斧头= GCA;ax.view = [-49 32];标题(Sprintf(“情景%d收益率曲线演变”\n”,一世));

图中包含axes对象。标题为Scenario 20屈服曲线演变的axes对象包含surface类型的对象。

计算按市值计价的掉期价格

对于每个场景,交换产品组合在每个未来的模拟日期中定价。使用价格近似函数计算价格,hswapapprox.由于蒙特卡罗模拟的性能要求,在CVA应用程序中使用简化的近似函数对合同进行定价是很常见的。

由于模拟日期与掉掉掉期的日期不对应于互换日期(重置浮动率)估计最新的浮动速率,其中1年速率(所有次次次数都有1年)在最近的模拟速率曲线之间插值。

然后,交换价格被聚合成一个值的“立方体”,其中包含每个场景的每个模拟日期的所有未来合同值。由于合同价格的结果是一个三维矩阵,其中每行代表仿真日期,每列是一个合同,以及每个“页面”一个不同的模拟场景。

%计算此方案的所有标记到市场值。用A.%近似函数在这里改善性能。值= hcomputeMTMValues (simulationDates互换,场景,男高音);

检查情景价格

创建一个特定情景下所有掉期价格演变的图表。

我= 32;图;绘图(模拟,值(:,:,i));dateTick;ylabel(“按市价计价”);标题(Sprintf('沿情景%d'的交换价格, 一世));

图中包含一个轴对象。场景32中标题为Swap价格的axes对象包含30个line类型的对象。

可视化模拟的组合值

绘制模拟每个场景的总投资组合价值。随着每个场景的时间推移,合同的价值会根据建模利率期限结构的变化而上下移动。随着掉期接近到期,其价值将开始接近于零,因为所有剩余现金流的总价值在每个现金流日后,s将减少。

%查看随时间变化的投资组合价值图;TotalPortValues =挤压(总和(值,2));绘图(模拟,TotorPortValues);标题('所有方案的总MTM投资组合价值');datetick(“x”“嗯”)伊拉贝尔(“投资组合价值(美元)”)xlabel('模拟日期'

图中包含一个轴对象。标题为“所有场景的总MTM组合值”的轴对象包含1000个类型为line的对象。

按交易对手计算风险敞口

特定合同的披露(一世)时间T.为合约最高金额(6),0.

E. 一世 T. = 最大值 { V. 一世 T. 0. }

特定交易对手的曝光只是个人合同曝光的总和:

E. C P. T. = σ. E. 一世 T. = σ. 最大值 { V. 一世 T. 0. }

但是,在有净额协定的情况下,合同是合计在一起的,可以相互抵消。因此,净额协议中所有合同的总风险敞口为:

E. N 一种 T. = 最大值 { σ. V. 一世 T. 0. }

使用每个模拟日期计算整个投资组合的这些曝光以及每个仿真日期的每个交易对象信用风险功能。

未呼吸的合同使用a表示Nettingid.向量。未入住合同的曝光等于合同的市场价值,如果它具有正值,否则为零。

净额结算协议中包含的合同将其价值聚合在一起,可以相互抵消。有关按市值计价合同价值计算风险敞口的更多详细信息,请参阅参考资料。

[曝光,expcpty] = Creditexposures(值,Swaps.counterPartyid,......“NettingID”,swaps.nettingid);

在我们的模拟中绘制每个场景的总投资组合风险敞口。与合同价值图类似,随着掉期成熟,每个场景的风险敞口将接近零。

%查看投资组合曝光随着时间的推移图;totalportexposure =挤压(总和(暴露,2));绘图(模拟逻辑,TotalPollepposure);标题(“所有情况下的投资组合敞口”);datetick(“x”“嗯”)伊拉贝尔(敞口(美元))xlabel('模拟日期'

图中包含一个轴对象。标题为Portfolio Exposure for All scenario的轴对象包含1000个类型为line的对象。

曝光资料

在分析银行对交易对手的潜在未来风险时,多个风险敞口模式非常有用。在这里,您可以计算每个交易对手以及整个投资组合的多个(非贴现)风险敞口模式。

  • PFE(潜在未来暴露):任何特定未来日期暴露分布的高百分位(95%)(也称为峰值暴露(PE))

  • MPFE(最大潜在未来风险敞口):所有日期的最大PFE

  • EE.:(预期曝光):每个日期的曝光分布的平均值(平均值)

  • epe.(预期的正曝光):预期暴露的加权平均随时间

  • eveee.(有效预期暴露):任何时候的最大预期暴露,T.,或以前的时间

  • effepe.(有效预期正向暴露):有效预期暴露的加权平均值

有关进一步的定义,请参阅例如参考文献中的Basel II文件。

%计算整个投资组合曝光PortExposure=总和(暴露,2);%计算每个交易对手和整个投资组合的风险敞口cpprofiles = exposureprofiles(模拟,曝光);portprofiles = exposureprofiles(模拟,portexposures);

可视化曝光配置文件,首先用于整个投资组合,然后针对特定的对手。

%可视化投资组合暴露概况图;绘图(模拟逻辑,portprofiles.pfe,......模拟逻辑,portprofiles.mpfe *那些(Numdates,1),......模拟逻辑,portprofiles.ee,......模拟逻辑,portprofiles.epe *那些(Numdates,1),......模拟逻辑,portprofiles.Effee,......模拟日期,portProfiles.EffEPE*one(numDates,1));传奇({“PFE(95%)”'max pfe''EXP曝光(EE)'“时间平均值EE(EPE)”......'最大过去(effee)'“时间平均有效值(有效值)”}) datetick (“x”“嗯”)标题(的投资组合风险敞口概要”);ylabel(敞口(美元))xlabel('模拟日期'

图中包含一个轴对象。具有标题产品组合曝光配置文件的轴对象包含6个类型的线。这些物体代表PFE(95%),MAX PFE,EXP曝光(EE),Time-AVG EE(EPE),最大过去EE(Effee),Time-Avg Effee(Effepe)。

可视化特定交易对手的暴露概况。

cpidx =查找(Expcpty == 5);图;绘图(模拟逻辑,CPProfiles(CPIDX).pfe,......模拟日期,cpProfiles(cpIdx).MPFE*个(numDates,1),......模拟逻辑,cpprofiles(cpidx).ee,......模拟逻辑,cpprofiles(cpidx).epe * ope * ope * ope(numdates,1),......simulationDates cpProfiles (cpIdx)。EffEE,......模拟逻辑,cpprofiles(cpidx).Effepe * off(numdates,1));传奇({“PFE(95%)”'max pfe''EXP曝光(EE)'“时间平均值EE(EPE)”......'最大过去(effee)'“时间平均有效值(有效值)”}) datetick (“x”“嗯”“keeplimits”)头衔(斯普林特)(“交易对手%d敞口概况”cpIdx));ylabel(敞口(美元))xlabel('模拟日期'

图中包含一个轴对象。带有标题对方5曝光配置文件的轴对象包含6个类型的线。这些物体代表PFE(95%),MAX PFE,EXP曝光(EE),Time-AVG EE(EPE),最大过去EE(Effee),Time-Avg Effee(Effepe)。

折扣曝光

使用每个模拟利率场景的贴现因子计算贴现预期风险敞口。给定场景中给定估值日期的贴现因子是从一个模拟日期到下一个模拟日期的增量贴现因子的乘积,以及该场景的利率路径。

%在每一种情况下,获得每个交易对手的贴现敞口discExp = 0(大小(曝光));为了i=1:numcenarios discExp(:,:,i)=bsxfun(@times,dfactors(:,i),曝光(:,:,i));结尾%折扣预期曝光discprofiles = exposureprofiles(模拟,Discexp,......“ProfileSpec”'ee');

绘制总投资组合以及每个交易对象的折扣预期风险。

%将每个交易对手汇总为矩阵的贴现eediscee = [discprofiles.ee];%投资组合折扣ee图;绘图(模拟日期,总和(discEE,2))日期勾选(“x”“嗯”“keeplimits”)标题('投资组合的折扣预计曝光');ylabel('折扣曝光($)')xlabel('模拟日期'

图中包含一个轴对象。标题为“Portfolio预期风险折现”的轴对象包含一个类型为line的对象。

%交易对齐折扣ee图;plot(模拟逻辑,侦探)DateTick(“x”“嗯”“keeplimits”)标题(“每个交易对手的贴现预期风险”);ylabel('折扣曝光($)')xlabel('模拟日期'

图中包含一个Axis对象。每个交易对手的标题折扣预期风险敞口Axis对象包含5个line类型的对象。

校准每个交易对手的默认曲线概率

特定交易对手的默认概率是由对方的CD的当前市场传播暗示。使用功能cdsbootstrap生成每个模拟日期的累积违约概率。

为每一交易对手进口CDS市场信息cds = readtable(swapfile,“表”“CDS价差”);DISP(CDS);
Date cp1 cp2 cp4 cp5 _____________ ____________ ___ {'3/20/2008'} 140 85 115 170 140 {'3/20/2009'} 185 120 150 205 175 {'3/20/2010'} 215 170 195 245 210 {'3/20/2011'} 275 215 240 285 265 {'3/20/2012'} 340 255 290 320 310
CDSDates=datenum(CDS.Date);CDSSpreads=table2array(CDS(:,2:end));ZeroData=[RateSpec.EndDates RateSpec.Rates];%校准每个交易对手的默认概率defprob = zeros(长度(仿真),大小(Cdsspreads,2));为了i = 1:size(defprob,2)probdata = cdsbootstrap(zerodata,[cdsdates cdsspreads(:,i)],......解决'probdates', simulationDates);DefProb(:,我)= probData (:, 2);结尾%每个交易对手的累积违约概率图。图;情节(simulationDates DefProb)标题('每个交易对象的默认概率曲线');Xlabel('日期');网格在…上;ylabel('累积概率')DateTick(“x”“嗯”)伊拉贝尔(“违约概率”)xlabel('模拟日期'

图中包含一个轴对象。标题为“每个交易方的违约概率曲线”的轴对象包含5个类型为line的对象。

CVA计算

信贷价值(估值)调整(CVA)公式为:

C V. 一种 = 1 - R. 0. T. D. 一世 S. C E. E. T. D. P. D. T.

在哪里R.是复苏,,dis贴现的预期风险敞口T.PD.默认概率分布。这假设曝光独立于默认(无错误风险),并且还假设使用风险中立概率获得曝光。

在估值日期上用有限和近似积分如下:

C V. 一种 一种 P. P. R. O. X = 1 - R. σ. 一世 = 2 N D. 一世 S. C E. E. T. 一世 P. D. T. 一世 - P. D. T. 一世 - 1

在哪里t_1是今天的日期,t_2,......,T._N未来估值日期。

假设CDS信息对应的是具有指数的交易对手cpIdx.计算的CVA是我们信贷风险的现状市场价值cpIdx.对于此示例,将恢复速率设置为40%。

恢复= 0.4;CVA =(1恢复)*和(Discee(2:结束,:)。* Diff(DefProb));为了i = 1:numel(CVA) fprintf('交易对手的CVA %d = $%.2f\n',我,cva(i));结尾
交易对手1的CVA=2229.38美元交易对手2的CVA=2498.71美元交易对手3的CVA=918.96美元交易对手4的CVA=5521.83美元交易对手5的CVA=5883.77美元
图;酒吧(CVA);标题(“每个交易对手的CVA”);Xlabel(“对手”);ylabel('cva $');网格在…上

图中包含一个轴对象。具有标题CVA的轴对象对于每个交易对象包含类型栏的对象。

参考文献

  1. Pykhtin, Michael和Steven Zhu,交易对手信用风险建模指南,Garp,2007年7月/ 8月,第37期,第16-22页。

  2. Pykhtin, Michael和Dan Rosen,在交易水平和CVA上为交易对手风险定价,2010年。

  3. 巴塞尔二世:https://www.bis.org/publ/bcbs128.pdf第256页。

也可以看看

|||

相关例子

更多关于

外部网站