这个例子显示了如何计算单方面的信用值(评估)调整(CVA)为一家银行控股香草利率互换交易的投资组合与几个对手。CVA是由于交易对手违约合同的过度非处方合同或投资组合的预期损失。对于特定交易对手的CVA定义为在每一时刻乘以该在那一刻对方违约,所有乘以1减去回收率的概率贴现预期曝光时间的总和的全部点。的CVA公式为:
哪里[R
是恢复,discEE
在时间贴现预期曝光Ť和PD
默认的概率分布。
预期曝光时,首先模拟危险因素的许多未来的情景给定的合同或投资组合计算。风险因素可能是加息,因为在这个例子中,但会有所不同基础上,投资组合,可以包括外汇汇率,股票或商品价格,或任何会影响合同的市场价值。一旦足够组场景进行了模拟,合同或组合可以被定价在一系列每个场景的未来日期。其结果是一个矩阵或“立方”,合同值。
这些价格都考虑到抵押协议,该银行可能在地方和净额结算协议,因为在这个例子中,几个合同的价值可能会相互抵消,降低他们的总曝光后转换成风险。
每个场景的合同价值贴现来计算折扣曝光。贴现预期曝光然后可以通过在每个模拟日期的简单平均贴现曝光来计算。
最后,交易对方默认概率通常由信用默认交换(CDS)市场报价衍生和对方的CVA可以根据上面的公式来计算。假设一个交易对手违约是独立的曝光(无错向风险)的。
这个例子演示了香草利率互换交易的投资组合计算CVA特定交易对手的目标。
互换的组合是接近零值在时间Ť=0
。每个交换与交易对手有关,并可能会或可能不会被包括在一个结算协议。
从电子表格%阅读互换SWAPFILE ='CVA交换-portfolio.xls';互换= readtable(交换文件,'片',“掉期资产组合”);swaps.LegType = [swaps.LegType〜swaps.LegType];swaps.LegRate = [swaps.LegRateReceiving swaps.LegRatePaying];swaps.LegReset =酮(大小(互换,1),1);numSwaps =尺寸(互换,1);
有关本交换参数的详细信息CounterpartyID
和NettingID
见creditexposures
。有关本交换参数的详细信息主要
,到期
,LegType
,LegRate
,LatestFloatingRate
,期
和LegReset
见swapbyzero
。
定居= datenum('14 - 癸2007');男高音= [3 6 12 5 * 12 7 * 12 10 * 12 20 * 12 30 * 12]';ZeroRates = [0.033 0.034 0.035 0.040 0.042 0.044 0.048 0.0475]';ZeroDates = datemnth(沉降,男高音);配混= 2;基础= 0;RateSpec = intenvset('StartDates', 解决,'EndDates',ZeroDates,...“价格”,ZeroRates,“复利”,复利,'基础',基础);数字;图(ZeroDates,ZeroRates,“邻”);xlabel('日期');datetick('keeplimits');ylabel(“零利率”);格上;标题(“收益率曲线的定居日期”);
你可以改变的模拟利率的情况下,你产生的数量。此示例将模拟日期在第一,然后在未来转向较不频繁的进一步更加频繁。
Monte Carlo模拟的数量%numScenarios = 1000;%计算每月的模拟日期,然后每季度日期晚。simulationDates = datemnth(沉降,0:12);simulationDates = [simulationDates datemnth(simulationDates(结束),3:3:74)]';numDates = numel(simulationDates);
对于每个模拟日期,计算每个交换之前的浮动重置日期。
floatDates = cfdates(定居-360,swaps.Maturity,swaps.Period);swaps.FloatingResetDates =零(numSwaps,numDates);对于I = numDates:-1:1 thisDate = simulationDates(ⅰ);floatDates(floatDates> thisDate)= 0;swaps.FloatingResetDates(:,1)= MAX(floatDates,[],2);结束
被模拟重视合同的风险因素是零线。在这个例子中,您使用的一个因素赫尔怀特模型建模的利率期限结构。这是短率的模型并且被定义为:
哪里
:改变在短期利率在时间上的微小变化后,
:均值回归率
:短期利率波动
:甲韦纳过程(一个标准的正常过程)
:漂移功能定义为:
:在时间瞬时远期利率
:偏导数 相对于时间
一旦你已经模拟了短期利率的路径,产生在使用公式每个模拟日期满收益率曲线:
:零利率的时间 一段
:价格零息债券在时间 在时刻支付1美元
每个场景都包含了完整的期限结构随着时间向前推进,在我们的每一个选择的模拟日期为蓝本。
请参阅校准赫尔怀特模型使用市场数据例如金融工具工具箱™用户指南在赫尔 - 怀特单因素模型校准的更多细节。
阿尔法= 0.2;西格玛= 0.015;HW1 = HullWhite1F(RateSpec,α,Sigma公司);
对于每一个场景中,使用赫尔 - 怀特单因子利率模型模拟在每个估值日未来利率曲线。
%使用可再现的随机数发生器(改变种子以产生%不同的随机的场景)。prevRNG = RNG(0,“扭腰”);DT = DIFF(YEARFRAC(沉降,simulationDates,1));nPeriods = numel(DT);场景= hw1.simTermStructs(nPeriods,...'nTrials',numScenarios,...'的DeltaTime',DT);%恢复随机数发生器状态RNG(prevRNG);%计算通过每个实现利率的贴现因子%的情况。dfactors =酮(numDates,numScenarios);对于I = 2:numDates tenorDates = datemnth(simulationDates第(i-1),男高音);rateAtNextSimDate = interp1(tenorDates,挤压(场景第(i-1,:,:)),...simulationDates(i)中,“线性”,'extrap');%计算d(T1,T2)dfactors(I,:) = zero2disc(rateAtNextSimDate,...repmat(simulationDates(i)中,1,numScenarios),simulationDates(I-1), - 1,3);结束dfactors = cumprod(dfactors,1);
创建收益率曲线变化的特定场景的表面图。
I = 20;数字;冲浪(中音,simulationDates,情景(:,:,i))的轴紧datetick('Y','mmmyy');xlabel(“男高音(月)”);ylabel(“观察日”);zlabel(“价格”);AX = GCA;ax.View = [-49 32];标题(sprintf的(“情景%d收率曲线演化\ N”,一世));
每种情形的互换组合定价为未来的模拟日期。价格是使用价格逼近函数计算,hswapapprox
。这是CVA应用定价合同时使用简化的近似函数共同由于这些蒙特卡罗模拟的性能要求。
由于模拟日期不对应互换现金流日期(其中浮动利率重置)估计与1年期利率最新的浮动利率(所有掉期有期1年)最近的模拟速度曲线之间的插值。
然后,交换价格汇总到其中包含在每个模拟日期为每个方案所有未来的合同价值值的“魔方”。由此产生的合同价格的立方体是三维矩阵,其中每一行代表一个模拟日期,每列一份合同,每“页”不同的模拟场景。
%计算此情景下盯市场价值。使用这里%逼近功能来提高性能。值= hcomputeMTMValues(互换,simulationDates,场景男高音);
创建所有掉期价格的演变特定场景的图。
I = 32;数字;情节(simulationDates,值(:,:,i))的;datetick;ylabel(“马克对市场价格”);标题(sprintf的(“沿着场景%d期现掉换价”, 一世));
积为模拟的每个方案的总投资组合的价值。随着时间向前每个场景移动,合同值向上或向下移动取决于如何建模的利率期限结构的变化。由于掉期越来越接近成熟,它们的值将开始接近零,因为所有剩余现金流的总价值将各自的现金流日期后下降。
随着时间的推移%查看投资组合价值数字;totalPortValues =挤压(总和(值2));情节(simulationDates,totalPortValues);标题(“总MTM投资组合价值为所有场景”);datetick('X','mmmyy')ylabel('投资组合价值($)')xlabel(“模拟日期”)
特定合同的曝光(一世)在时间Ť是最大的合同值(六)和0
:
而对于一个特定的交易对手的曝光仅仅是个人合同的曝光的总和:
在网协议的存在,然而,合同被聚集在一起,并且可以相互抵消。因此,所有合同中的净结算协议的总暴露是:
计算使用这些风险对整个资产组合以及各个交易对手在每个模拟日期creditexposures
功能。
Unnetted合同使用的是表示为NaN
在里面NettingID
向量。一个unnetted合同曝光等于它是否具有正值合同的市场价值,否则就是零。
包括在结算协议合同有自己的价值观聚集在一起,可以相互抵消。参见计算从盯市场合约价值的曝光更多细节引用。
[曝光,expcpty] = creditexposures(值,swaps.CounterpartyID,...'NettingID',swaps.NettingID);
剧情在我们的模拟每个方案的总投资组合的曝光。合同价值的情节一样,作为掉期成熟每种情形的风险将接近零。
%查看图集曝光率随着时间的推移数字;totalPortExposure =挤压(总和(曝光,2));情节(simulationDates,totalPortExposure);标题(图集曝光所有场景“);datetick('X','mmmyy')ylabel('曝光($)')xlabel(“模拟日期”)
分析银行的潜在未来暴露于对手时,一些曝光的配置文件是有用的。在这里,你可以计算每几个对手(不打折)曝光的配置文件,以及为整个投资组合。
PFE
(潜在的未来曝光):在任何特定的未来日期曝光的分布的高百分位数(95%)(也称为曝光峰值(PE))
MPFE
(最大潜在未来风险敞口):在所有日期的最大PFE
EE
在每个日期曝光的分布的平均值(平均)::(预期曝光)
EPE
(预期的积极曝光):在预期的暴露时间加权平均
EffEE
(有效预期曝光):在任何时间的最大预期曝光,Ť,或以前的时间
EffEPE
(有效预期正暴露量):有效曝光预期的加权平均
对于进一步的定义,例如参见参考文献巴塞尔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%)',“最大PFE”,'精通曝光(EE)','时间平均EE(EPE)',...'最大过去EE(EffEE)','时间平均EffEE(EffEPE)'})datetick('X','mmmyy')标题(图集曝光配置文件');ylabel('曝光($)')xlabel(“模拟日期”)
可视化曝光型材特定交易对手。
cpIdx =找到(expcpty == 5);数字;图(simulationDates,cpProfiles(cpIdx).PFE,...simulationDates,cpProfiles(cpIdx).MPFE *酮(numDates,1),...simulationDates,cpProfiles(cpIdx).EE,...simulationDates,cpProfiles(cpIdx).EPE *酮(numDates,1),...simulationDates,cpProfiles(cpIdx).EffEE,...simulationDates,cpProfiles(cpIdx).EffEPE *酮(numDates,1));传说({'PFE(95%)',“最大PFE”,'精通曝光(EE)','时间平均EE(EPE)',...'最大过去EE(EffEE)','时间平均EffEE(EffEPE)'})datetick('X','mmmyy','keeplimits')标题(的sprintf(“交易对方%d曝光配置文件”,cpIdx));ylabel('曝光($)')xlabel(“模拟日期”)
通过计算从每个模拟利率情景的折现因素折现预期风险。在给定的情况下给定的估值日的贴现因子是增量贴现因子从一个模拟日至下一个产品,与场景的利率路径一起。
%获得折扣每交易对手风险暴露,每个场景discExp =零(大小(曝光));对于I = 1:numScenarios discExp(:,:,1)= bsxfun(@倍,dfactors(:,i)中,曝光(:,:,i))的;结束%折现预期曝光discProfiles = exposureprofiles(simulationDates,discExp,...'ProfileSpec','EE');
画出预期折现用于暴露的总投资组合以及对每个对手。
%骨料贴现EE为每个对手成矩阵discEE = [discProfiles.EE];%投资组合贴现EE数字;情节(simulationDates,总和(discEE,2))datetick('X','mmmyy','keeplimits')标题(“折扣预期曝光投资组合”);ylabel('贴现曝光($)')xlabel(“模拟日期”)
%折扣对手EE数字;图(simulationDates,discEE)datetick('X','mmmyy','keeplimits')标题(“折扣预期曝光对于每个对手”);ylabel('贴现曝光($)')xlabel(“模拟日期”)
对于给定的交易对手的违约概率被对手的CDS目前市场的利差暗示。使用功能cdsbootstrap
生成默认的在每个模拟日期的累积概率。
%进口CDS市场信息对每个对手CDS = readtable(交换文件,'片',“CDS利差”);DISP(CDS);
日期CP1 CP2 CP3 CP4 CP5 _____________ ___ ___ ___ ___ ___ { '2008年3月20日'} 140 85 115 170 140 { '2009年3月20日'} 185 120 150 205 175 { '2010年3月20日'} 215170 195 245 210 { '二○一一年三月二十○日'} 275 215 240 285 265 { '2012/3/20'} 340 255 290 320 310
CDSDates = datenum(CDS.Date);CDSSpreads = table2array(CDS(:,2:结束));ZeroData = [RateSpec.EndDates RateSpec.Rates];%校准违约概率为每个对手DefProb =零(长度(simulationDates),尺寸(CDSSpreads,2));对于I = 1:尺寸(DefProb,2)probData = cdsbootstrap(ZeroData,[CDSDates CDSSpreads(:,i)的],...解决,'probDates',simulationDates);DefProb(:,1)= probData(:,2);结束默认为每个交易对手的累积概率的情节%。数字;图(simulationDates,DefProb)称号(“违约概率曲线的每个对手”);xlabel('日期');格上;ylabel(“累计概率”)datetick('X','mmmyy')ylabel(“违约概率”)xlabel(“模拟日期”)
的信用值(估价)调整(CVA)的公式是:
哪里[R
是恢复,discEE
在时间贴现预期曝光Ť和PD
默认的概率分布。这是假设曝光是独立的默认的(无错向风险),而且它也假定使用风险中性概率获得的风险。
用近似的有限和在估值日期为积分:
哪里T_1
是今天的日期,T_2
,...,Ť
_ñ未来估值日期。
假设CDS信息对应于与指数的对手cpIdx
。计算CVA是我们的信用风险暴露给对手的目前的市场价值cpIdx
。对于这个例子,在40%设置的回收率。
恢复= 0.4;CVA =(1-恢复)*和(discEE(2:端,:) * DIFF(DefProb));对于I = 1:numel(CVA)fprintf中('CVA交易对手%d = $%。2F \ N',I,CVA(I));结束
CVA交易对手1 = $ 2229.38 CVA交易对手2 = $ 2498.71 CVA交易对手3 = $ 918.96 CVA交易对手4 = $ 5521.83 CVA交易对手5 = $ 5883.77
数字;巴(CVA);标题('CVA为每个交易对手);xlabel(“对手”);ylabel('CVA $');格上;
Pykhtin,迈克尔和朱史蒂芬,指南模拟交易对手信用风险,GARP,7月/ 2007年8月,第37期,第16-22。
Pykhtin,迈克尔和丹·罗森,在贸易水平和CVA定价交易对手风险,2010。
巴塞尔II:https://www.bis.org/publ/bcbs128.pdf256页。