此示例显示如何计算持有香草利率组合的银行的单侧信用值(估值)调整(CVA),其中包括若干交易对手。CVA是由于交易对手违约而对柜台过度柜台合同或合同组合的预期损失。特定交易对手的CVA被定义为折扣预期曝光时的所有点的总和乘以对方默认在那一刻的概率,所有这些都乘以1减少恢复速率。CVA公式是:
在哪里R.
是恢复,dis
折扣预期的预期曝光T., 和PD.
默认概率分布。
通过首先模拟给定合同或投资组合的许多风险因素的未来情景来计算预期的曝光。危险因素可以是利率,如本例所示,但基于投资组合会有所不同,并且可以包括外汇税率,股票或商品价格,或者任何将影响合同市场价值的任何东西。一旦模拟了足够的情景,合同或投资组合可以在每种情况下都有一系列未来日期。结果是合同值的矩阵或“立方体”。
在考虑到银行可能已经到位的抵押协议之后,这些价格被转换为暴露,如本例所示,若干合同价值可能相互抵消,降低其总曝光率。
每种方案的合同值都会折扣以计算折扣曝光。然后可以通过每个模拟日期的折扣曝光的简单平均值来计算折扣预期的预期曝光。
最后,对手Party默认概率通常来自信用违约交换(CDS)市场报价,并且可以根据上述公式计算对方的CVA。假设交易对手默认与其曝光(没有错误的风险)无关。
此示例演示了Vanilla兴趣率掉的组合,其目标是计算特定对手的CVA。
随着时间的时间,掉掉的组合接近零值T.=0.
。每个交换都与交易对手相关联,可能或可能不包括在网状协议中。
从电子表格中读取互换swapfile ='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.
, 看creditexposures.
。有关交换参数的更多信息主要的
那到期
那legtype.
那封尾
那RoplyFloatingRate.
那时期
, 和legrees.
, 看swapbyzero.
。
settr = datenum('14 -dec-2007');tenor = [3 6 12 5 * 12 7 * 12 10 * 12 20 * 12 30 * 12]';Zerorates = [0.033 0.034 0.035 0.042 0.044 0.048 0.047''Zerodates = Dememnth(定居,男高音);复合= 2;基础= 0;ratespec = intenvset('startdates', 定居,'enddates',Zerodates,......'费率',毒品,“复合”,复合,'基础',基础);数字;图(Zerodates,Zerorates,'O-');Xlabel('日期');dateTick('keeplimits');ylabel('零利率');网格在;标题('在结算日期的收益曲线');
您可以改变您生成的模拟利率方案的数量。此示例设置首先更频繁的模拟日期,然后将来更少地频繁。
%蒙特卡罗模拟数量numscenarios = 1000;%计算每月仿真日期,然后稍后每季度日期。模拟次数= DATEMNTH(定居,0:12);仿真= [模拟DAYNEMTH(模拟(ENDUSIONDATES(END),3:3:74)]';numdates = numel(仿真);
对于每个模拟日期,计算每个交换的先前浮动重置日期。
Floatdates = CFDATES(STATH-360,SWAPS.MATURY,SWAPSIOD);swaps.floatingresetdates = zeros(numswaps,numdates);为了i = numdates:-1:1 thisdate =仿真程序(i);Floatdates(Floatdates> Thisdate)= 0;swaps.floatingresetdates(:,i)= max(floatdates,[],2);结尾
模拟价值合同的危险因素是零曲线。对于此示例,您可以使用单因素船体模型来模拟兴趣率术语结构。这是短速率的模型,被定义为:
在哪里
:在较小的时间变化后,在短速度变化,
:均值逆转率
:短率的波动
:Weiner进程(标准正常过程)
:Drive功能定义为:
:时间上的瞬时远期速率
:部分衍生 关于时间
模拟短速率的路径后,使用公式在每个模拟日期生成完整的产量曲线:
:时间零率 一段时间
:时间零优惠券的价格 这是一美元的时间
每种情况都包含通过时间前进的全职结构,在每个所选模拟日期中建模。
参考使用市场数据校准船体模型有关Hull-White单因素模型校准的更多详细信息,请在“金融仪器”工具箱“™用户指南中。
alpha = 0.2;西格玛= 0.015;hw1 = hullwhite1f(ratespec,alpha,sigma);
对于每个场景,使用赫尔-怀特单因素利率模型模拟每个估值日期的未来利率曲线。
%使用可重复的随机数发生器(改变种子生产%不同的随机场景)。prevrng = rng(0,'twister');dt = diff(verfrac(sollar,sumingdates,1));nperiods = numel(dt);场景= hw1.simtermstructs(nperiods,......'ntrial',numscenarios,......'deltatime',dt);%恢复随机数发生器状态rng(prevrng);%通过每个实现的利率计算折扣因素% 设想。Dfortors = ONE(NUMDATES,NUMSCENARIOS);为了i = 2:Numdates Tenordates = DateMnth(模拟(I-1),男高音);RateAtNextSimdate = Interp1(TenOrdates,Squeeze(方案(I-1,:,:)),......模拟(i),'线性'那'extrap');%compute d(t1,t2)Dfortors(i,:) = Zero2Disc(RateatNextSimdate,......Repmat(模拟(I),1,NumScenarios),模拟(I-1), - 1,3);结尾Dfortors = Cumprod(DFortors,1);
为特定场景创建一个屈服曲线演进的表面曲线。
我= 20;数字;冲浪(男高音,仿真,方案(:,:,i)轴紧的dateTick('是'那'mmmyy');Xlabel('男高音(月)');ylabel('观察日期');Zlabel('费率');斧头= GCA;ax.view = [-49 32];标题(Sprintf('情景%d产生曲线演进\ n',一世));
对于每个场景,交换产品组合在每个未来的模拟日期中定价。使用价格近似函数计算价格,Hswapapprox.
。由于这些蒙特卡罗模拟的性能要求,在定价合同时,在CVA应用中使用简化的近似函数。
由于模拟日期与掉掉掉期的日期不对应于互换日期(重置浮动率)估计最新的浮动速率,其中1年速率(所有次次次数都有1年)在最近的模拟速率曲线之间插值。
然后,交换价格被聚合成一个值的“立方体”,其中包含每个场景的每个模拟日期的所有未来合同值。由于合同价格的结果是一个三维矩阵,其中每行代表仿真日期,每列是一个合同,以及每个“页面”一个不同的模拟场景。
%计算此方案的所有标记到市场值。用A.此处%近似函数提高性能。值= hcomputemtmvalues(交换,模拟,方案,具体化);
为特定情景创建所有交换价格的演变情节。
我= 32;数字;绘图(模拟,值(:,:,i));dateTick;ylabel('标志上市价格');标题(Sprintf('沿情景%d'的交换价格, 一世));
绘制模拟的每种场景的总产品组合值。随着每个场景在时间上向前移动时,合同的值取决于所建模的兴趣术语结构如何变化的方式向上或向下移动。随着互换更接近到期时,它们的值将开始接近零,因为所有剩余现金流量的总值将在每次现金流日期后减少。
%查看投资组合值随时间数字;TotalPortValues =挤压(总和(值,2));绘图(模拟,TotorPortValues);标题('所有方案的总MTM投资组合价值');dateTick('X'那'mmmyy')ylabel('投资组合价值($)')Xlabel('模拟日期')
特定合同的曝光(一世)在时间T.合同值的最大值是最大值(VI.) 和0.
:
特定交易对手的曝光只是个人合同曝光的总和:
然而,在存在网络协议的情况下,合同聚合在一起,可以互相抵消。因此,所有合同在网络协议中的总曝光是:
使用每个模拟日期计算整个投资组合的这些曝光以及每个仿真日期的每个交易对象creditexposures.
功能。
未呼吸的合同使用a表示南
在里面Nettingid.
向量。未入住合同的曝光等于合同的市场价值,如果它具有正值,否则为零。
纳税协议中包含的合同将其值汇总在一起,可以互相抵消。有关从标记到市场合同值计算曝光的更多详细信息,请参阅参考文献。
[曝光,expcpty] = Creditexposures(值,Swaps.counterPartyid,......“NettingID”,swaps.nettingid);
绘制我们模拟中每个场景的总投资组合曝光。类似于合同值的曲线,每个场景的曝光将作为次次成熟的零接近零。
%查看投资组合曝光随着时间的推移数字;totalportexposure =挤压(总和(暴露,2));绘图(模拟逻辑,TotalPollepposure);标题('所有场景的投资组合曝光');dateTick('X'那'mmmyy')ylabel('暴露($)')Xlabel('模拟日期')
在分析银行的潜在未来曝光到对方时,若干曝光概况很有用。在这里,您可以计算多个(非折扣)曝光配置文件,以及整个投资组合。
PFE.
(潜在的未来曝光):任何特定未来日期的曝光率的高百分位数(95%)(也称为峰曝光(PE))
MPFE.
(最大潜在的未来曝光):所有日期的最高PFE
EE.
:(预期曝光):每个日期的曝光分布的平均值(平均值)
epe.
(预期的正曝光):预期暴露的加权平均随时间
eveee.
(有效预期曝光):随时最高预期曝光,T.,或以前的时间
effepe.
(有效预期的积极曝光):有效预期暴露的加权平均值
有关进一步的定义,请参阅例如参考文献中的Basel II文件。
%计算整个投资组合曝光portexposures = sum(曝光,2);每个交易对手和整个投资组合的%计算曝光概况cpprofiles = exposureprofiles(模拟,曝光);portprofiles = exposureprofiles(模拟,portexposures);
可视化曝光配置文件,首先用于整个投资组合,然后针对特定的对手。
%可视化投资组合曝光配置文件数字;绘图(模拟逻辑,portprofiles.pfe,......模拟逻辑,portprofiles.mpfe *那些(Numdates,1),......模拟逻辑,portprofiles.ee,......模拟逻辑,portprofiles.epe *那些(Numdates,1),......模拟逻辑,portprofiles.Effee,......模拟逻辑,portprofiles.effepe *那些(numdates,1));传奇({'PFE(95%)'那'max pfe'那'EXP曝光(EE)'那'time-avg ee(EPE)'那......'最大过去(effee)'那'time-avg effee(effepe)'})DateTick('X'那'mmmyy') 标题('投资组合曝光概况');ylabel('暴露($)')Xlabel('模拟日期')
可视化特定交易对手的曝光曲线。
cpidx =查找(Expcpty == 5);数字;绘图(模拟逻辑,CPProfiles(CPIDX).pfe,......模拟逻辑,cpprofiles(cpidx).mpfe * of(numdates,1),......模拟逻辑,cpprofiles(cpidx).ee,......模拟逻辑,cpprofiles(cpidx).epe * ope * ope * ope(numdates,1),......模拟逻辑,cpprofiles(cpidx).Effee,......模拟逻辑,cpprofiles(cpidx).Effepe * off(numdates,1));传奇({'PFE(95%)'那'max pfe'那'EXP曝光(EE)'那'time-avg ee(EPE)'那......'最大过去(effee)'那'time-avg effee(effepe)'})DateTick('X'那'mmmyy'那'keeplimits')标题(Sprintf('对手Party%D曝光概况',cpidx));ylabel('暴露($)')Xlabel('模拟日期')
使用每个模拟利率场景的贴现因子计算贴现预期风险敞口。给定场景中给定估值日期的贴现因子是从一个模拟日期到下一个模拟日期的增量贴现因子的乘积,以及该场景的利率路径。
每个场景,%按对方获得折扣曝光Discexp =零(尺寸(曝光));为了i = 1:numscenarios iscexp(:,i)= bsxfun(@次,dfortors(:,i),曝光(:,:,i));结尾%折扣预期曝光discprofiles = exposureprofiles(模拟,Discexp,......'profilespec'那'ee');
绘制总投资组合以及每个交易对象的折扣预期风险。
%将每个交易对手汇总为矩阵的贴现eediscee = [discprofiles.ee];%投资组合折扣ee数字;绘图(模拟,和(Discee,2))DateTick('X'那'mmmyy'那'keeplimits') 标题('投资组合的折扣预计曝光');ylabel('折扣曝光($)')Xlabel('模拟日期')
%交易对齐折扣ee数字;plot(模拟逻辑,侦探)DateTick('X'那'mmmyy'那'keeplimits') 标题('每个交易对手的折扣预计曝光');ylabel('折扣曝光($)')Xlabel('模拟日期')
特定交易对手的默认概率是由对方的CD的当前市场传播暗示。使用功能cdsbootstrap.
在每个模拟日期生成默认默认概率。
为每一交易对手进口CDS市场信息cds = readtable(swapfile,'床单'那'CDS蔓延');DISP(CDS);
日期cp1 cp2 cp3 cp4 cp5 cp5 ____________________ ___ ___ {'3/20/2008'} 140 85 115 170 140 {'3/20/2009'} 185 120 150 205 145 {'3/20/2010'} 215170 195 245 210 {'3/20/2011'} 275 215 240 285 265 215 285 265 215 285 265 265 285 285 285 255 285 265 285 215 285 265 255 230 310 310 310 310 310
CDSDATES = DATENUM(CDS.DATE);cdsspreads = table2Array(CDS(:,2:结束));zerodata = [ratespec.enddates ratespec.rates];%校准每个交易对手的默认概率defprob = zeros(长度(仿真),大小(Cdsspreads,2));为了i = 1:size(defprob,2)probdata = cdsbootstrap(zerodata,[cdsdates cdsspreads(:,i)],......定居,'probdates',模拟函数);defprob(:,i)= probdata(:,2);结尾每个交易对手的违约概率的%曲线曲线。数字;plot(模拟,defprob)标题('每个交易对象的默认概率曲线');Xlabel('日期');网格在;ylabel('累积概率')DateTick('X'那'mmmyy')ylabel('默认概率')Xlabel('模拟日期')
信用价值(估值)调整(CVA)公式是:
在哪里R.
是恢复,dis
折扣预期的预期曝光T., 和PD.
默认概率分布。这假设曝光独立于默认(无错误风险),并且还假设使用风险中立概率获得曝光。
在估值日期中近似于有限和有限的组成:
在哪里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用于对手Party%d = $%。2f \ n',我,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,Michael和Steven朱,建模对手信用风险的指南,Garp,2007年7月/ 8月,第37期,第16-22页。
Pykhtin, Michael和Dan Rosen,在贸易水平和CVA上定价交易对手风险,2010年。
巴塞尔二世:https://www.bis.org/publ/bbs128.pdf.第256页。
cdsbootstrap.
|cdsprice.
|CDSRPV01
|CDSSPREAD.