此示例显示如何使用学生的T copula和极值理论(EVT)使用Monte Carlo仿真技术来模拟假设的全球股权指数产品组合的市场风险。该方法首先用不对称的加粗模型从每个返回序列中提取滤波的残差,然后使用用于内部的高斯核估计和估计的高斯核估计来构造每个资产的样本边缘累积分布函数(CDF)。上部和下尾。然后将学生的T copula适合数据,并用于诱导每个资产的模拟残差之间的相关性。最后,模拟评估了一个月地平线上假设的全球股权投资组合的价值(var)。
请注意,这是一个相对高级的综合示例,假设一些熟悉EVT和Copulas。有关估计广义帕吻发行分布和Copula模拟的详细信息,请参阅尾部数据的广义Pareto分布建模和用copula模拟相关随机变量在统计和机器学习工具箱™。有关本示例大部分所基于的方法的详细信息,请参见[5]和[6])。
原始数据由跨越交易日期27-九九393年至2003年7月14日至7月14日至2003年的以下代表性股票指数的日常收盘价值2665年的日常闭幕价值观。
加拿大:TSX综合(Ticker ^ GSPTSE)法国:CAC 40(Ticker ^ Fchi)德国:DAX(Ticker ^ Gdaxi)日本:Nikkei 225(Ticker ^ N225)UK:FTSE 100(Ticker ^ FTSE)US:标准普尔500指数(Ticker^ GSPC)
加载Data_GlobalIdx1%每日进口指数收盘
以下绘图说明了每个索引的相对价格运动。每个索引的初始水平已被标准化为Unity,以便于比较相对性能,并且没有明确考虑股息调整。
figure plot(date, ret2price(price2ret(Data))) datetick('X')Xlabel('日期')ylabel('指数值')标题(“相对每日指数收盘”)传说(系列,'地点'那“西北”)
在准备后续建模中,将每个索引的闭合电平转换为每日对数返回(有时称为几何或连续复合,返回)。
返回= price2ret(数据);%对数返回t =大小(返回,1);% #的回报(即,历史样本大小)
由于整体建模方法中的第一步涉及加入滤池和极值理论的重复应用,以表征每个股权指数返回系列的分布,从而有助于检查特定国家的细节。您可以将下一行代码更改为SET {1,2,3,4,5,6}中的任何整数,以检查任何索引的详细信息。
指数= 1;%1 =加拿大,2 =法国,3 =德国,4 =日本,5 =英国,6 =美国图绘图(日期(2:结束),返回(:,索引))datetick('X')Xlabel('日期')ylabel('返回')标题(“每日对数收益”)
使用GPD建模分布的尾部需要观察到大致独立和相同分布(即i.d.)。然而,大多数金融回报系列表现出一定程度的自相关,更重要的是,异源性瘢痕状况。
例如,与所选指数相关的回报的样本自相关函数(ACF)显示出一些轻微的序列相关性。
figure autocorr(返回(:,索引))标题('返回的样本ACF')
然而,平方返回的样本ACF示出了方差的持久程度,并且意味着GARCH建模可以显着地条件在随后的尾估计过程中使用的数据。
图AutoCorR(返回(:,索引)。^ 2)标题(“平方回报的样本ACF”)
生产一系列I.I.D.观察,适合一阶自回归模型到每个股权指数的回报的条件均值
条件方差的非对称GARCH模型
一阶自回归模型对自相关进行补偿,GARCH模型对异方差进行补偿。特别地,最后一项通过布尔指标将不对称(杠杆)纳入到方差中,如果先验模型残差为负,则取值1,否则取0(见图)[3])。
此外,每个指数的标准化残差被建模为标准化的学生的T分布,以补偿通常与股权回报相关的脂肪尾。那是
以下代码段从每个股权索引的返回中提取过滤的残差和条件差异。
模型= arima ('AR'南,“分布”那'T'那“方差”gjr (1,1));nIndices =大小(数据,2);%数量索引残差= NaN(T,Nindices);% preallocate存储方差= NaN(T, nIndices);适合=细胞(nIndices, 1);选择= optimoptions (@fmincon,“显示”那“关闭”那...“诊断”那“关闭”那“算法”那“sqp”那'tolcon'1 e);为了i = 1:nindices fit {i} =估计(模型,返回(:,i),“显示”那“关闭”那“选项”、选择);(残差(:,i)、方差(:,我)]=推断(适合{我},返回(:,我));结尾
对于所选索引,比较模型残差和从原始返回滤除的相应条件标准偏差。下图清楚地说明了过滤残留物中存在的挥发性(异源性瘢痕度)的变化。
图subplot(2,1,1) plot(date (2:end), residuals(:,index)) datetick('X')Xlabel('日期')ylabel('剩余的')标题(过滤后的残差的) subplot(2,1,2) plot(date (2:end), sqrt(variance (:,index))) datetick('X')Xlabel('日期')ylabel(“波动”)标题(“过滤条件标准偏差”)
从每个收益序列中过滤出模型残差后,用相应的条件标准差对残差进行标准化。这些标准化残差代表潜在的零均值、单位方差、i.i.d.系列,样本CDF尾的EVT估计是基于这些系列。
残差=残差./ sqrt(variances);
要结束本节,请检查标准化残留和平方标准化残留的ACF。
将标准化残差的ACF与原始回报的相应ACF进行比较显示标准化残差现在大约是I.I.D。因此,远远超过后续尾估计。
figure autocorr(残差(:,索引))标题(“标准化残差的样本ACF”)图autocorr(residuals(:,index).^2)'平方标准化残差的样本ACF')
鉴于标准化,i.i.d.从上一步中的残差,用高斯内核估计每个索引的经验CDF。这使CDF估计平滑,消除了无缝样品CDF的楼梯模式。尽管非参数核CDF估计非常适合于发现大多数数据的分布的内部,但是当施加到上部和下尾时,它们往往会表现不佳。为了更好地估计分配的尾部,将EVT应用于每个尾部的那些残留物。
具体地,找到上部和下阈值,使得10%的残留物被保留为每个尾部。然后根据最大可能性,适合每个尾部中的那些极端残留的那些极端残留物的差异超过参数GPD。这种方法通常被称为超过数点的分布要么峰值超过阈值方法。
给定每个尾部的超越,优化负对数似然函数来估计GPD的尾部指数(zeta)和尺度(beta)参数。
以下代码段创建类型的对象paretotails
,每个索引返回系列的一个这样的对象。这些Paretotails对象封装了参数GP下尾,非参数核 - 平滑内部和参数GP上部尾部的估计,以构建每个索引的复合半导体CDF。
得到的分段分配对象允许在CDF的内部内插值和每个尾部的外推(函数评估)。外推是非常理想的,允许估计历史记录之外的量级,并且对于风险管理应用是无价的。
此外,Pareto tail对象还提供了计算CDF和反CDF(分位数函数)的方法,以及查询分段分布各分段之间边界的累积概率和分位数的方法。
nPoints = 200;CDF每个区域的抽样点% #tailfraction = 0.1;%分配给每个尾部的残差的小数部分尾巴=细胞(nIndices, 1);Pareto尾部物体的%单元阵列为了i = 1:nindices tails {i} = paretotails(残留物(:,i),taymfraction,1 - tay tay tay,“内核”);结尾
估计复合半导体经验CDF的三个不同区域,图形地连接并显示结果。同样,注意,在红色和蓝色中显示下尾部和上部尾部区域适用于外推,而黑色的内核平滑内部是适合插值。
下面的代码调用Pareto尾部的CDF和逆CDF方法,其感兴趣的对象与拟合基于的数据以外的数据。具体地,参考方法可以访问拟合状态,现在调用以选择和分析概率曲线的特定区域,充当强大的数据过滤机制。
图持有在网格在minprobability = cdf(tails {index},(min(残差(:,索引))))));maxprobability = cdf(tails {index},(max(残差(indems(:,索引))))));plowertail = linspace(minprobability,taymfraction,npoints);%样本下尾Puppertail = Linspace(1 - Taymfraction,MaxProbability,NPoints);%样品上尾pInterior = linspace(tailFraction, 1 - tailFraction, nPoints);%样品内部情节(icdf(反面{指数},pLowerTail) pLowerTail,'红色的'那“线宽”,2)情节(ICDF(尾部{指数},Pinterior),Pinterior,“黑”那“线宽”,2)情节(ICDF(尾{index},puppertail),puppertail,“蓝”那“线宽”,2)xlabel(标准化的剩余的)ylabel(“概率”)标题('经验CDF')({传奇“帕累托低尾”内核内部平滑的...'帕累托上尾'},'地点'那“西北”)
虽然前面的图表说明了复合CDF,但更详细地检查GPD适合性是有指导意义的。
GP分布的CDF参数化为
对于超标(y),尾索引参数(zeta)和比例参数(beta)。
为了视觉评估GPD拟合,将残留物的上尾超标的经验CDF与GPD装配的CDF绘制。虽然仅使用了10%的标准化残留物,但拟合的分布密切相关,因此GPD模型似乎是一个不错的选择。
figure [P,Q] = boundary(tails{index});%累积概率和边界的分位数y = sort(residuals(:,index) > Q(2), index) - Q(2));%排序超标情节(y) (cdf(反面{指数},y + Q (2)) - P (2)) / P (1)) (F (x) = ecdf (y);%经验提供抓住在楼梯(x,f,'r'网格)在传奇(“拟合广义Pareto CDF”那'经验CDF'那'地点'那'东南');Xlabel(“超过数”)ylabel(“概率”)标题('标准化残留的上尾')
给定标准化残差,现在估计标量自由度参数(DoF)和线性相关矩阵(R)的t copula使用copulafit
函数可在统计和机器学习工具箱中找到。的copulafit
函数允许用户通过两种不同的方法估计t copula的参数。
默认方法是在两步过程中执行的正式最大似然方法。
具体来说,虽然完全对数似然可以直接最大化,但在多维空间中目标函数的最大值往往出现在长、平、窄的谷中,在高维空间中可能会出现收敛困难。为了规避这些困难,copulafit
执行两个步骤的最大似然估计(MLE)。给定线性相关矩阵最大化内部步骤,以便自由度的固定值,最大化对线性相关矩阵的日志似然。该条件最大化被放置在相对于自由度的1-D最大化范围内,从而通过所有参数最大化对数似然性。在该外部步骤中最大化的功能被称为自由度的轮廓日志似然。
相反,以下代码段使用替代方法,该替代方案近似于用于大样本大小的自由度参数的程度的轮廓对数似然性。虽然这种方法通常比MLE更快,但它应该谨慎使用,因为估计和置信度限制可能不是准确的小或中等样本尺寸。
具体地,假设自由度是固定常数,通过区分对数似然函数来导出的近似值来导出。然后迭代地解决所得到的非线性方程,用于相关矩阵。反过来,这种迭代嵌套在另一个优化中以估计自由度。该方法的精神与上面的简档日志似然方法类似,但是不是真正的MLE,因为相关矩阵不会收敛到给定程度的自由度的条件MLE。但是,对于大型样本尺寸,估计通常非常靠近MLE(见[1]和[7])。
另一个方法通过首先计算样本秩相关矩阵(Kendall的Tau或Spearman的Rho)来估计线性相关矩阵,然后将秩相关与具有稳健的正弦变换的线性相关性转换。鉴于线性相关矩阵的这种估计,然后单独地相对于自由度参数的程度最大化对数似然函数。这种方法也似乎是通过轮廓对数似然方法的动力,但根本不是MLE方法。然而,该方法不需要矩阵反转,因此在近距离相关矩阵存在下具有数值稳定的优点(参见[8])。
最后,Nystrom和Skoglund[6]建议将自由度参数保留为用户指定的仿真输入,从而允许用户主观地诱导资产之间的尾部依赖程度。特别是,他们建议一个相对较低的自由度,在1到2之间,这样就可以更仔细地检查关节极端的可能性。这种方法对压力测试是有用的,其中极端相互依赖的程度是至关重要的。
下面的代码段首先将标准化的残差转换为均匀变体通过上面导出的半参数验证CDF,然后将T copula符合转换数据。当通过每个边距的经验CDF转换均匀变体时,校准方法通常称为规范最大可能性(CML)。
U =零(尺寸(残差));为了i = 1: nIndices U (:, i) = cdf(反面{我},残差(:,我));%变成制服边距结尾[r,dof] = copulafit('T'U“方法”那'近似值');%适合联系符
鉴于T copula的参数,现在通过首先模拟相应的依赖标准化残差来模拟共同相关的股权指数返回。
要做到这一点,首先使用copularnd.
函数可在统计和机器学习工具箱中找到。
然后,通过外推到GP尾部,插值到光滑的内部,通过对各指标的半参数边际CDF的反演,将均匀变量转化为标准化残差。这产生了模拟的标准化残差,与上面AR(1) + GJR(1,1)滤波过程中得到的残差一致。这些残差在时间上是独立的但在任何时间点上都是相关的。当孤立地观察时,模拟的标准化残差数组的每一列代表一个i.i.d.单变量随机过程,而每一行共享由copula引起的秩相关。
以下代码段模拟了在一个月内22个交易日内独立的标准化指数残差的2000个随机试验。
s = RandStream.getGlobalStream ();reset(s) nTrials = 2000;% #的独立随机试验地平线= 22;%var预测地平线Z = 0 (horizon, nTrials, nIndices);%标准化残差数组U = copularnd ('T', R, DoF, horizon * nTrials);%t copula模拟为了j = 1:nindices z(:,:,j)= Rehape(ICDF(尾部{J},U(:,j)),地平线,ntrials);结尾
使用模拟的标准化残差作为i.i.d.输入噪声过程,通过OuthoMetrics Toolbox™重新引入在原始索引中观察到的自相关和异源性瘢痕度过滤器
功能。
请注意,过滤器
接受用户指定的标准化干扰从Copula派生,并一次模拟单个索引模型的多个路径,这意味着在连续中模拟并存储所有样本路径并为每个索引存储。
要充分利用当前信息,请指定必要的前样例模型残差、方差和返回值,以便每个模拟路径从一个共同的初始状态演化。
Y0 =回报(结束:);% presample回报z0 =残差(结束,:);%预先标准化残差V0 =方差(结束:);% presample方差simulatedReturns = 0 (horizon, nTrials, nIndices);为了i = 1: nIndices simulatedReturns (:,:, i) =过滤器(适合{我},Z(:,:我),...“Y0”, Y0(我),“Z0”Z0(我),“半”V0 (i));结尾
现在重塑模拟的返回数组,使每个页面表示一个多变量返回序列的一次尝试,而不是一个单变量返回序列的多次尝试。
simulatedReturns = permute(simulatedReturns, [1 3 2]);
最后,鉴于每个索引的模拟返回,形成由各个指标组成的同样加权的全局索引组合(全球名称指数的全局索引)。由于我们正在使用每日对数回报,因此风险地平线上的累积回报只是每个中间期间的返回的总和。另请注意,在整个风险地平线上固定产品重量,并且模拟忽略了重新平衡组合所需的任何交易成本(每日再平衡过程被认为是自筹资金)。
请注意,尽管模拟收益是对数的(连续复合的),投资组合的收益序列是通过首先将单个对数收益转换为算术收益(价格变化除以初始价格),然后加权单个算术收益来获得投资组合的算术收益,最后转换回投资组合的对数回报。对于日数据和短期VaR范围,重复转换的差异很小,但对于较长的时间周期,差异可能是显著的。
cumulativereturns =零(ntrials,1);权重= repmat(1 / nindices,nindices,1);等加权投资组合为了i = 1:ntrials cumulativereturns(i)= sum(log(exp(simulatedreturns(simulatedreturns(:,i)) - 1)*权重)));结尾
在模拟每个索引的回报并形成全球投资组合,报告最大的增益和损失,以及在一个月风险范围内的各种置信水平的var。此外,绘制全球投资组合的经验CDF。
VaR = 100 *分位数(累计收益率,[0.10 0.05 0.01]');disp (' ')流('最大模拟损失:%8.4f%s \ n',-100 * min(cumulativereturns),“%”)流('最大模拟增益:%8.4f%s \ n \ n',100 * max(cumulativereturns),“%”)流('模拟90 %% var:%8.4f%s \ n',var(1),“%”)流('模拟95 %% var:%8.4f%s \ n',var(2),“%”)流('模拟99 %% var:%8.4f%s \ n',var(3),“%”) figure h = cdfplot(累计返回);h.Color ='红色的';Xlabel(“对数回归”)ylabel(“概率”)标题(“模拟一个月全球投资组合回报CDF”)
最大模拟损失:14.4162%最大模拟增益:12.4510%模拟90%var:-4.7456%模拟95%var:-6.3244%模拟99%var:-10.6542%
[1]Bouye,E.,V.Durrleman,A.Nikeghbali,G. Riboulet和Roncalli,T.“金融Copulas:阅读指南和一些应用。”Rech Groupe de。运作。,Credit Lyonnais,Paris,2000。
[2]Cormechts,P.,A. McNeil和D. Straumann。“风险管理中的相关性和依赖性:性质和陷阱”。风险管理:风险中的价值和超越.剑桥:剑桥大学出版社,1999,第176-223页。
[3]格洛斯滕,L. R., R. Jagannathan和D. E. Runkle。“关于期望值与股票名义超额收益波动的关系”。金融杂志.第48卷,第5期,1993年,1779-1801页。
[4]麦克尼尔,A.和R.Frey。“异源金融时间序列尾尾风险措施的估计:极值方法。”实证金融学杂志.2000年第7卷,第271-300页。
[5]Nystrom, K.和J. Skoglund。“单变量极值理论,加汤和风险衡量标准。”预印文,提交了2002年。
[6]Nystrom, K.和J. Skoglund。“基于场景的风险管理框架”。预印文,提交了2002年。
[7]Roncalli, T., A. Durrleman和A. Nikeghbali。“哪个Copula是正确的?”Rech Groupe de。运作。,Credit Lyonnais,Paris,2000。
[8]马沙尔,R.和A. Zeevi。《超越相关性:金融资产之间的极端联合变动》纽约哥伦比亚大学,2002年。