主要内容

交易对手信用风险和CVA

此示例显示如何计算持有香草利率组合的银行的单侧信用值(估值)调整(CVA),其中包括若干交易对手。CVA是由于交易对手违约而对柜台过度柜台合同或合同组合的预期损失。特定交易对手的CVA被定义为折扣预期曝光时的所有点的总和乘以对方默认在那一刻的概率,所有这些都乘以1减少恢复速率。CVA公式是:

C V 一个 1 - R 0 T d 年代 c E E t d P D t

在哪里R经济复苏,discEE折扣预期的预期曝光t,PD违约概率分布。

预期风险敞口的计算首先是模拟给定合同或投资组合的许多未来风险因素情景。风险因素可以是利率,如本例所示,但会根据投资组合而异,包括外汇汇率、股票或商品价格,或任何会影响合约市场价值的因素。一旦模拟了足够多的情景,合约或投资组合就可以在每个情景的一系列未来日期进行定价。结果是一个由契约值组成的矩阵或“立方体”。

这些价格在考虑到银行可能存在的担保协议和净额协议(如在本例中,几份合同的价值可能相互抵消,从而降低它们的总风险)后转换为风险敞口。

对每个情景的合约值进行折现以计算折现的风险敞口。然后,可以通过每个模拟日期的贴现敞口的简单平均值来计算贴现预期敞口。

最后,交易对手违约概率一般由信用违约互换(CDS)市场报价得出,交易对手的CVA可根据上述公式计算。假设交易对手违约独立于其风险敞口(没有错误风险)。

这个例子演示了一个香草利率掉期的投资组合,目标是计算特定交易对手的CVA。

读交换组合

随着时间的时间,掉掉的组合接近零值t0.每次掉期都与一个交易对手有关,可能包含在净额协议中,也可能不包含在净额协议中。

从电子表格中读取互换swapFile ='cva-swap-portfolio.xls'; 交换=可读(交换文件,'床单''交换投资组合');互换。LegType =[互换。LegType~swaps.LegType]; swaps.LegRate = [swaps.LegRateReceiving swaps.LegRatePaying]; swaps.LegReset = ones(size(swaps,1),1); numSwaps = size(swaps,1);

的交换参数的更多信息CounterpartyIDNettingID,请参阅creditexposures.的交换参数的更多信息主要的成熟LegTypeLegRateLatestFloatingRate时期,LegReset,请参阅swapbyzero

从利率曲线创建利率

settr = datenum(的14 - 12月- 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,...“利率”,毒品,“复合”复合,'基础'、基础);图;情节(ZeroDates ZeroRates,“啊——”);包含(“日期”);datetick (“keeplimits”);ylabel (“零率”);网格;标题('在结算日期的收益曲线');

图中包含一个轴对象。标题为Yield Curve at Settle Date的轴对象包含一个类型为line的对象。

设置可变的仿真参数

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

%蒙特卡罗模拟数量numscenarios = 1000;%计算每月的模拟日期,然后再计算季度的日期。0:12 simulationDates = datemnth(解决);simulationDates = [simulationDates datemnth(simulationDates(end),3:3:74)]';numDates =元素个数(simulationDates);

计算浮动重置日期

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

Floatdates = CFDATES(STATH-360,SWAPS.MATURY,SWAPSIOD);swaps.floatingresetdates = zeros(numswaps,numdates);i=数值:-1:1 thisDate=模拟日期(i);浮动日期(浮动日期>此日期)=0;掉期。浮动入息日期(:,i)=最大值(浮动日期,[],2);结束

建立Hull-White单因素模型

模拟价值合同的危险因素是零曲线。对于此示例,您可以使用单因素船体模型来模拟兴趣率术语结构。这是短速率的模型,被定义为:

d r θ. t - 一个 r d t + σ. d z

在哪里

  • d r :短期汇率在时间上发生微小变化后的变化, d t

  • 一个 :均值逆转率

  • σ. :短期利率的波动性

  • d z :Weiner进程(标准正常过程)

  • θ. t :漂移函数定义为:

θ. 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 ln 一个 t T + 1 T - t B t T r t

ln 一个 t T ln 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单因素模型校准的更多细节,请参见金融工具工具箱™用户指南中的示例。

alpha = 0.2;西格玛= 0.015;hw1 = hullwhite1f(ratespec,alpha,sigma);

模拟场景

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

%使用可重复随机数生成器(改变种子以产生%不同的随机场景)。prevRNG = rng (0,“旋风”);dt = diff (yearfrac(解决simulationDates 1));nPeriods =元素个数(dt);场景= hw1.simTermStructs (nPeriods,...“nTrials”numScenarios,...“deltaTime”, dt);%恢复随机数生成器状态rng(prevrng);通过每个已实现的利率计算贴现率%的场景。dfactors = 1 (numDates numScenarios);i = 2:numDates tenorDates = datemnth(simulationDates(i-1),Tenor);rateAtNextSimDate = interp1 (tenorDates挤压(场景(张,,,:)),...模拟(i),“线性”“extrap”);%compute d(t1,t2)dfactors(我)= zero2disc (rateAtNextSimDate,...repmat (simulationDates (i), 1 numScenarios), simulationDates(张),1,3);结束dfactors = cumprod (dfactors, 1);

检查一个场景

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

我= 20;图;surf(Tenor, simulationDates, scenario (:,:,i))轴紧的datetick (“y”“mmmyy”);包含(的男高音(个月));ylabel ('观察日期');zlabel (“利率”);甘氨胆酸ax =;斧子。VI.ew = [-49 32]; title(sprintf('情景%d产生曲线演进\ n',我));

图中包含一个轴对象。标题为Scenario 20 Yield Curve Evolution的axis对象包含一个类型为surface的对象。

计算按市价计算掉期价格

对于每一种情形,掉期投资组合都在每个未来模拟日期定价。价格是用价格近似函数计算的,Hswapapprox.. 在CVA应用中,由于蒙特卡罗模拟的性能要求,在合同定价时通常使用简化的近似函数。

由于模拟日期不对应于互换现金流日期(其中浮动利率被重置),估计最新的浮动利率与1年利率(所有互换的期限为1年)之间插值的最接近的模拟利率曲线。

然后将掉期价格聚合成一个值的“立方体”,其中包含每种情景的每个模拟日期的所有未来合约值。合同价格的立方体是一个三维矩阵,其中每一行代表一个模拟日期,每一列代表一个合同,每一“页”代表一个不同的模拟场景。

%计算此场景的所有按市价计算的值。使用一个此处%近似函数提高性能。值= hcomputemtmvalues(交换,模拟,方案,具体化);

检查情况下价格

为特定情景创建所有交换价格的演变情节。

我= 32;图;情节(simulationDates值(:,:,i));datetick;ylabel (“盯市价格”);标题(sprintf (“按照情景%d互换价格”,我));

图中包含一个轴对象。具有沿场景的标题交换价格的轴对象包含30个类型的类型。

可视化模拟投资组合价值

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

%随时间查看投资组合价值图;totalPortValues = squeeze(sum(values, 2));情节(simulationDates totalPortValues);标题(“所有场景的MTM投资组合总价值”);datetick (“x”“mmmyy”) ylabel ('投资组合价值($)')包含(“模拟日期”

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

对手对手计算曝光

个别合约的曝光()当时t合同值的最大值是最大值(VI.) 和0

E t 马克斯 V t 0

而特定交易对手的风险敞口只是单个合同风险敞口的总和:

E c p t E t 马克斯 V t 0

然而,在存在网络协议的情况下,合同聚合在一起,可以互相抵消。因此,所有合同在网络协议中的总曝光是:

E n 一个 t 马克斯 V t 0

计算整个投资组合以及每个交易对手在每个模拟日期的风险敞口creditexposures函数。

未联网合同用a表示在里面NettingID向量。未净合约的风险敞口,如果为正值,则等于该合约的市场价值,否则为零。

包括在净值协议中的合同的价值加在一起,可以相互抵消。有关按市价计算风险敞口的更多细节,请参阅参考资料。

[exposure, expcpty] =信用风险(价值,掉期。CounterpartyID,...“NettingID”, swaps.NettingID);

在我们的模拟中绘制每个场景的总投资组合风险。与合约价值图相似,随着互换到期,每种情况下的风险敞口将接近于零。

%随着时间的推移查看投资组合的风险敞口图;totalPortExposure =挤压(sum(敞口,2));情节(simulationDates totalPortExposure);标题('所有场景的投资组合曝光');datetick (“x”“mmmyy”) ylabel ('暴露($)')包含(“模拟日期”

图中包含一个轴对象。所有场景的标题产品组合曝光的轴对象包含1000个类型的类型。

曝光概况

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

  • pfizer(未来潜在暴露量):在未来某一特定日期暴露量分布的高百分位数(95%)(也称为峰值暴露量(PE))

  • MPFE(最大潜在未来暴露):所有日期的最大PFE

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

  • EPE(预期正照射量):预期照射量随时间的加权平均值

  • EffEE(有效预期暴露量):任何时候的最大预期暴露量,t,或以前的时间

  • EffEPE(有效预期正风险敞口):有效预期风险敞口的加权平均值

有关进一步的定义,请参见参考文献中的巴塞尔协议II文件。

计算全部投资组合风险portExposures =总和(曝光,2);每个交易对手和整个投资组合的%计算曝光概况cpProfiles = exposureprofiles (simulationDates,曝光);portProfiles = exposureprofiles (simulationDates portExposures);

首先是整个投资组合,然后是一个特定的交易对手。

%可视化投资组合曝光配置文件图;情节(simulationDates portProfiles。工业的...simulationDates portProfiles。MPFE *的(numDates, 1),...simulationDates portProfiles。情感表达,...simulationDates portProfiles。EPE *的(numDates, 1),...simulationDates portProfiles。EffEE,...simulationDates portProfiles。EffEPE *的(numDates, 1));传奇({'PFE(95%)'“马克斯pfizer”“Exp曝光(EE)”“Time-Avg EE (EPE)”...'Max past EE (EffEE)'“Time-Avg EffEE (EffEPE) '})DateTick(“x”“mmmyy”) 标题('投资组合曝光概况');ylabel ('暴露($)')包含(“模拟日期”

图中包含一个轴对象。标题为Portfolio Exposure Profiles的轴对象包含6个类型为line的对象。这些对象代表PFE(95%),最大PFE, Exp Exposure (EE), Time-Avg EE (EPE), Max past EE (EffEE), Time-Avg EffEE (EffEPE)。

可视化特定交易对手的曝光曲线。

cpIdx = find(expcpty == 5);图;情节(simulationDates cpProfiles (cpIdx)。工业的...simulationDates cpProfiles (cpIdx)。MPFE *的(numDates, 1),...simulationDates cpProfiles (cpIdx)。情感表达,...simulationDates cpProfiles (cpIdx)。EPE *的(numDates, 1),...模拟逻辑,cpprofiles(cpidx).Effee,...simulationDates cpProfiles (cpIdx)。EffEPE *的(numDates, 1));传奇({'PFE(95%)'“马克斯pfizer”“Exp曝光(EE)”“Time-Avg EE (EPE)”...'Max past EE (EffEE)'“Time-Avg EffEE (EffEPE) '})DateTick(“x”“mmmyy”“keeplimits”)标题(sprintf ('对手Party%D曝光概况',cpidx));ylabel ('暴露($)')包含(“模拟日期”

图中包含一个轴对象。标题为“交易对手5曝光配置文件”的轴对象包含6个类型为line的对象。这些对象代表PFE(95%),最大PFE, Exp Exposure (EE), Time-Avg EE (EPE), Max past EE (EffEE), Time-Avg EffEE (EffEPE)。

贴现风险敞口

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

%针对每个场景,获得每个交易对手的贴现风险敞口Discexp =零(尺寸(曝光));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 (的贴现风险敞口(美元))包含(“模拟日期”

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

每一方违约概率曲线的校准

给定交易对手的违约概率是由该交易对手CDS的当前市场价差所暗示的。使用的函数cdsbootstrap.以生成每个模拟日期的累积违约概率。

%每个交易对手的进口CDS市场信息cd = 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:结束));(RateSpec ZeroData =。EndD一个te年代R一个teSpec.Rates];校准每个交易对手的违约概率defprobb = 0 (length(simulationDates), size(CDSSpreads,2)); / /模拟日期i = 1:size(defprobb,2) probData = cdsbootstrap(ZeroData, [CDSDates CDSSpreads(:,i)],...解决,“probDates”,模拟函数);defprob(:,i)= probdata(:,2);结束%每个交易对手的累积违约概率图。图;plot(模拟,defprob)标题(“每个交易对手的违约概率曲线”);包含(“日期”);网格;ylabel (“累积概率”) datetick (“x”“mmmyy”) ylabel (违约概率的)包含(“模拟日期”

图中包含一个Axis对象。每个交易对手的标题默认概率曲线Axis对象包含5个line类型的对象。

CVA的计算

信用价值(估值)调整(CVA)公式是:

C V 一个 1 - R 0 T d 年代 c E E t d P D t

在哪里R经济复苏,discEE折扣预期的预期曝光t,PD违约概率分布。这假设敞口独立于违约(没有错误方向的风险),并且还假设敞口是使用风险中性概率获得的。

在估值日期中近似于有限和有限的组成:

C V 一个 一个 p p r o x 1 - R 2 n d 年代 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-Recovery) * sum(discEE(2:end,:) .* diff(DefProb)); / /恢复i = 1:numel(cva)fprintf('CVA用于对手Party%d = $%。2f \ n',我,脑血管意外(i));结束
交易对手1的CVA = $2229.38,交易对手2的CVA = $2498.71,交易对手3的CVA = $918.96,交易对手4的CVA = $5521.83,交易对手5的CVA = $5883.77
图;酒吧(CVA);标题('每个交易对手的CVA');包含('交易对手');ylabel (“CVA的美元”);网格

图中包含一个轴对象。每个对手的标题为CVA的axes对象包含一个bar类型的对象。

工具书类

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

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

  3. 新巴塞尔协议:https://www.bis.org/publ/bcbs128.pdf256页。

另请参阅

|||

相关的例子

更多关于

外部网站