这个例子显示了如何计算单边信贷价值(估值)调整(CVA)银行持有香草组合,利率互换交易对手。CVA的预期损失是场外交易合同或投资组合的合同由于交易对手违约。CVA的特定交易对手被定义为所有时间点的折扣将暴露在每个时刻的概率乘以交易对手违约的那一刻,所有乘以1 -回收率。CVA的公式是:
在哪里R
经济复苏,discEE
贴现预期的曝光时间t,PD
默认的概率分布。
计算预期的风险,首先模拟许多未来场景的给定的合同或投资组合的风险因素。风险因素可以利率,在这个例子中,但将根据不同的投资组合,包括外汇利率,股票或商品价格,或任何会影响合同的市场价值。一旦足够的场景模拟,合同价格或组合可以在一系列未来日期为每个场景。结果是一个矩阵,或“立方体”,合同价值。
这些价格后转化为风险考虑抵押协议,银行可能会在地方网协议,在这个例子中,一些合同的价值可能相互抵消,降低总风险敞口。
每个场景的合同价值折现计算贴现风险敞口。贴现的预期风险可以通过一个简单的计算平均贴现暴露在每个模拟日期。
最后,交易对手违约概率通常来源于信用违约互换(CDS)市场报价和交易对手的患者可以根据上面的公式计算。假定交易对手违约独立于它的接触(没有操作错误风险)。
这个示例演示了一个香草利率互换的组合计算CVA的特定交易对手的目标。
互换是接近零值的组合t=0
。每个交换与一个对手和可能会或可能不会被包括在网协议。
%从电子表格读取互换swapFile =“cva-swap-portfolio.xls”;掉期= readtable (swapFile,“表”,“交换组合”);互换。LegType =[互换。LegType~swaps.LegType]; swaps.LegRate = [swaps.LegRateReceiving swaps.LegRatePaying]; swaps.LegReset = ones(size(swaps,1),1); numSwaps = size(swaps,1);
更多信息在交换参数CounterpartyID
和NettingID
,请参阅creditexposures
。更多信息在交换参数主要
,成熟
,LegType
,LegRate
,LatestFloatingRate
,期
,LegReset
,请参阅swapbyzero
。
解决= datenum (的14 - 12月- 2007);男高音= [3 6 12 5 * 12 10 7 * 12 * 12 20 30 * 12 * 12)';ZeroRates = (0.033 0.034 0.035 0.040 0.042 0.044 0.048 0.0475) ';男高音ZeroDates = datemnth(解决);复合= 2;基础= 0;RateSpec = intenvset (startdate可以的解决,“EndDates”ZeroDates,…“利率”ZeroRates,“复合”复合,“基础”、基础);图;情节(ZeroDates ZeroRates,“啊——”);包含(“日期”);datetick (“keeplimits”);ylabel (“零率”);网格在;标题(“收益率曲线在结算日期”);
可以改变数量的模拟利率生成场景。这个例子设置仿真时间更频繁,然后将在未来进一步不那么频繁。
%的蒙特卡罗模拟numScenarios = 1000;%计算每月模拟日期、季度日期后。0:12 simulationDates = datemnth(解决);simulationDates = [simulationDates datemnth (simulationDates(结束),3:3:74)]';numDates =元素个数(simulationDates);
为每个模拟日期,计算之前每个交换浮动重置日期。
floatDates = cfdates(解决- 360,swaps.Maturity swaps.Period);互换。FloatingResetDates = zeros(numSwaps,numDates);为i = numDates: 1:1 thisDate = simulationDates(我);floatDates (floatDates > thisDate) = 0;swaps.FloatingResetDates(:,我)= max (floatDates [], 2);结束
合同风险因素,模拟值是零线。对于本例,您模型使用单因素Hull-White的利率期限结构模型。这是一个短期汇率模型,定义为:
在哪里
:一个小变化后短期汇率的变化,
:均值回归的速度
:短期汇率的波动性
:一个维纳过程(一个标准正态过程)
:漂移函数定义为:
:瞬时远期利率
:偏导数 关于时间
一旦你有模拟短期汇率的道路,生成一个完整的收益率曲线在每个模拟日期使用公式:
:零速度时间 在一段时间内
:价格的零息债券 支付1美元
每个场景包含完整的期限结构通过时间前进,在每个选定的仿真建模的日期。
指的是使用市场数据校准Hull-White模型在金融工具的工具箱™用户指南更多细节Hull-White单因素模型校准。
α= 0.2;σ= 0.015;hw1 = HullWhite1F (RateSpec、ασ);
对于每一个场景,模拟未来利率曲线在每个估值日期使用Hull-White单因素利率模型。
%使用可再生的随机数生成器(不同种子生产%不同的随机场景)。prevRNG = rng (0,“旋风”);dt = diff (yearfrac(解决simulationDates 1));nPeriods =元素个数(dt);场景= hw1.simTermStructs (nPeriods,…“nTrials”numScenarios,…“deltaTime”,dt);%恢复随机数发生器的状态rng (prevRNG);%计算折扣因素通过每个实现利率%的场景。dfactors = 1 (numDates numScenarios);为我= 2:numDates tenorDates = datemnth (simulationDates(张),男高音);rateAtNextSimDate = interp1 (tenorDates挤压(场景(张,,,:)),…simulationDates(我),“线性”,“extrap”);%计算D (t1, t2)dfactors(我)= zero2disc (rateAtNextSimDate,…repmat (simulationDates (i), 1 numScenarios), simulationDates(张),1,3);结束dfactors = cumprod (dfactors, 1);
创建一个表面的收益率曲线进化为一个特定的场景。
我= 20;图;冲浪(男高音、simulationDates场景(:,:我))轴紧datetick (“y”,“mmmyy”);包含(的男高音(个月));ylabel (“观察日期”);zlabel (“利率”);甘氨胆酸ax =;斧子。六世ew = [-49 32]; title(sprintf(“场景% d收益率曲线进化\ n”,我));
每个场景互换组合是未来售价为每一个模拟日期。价格是计算使用价格逼近函数,hswapapprox
。它在患者中是很常见的应用程序使用简化的近似函数当定价合同由于这些蒙特卡罗模拟的性能需求。
由于仿真时间不对应互换现金流日期(浮动利率重置)估计最新的1年期利率的浮动利率(所有互换期限1年)最近的模拟速度之间的插值曲线。
交换价格然后聚合为一个“立方体”的价值观包含所有期货合约值在每个模拟日期为每个场景。合同价格的结果多维数据集是一个三维矩阵每一行代表一个模拟日期,合同每一列,每个不同的模拟场景的“页面”。
%计算所有按市值计价值对于这个场景。使用一个%的近似函数来提高性能。值= hcomputeMTMValues (simulationDates互换,场景,男高音);
创建一个块所有交换价格的演变为特定场景。
我= 32;图;情节(simulationDates值(:,:,i));datetick;ylabel (“盯市价格”);标题(sprintf (的交换价格以及场景% d ',我));
情节的总投资组合价值每个场景的模拟。随着每个场景的发展随着时间的推移,合同向上或向下移动的值取决于建模利率期限结构的变化。互换接近成熟,他们的价值观将接近零自聚合所有剩余现金流的价值将减少每个现金流日期之后。
随着时间的推移%认为投资组合价值图;totalPortValues =挤压(sum(值,2));情节(simulationDates totalPortValues);标题(为所有场景MTM投资组合总价值的);datetick (“x”,“mmmyy”)ylabel (“投资组合价值(美元)”)包含(“模拟日期”)
的一个特定的合同(我)时间t是合同的最大的价值(六世),0
:
和接触特定交易对手只是一笔单独的合同风险:
然而在网协议的存在,合同是聚合在一起,可以相互抵消。因此总接触的所有合同网协议:
计算这些风险对整个投资组合以及每一个对手在每个模拟日期使用creditexposures
函数。
Unnetted合同使用表示南
在NettingID
向量。暴露的unnetted合同的市场价值等于合同如果有积极的价值,否则它是零。
合同网协议中包括他们的价值观聚合在一起,可以相互抵消。更多细节见参考计算曝光值按市值计价的合同。
[曝光,expcpty] = creditexposures(价值观、swaps.CounterpartyID…“NettingID”,swaps.NettingID);
情节的总投资组合中每个场景模拟。类似于合同价值的情节,每个场景的曝光将接近零的互换成熟。
随着时间的推移%视图组合曝光图;totalPortExposure =挤压(sum(敞口,2));情节(simulationDates totalPortExposure);标题(为所有场景的投资组合风险敞口的);datetick (“x”,“mmmyy”)ylabel (敞口(美元))包含(“模拟日期”)
几个暴露资料是有用的在分析银行未来潜在暴露的对手。这里你可以计算几个每交易对手(non-discounted)接触资料,以及对整个投资组合。
pfizer
(未来潜在暴露):高百分比(95%)的风险敞口的分布在任何未来特定日期(也称为峰值接触(PE))
MPFE
(最大接触潜在的未来):最大工业的所有日期
EE
(预期接触):平均(平均)的风险敞口的分布在每一个日期
EPE
(预期的积极接触):随着时间的推移加权平均预期的风险
EffEE
(有效的预期接触):最大预期暴露在任何时候,t,或者之前的时间
EffEPE
(有效的预期的积极接触):有效的加权平均预期风险
为进一步定义,请参阅《新巴塞尔协议》(Basel II)例如文档引用。
%计算整个投资组合的风险portExposures =总和(曝光,2);%计算曝光概要文件为每个交易对手和整个投资组合cpProfiles = exposureprofiles (simulationDates,曝光);portProfiles = exposureprofiles (simulationDates portExposures);
可视化曝光资料,首先对整个投资组合,然后为特定交易对手。
%可视化投资组合配置文件图;情节(simulationDates portProfiles.PFE,…simulationDates portProfiles。MPFE *的(numDates, 1),…simulationDates portProfiles.EE,…simulationDates portProfiles。EPE *的(numDates, 1),…simulationDates portProfiles.EffEE,…simulationDates portProfiles。EffEPE *的(numDates, 1));传奇({“PFE (95%)”,“马克斯pfizer”,“Exp曝光(EE)”,“Time-Avg EE (EPE)”,…“马克斯过去EE (EffEE)”,“Time-Avg EffEE (EffEPE) '})datetick (“x”,“mmmyy”)标题(的投资组合风险敞口概要”);ylabel (敞口(美元))包含(“模拟日期”)
想象接触概要文件为一个特定的交易对手。
cpIdx =找到(expcpty = = 5);图;情节(simulationDates cpProfiles .PFE (cpIdx),…simulationDates cpProfiles (cpIdx)。MPFE *的(numDates, 1),….EE simulationDates cpProfiles (cpIdx),…simulationDates cpProfiles (cpIdx)。EPE *的(numDates, 1),….EffEE simulationDates cpProfiles (cpIdx),…simulationDates cpProfiles (cpIdx)。EffEPE *的(numDates, 1));传奇({“PFE (95%)”,“马克斯pfizer”,“Exp曝光(EE)”,“Time-Avg EE (EPE)”,…“马克斯过去EE (EffEE)”,“Time-Avg EffEE (EffEPE) '})datetick (“x”,“mmmyy”,“keeplimits”)标题(sprintf (“对手的% d风险配置文件”cpIdx));ylabel (敞口(美元))包含(“模拟日期”)
使用折扣计算贴现预期风险因素从每个模拟利率情况。估值折扣因素对于一个给定的日期在一个给定的场景是增量的产品折扣因素从一个模拟日期下,随着利率路径的场景。
%得到折扣每交易对手风险敞口,为每一个场景discExp = 0(大小(曝光));为i = 1: numScenarios discExp(:,:我)= bsxfun (@times, dfactors(:,我),曝光(:,:我));结束%贴现预期暴露discProfiles = exposureprofiles (simulationDates discExp,…“ProfileSpec”,“EE”);
情节的贴现预期风险总投资组合以及每个对手。
%将每个对手的贴现EE聚合成一个矩阵discEE = [discProfiles.EE];%组合贴现EE图;情节(simulationDates sum (discEE, 2)) datetick (“x”,“mmmyy”,“keeplimits”)标题(“贴现预期风险的投资组合”);ylabel (的贴现风险敞口(美元))包含(“模拟日期”)
%对手贴现EE图;情节(simulationDates discEE) datetick (“x”,“mmmyy”,“keeplimits”)标题(为每个对手的贴现预期风险敞口的);ylabel (的贴现风险敞口(美元))包含(“模拟日期”)
一个给定的交易对手的违约概率是隐含的当前市场利差交易对手的cd。使用的函数cdsbootstrap
产生违约的累积概率在每个模拟日期。
%每个对手进口CDS市场信息cd = readtable (swapFile,“表”,“CDS利差”);disp (CDS);
日期cp1 cp2 cp3 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:结束));(RateSpec ZeroData =。EndD一个te年代R一个teSpec.Rates];%校准每个交易对手的违约概率DefProb = 0(长度(simulationDates),大小(CDSSpreads, 2));为i = 1:尺寸(DefProb, 2) probData = cdsbootstrap (ZeroData, [CDSDates CDSSpreads (:, i)),…解决,“probDates”,simulationDates);DefProb(:,我)= probData (:, 2);结束%的情节为每个交易对手违约的累积概率。图;情节(simulationDates DefProb)标题(“为每一个交易对手违约概率曲线”);包含(“日期”);网格在;ylabel (“累积概率”)datetick (“x”,“mmmyy”)ylabel (违约概率的)包含(“模拟日期”)
信用值(估值)调整(CVA)公式是:
在哪里R
经济复苏,discEE
贴现预期的曝光时间t,PD
默认的概率分布。这假设接触独立于默认(没有操作错误风险),同时也利用风险中性概率假设接触得到。
近似积分的有限求和估值日期为:
在哪里t_1
是今天的日期,t_2
、……t
_n未来估值日期。
假设cd信息对应于指数的交易对手cpIdx
。计算患者目前的市场价值的交易对手信用风险cpIdx
。对于这个示例,回收率为40%。
复苏= 0.4;CVA = (1-Recovery) *总和(discEE (2:,:)。* diff (DefProb));为i = 1:元素个数(CVA)流(交易对手的脑血管意外% d = $ % .2f \ n ',我,脑血管意外(i));结束
CVA的对手1 = 2229.38美元CVA的对手2 = 2498.71 CVA的对手3 = 918.96美元CVA的对手4 = 5521.83美元CVA的对手5 = 5883.77美元
图;酒吧(CVA);标题(CVA的每个对手的);包含(“对手”);ylabel (“CVA的美元”);网格在;
Pykhtin、迈克尔和史蒂文•朱建模指南交易对手信用风险、GARP 7月/ 2007年8月,37岁的问题16 - 22页。
Pykhtin、迈克尔和丹•罗森定价交易对手风险的贸易水平和脑血管意外,2010年。
新巴塞尔协议:https://www.bis.org/publ/bcbs128.pdf256页。
cdsbootstrap
|cdsprice
|cdsspread
|cdsrpv01