主要内容

利用极值理论和copula评估市场风险

这个例子展示了如何用蒙特卡洛模拟技术,使用学生的t联系函数和极值理论(EVT)来模拟一个假设的全球股票指数投资组合的市场风险。该过程首先利用非对称GARCH模型从每个收益序列中提取过滤后的残差,然后利用内部的高斯核估计和上下尾部的广义Pareto分布估计构建每个资产的样本边际累积分布函数(CDF)。然后对数据进行拟合,并使用Student's t copula来诱导每个资产的模拟残差之间的相关性。最后,模拟评估了一个月内假设的全球股票投资组合的风险价值(VaR)。

请注意,这是一个相对高级的综合示例,假设一些熟悉EVT和Copulas。有关估计广义帕吻发行分布和Copula模拟的详细信息,请参阅尾部数据的广义Pareto分布建模用copula模拟相关随机变量在统计和机器学习工具箱™。有关本示例大部分所基于的方法的详细信息,请参见[5][6]).

检查全球股票指数数据的每日收盘情况

原始数据包括以下代表性股票指数在1993年4月27日至2003年7月14日交易日的2665次每日收盘值观察:

加拿大:TSX综合指数法国:CAC 40德国:DAX日本:日经225英国:富时100美国:标普500
负载Data_GlobalIdx1%每日进口指数收盘

下图说明了每个指数的相对价格变动。每个指标的初始水平已被标准化为统一,以方便比较相对表现,没有明确考虑股息调整。

figure plot(date, ret2price(price2ret(Data))) datetick(“x”)xlabel('日期')伊拉贝尔(“索引值”)标题(“相对每日指数收盘”)传说(系列,“位置”“西北”

在准备后续建模中,将每个索引的闭合电平转换为每日对数返回(有时称为几何或连续复合,返回)。

返回=价格2集合(数据);%对数返回t =大小(返回,1);% #的回报(即,历史样本大小)

由于整体建模方法中的第一步涉及加入滤池和极值理论的重复应用,以表征每个股权指数返回系列的分布,从而有助于检查特定国家的细节。您可以将下一行代码更改为SET {1,2,3,4,5,6}中的任何整数,以检查任何索引的详细信息。

指数= 1;%1=加拿大,2=法国,3=德国,4=日本,5=英国,6=美国图绘图(日期(2:结束),返回(:,索引))datetick(“x”)xlabel('日期')伊拉贝尔(“返回”)标题(“每日对数收益”

过滤每个索引的返回

用GPD模拟分布的尾部需要观测值近似独立且同分布(i.i.d)。然而,大多数财务收益序列表现出一定程度的自相关,更重要的是,异方差。

例如,与所选指数相关的回报的样本自相关函数(ACF)显示出一些轻微的序列相关性。

figure autocorr(返回(:,索引))标题('返回的样本ACF'

然而,平方返回的样本ACF示出了方差的持久程度,并且意味着GARCH建模可以显着地条件在随后的尾估计过程中使用的数据。

图AutoCorR(返回(:,索引)。^ 2)标题(“平方回报的样本ACF”

为了产生一系列的i.i.d.观察,拟合一阶自回归模型到每个股票指数回报的条件均值

$r_t = c + theta r_{t-1} + \epsilon_t$

条件方差的非对称GARCH模型

$ $ \ασ^ 2 _t = \ kappa + \ \σ^ 2 _ {t - 1} +φ\ \ε^ 2 _ {t - 1} + \ psi (\ epsilon_ {t - 1} < 0] \ε^ 2 _ {t - 1} $ $

一阶自回归模型对自相关进行补偿,GARCH模型对异方差进行补偿。特别地,最后一项通过布尔指标将不对称(杠杆)纳入到方差中,如果先验模型残差为负,则取值1,否则取0(见图)[3]).

此外,每个指数的标准化残差被建模为标准化的Student t分布,以补偿通常与股票回报相关的厚尾。就是

$$z\u t=\epsilon\u t/\sigma\u t$$i.i.d.分布式$$t(\nu)$$

下面的代码段从每个股票指数的收益中提取过滤后的残差和条件方差。

模型= arima (基于“增大化现实”技术的南,“分布”“t”“方差”gjr (1,1));nIndices =大小(数据,2);索引% #残差=NaN(T,Nindice);% preallocate存储方差= NaN(T, nIndices);适合=细胞(nIndices, 1);选择= optimoptions (@fmincon,“显示”“关闭”...“诊断”“关闭”“算法”“sqp”“TolCon”1 e);i=1:nindice拟合{i}=估计(模型,返回(:,i),“显示”“关闭”“选项”、选择);(残差(:,i)、方差(:,我)]=推断(适合{我},返回(:,我));结束

对于所选指数,比较模型残差和从原始收益中过滤的相应条件标准差。下图清楚地说明了过滤残差中存在的波动性(异方差)变化。

图subplot(2,1,1) plot(date (2:end), residuals(:,index)) datetick(“x”)xlabel('日期')伊拉贝尔(“剩余的”)标题(过滤后的残差的) subplot(2,1,2) plot(date (2:end), sqrt(variance (:,index))) datetick(“x”)xlabel('日期')伊拉贝尔(“波动”)标题(“过滤条件标准偏差”

从每个收益序列中过滤出模型残差后,用相应的条件标准差对残差进行标准化。这些标准化残差代表潜在的零均值、单位方差、i.i.d.系列,样本CDF尾的EVT估计是基于这些系列。

残差=残差/sqrt(方差);

在本节结束时,检查标准化残差和平方标准化残差的ACF。

将标准化残差的ACF与原始收益的相应ACF进行比较,发现标准化残差现在约为i.i.d.,因此更适合后续尾部估计。

图自动相关(残差(:,索引))标题(“标准化残差的样本ACF”)图autocorr(residuals(:,index).^2)“标准化残差平方的样本ACF”

估计半参数cdf

给定标准化的,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);帕累托尾部对象的单元格数组i=1:nIndices tails{i}=paretotails(残差(:,i),尾分数,1-尾分数,“内核”);结束

估计了复合半参数经验CDF的三个不同区域,图形连接并显示结果。再次注意,分别显示为红色和蓝色的下尾和上尾区域适合于外推,而核平滑的内部(黑色)适合于插值。

下面的代码用非适合所基于的数据调用感兴趣的Pareto tail对象的CDF和反CDF方法。具体来说,参考方法可以访问拟合状态,现在可以调用这些方法来选择和分析概率曲线的特定区域,作为一种强大的数据过滤机制。

图保存在…上网格在…上minProbability=cdf(tails{index},(min(residentials(:,index)));maxProbability=cdf(tails{index},(max(residentials(:,index)));pLowerTail=linspace(minProbability,tailFraction,nPoints);%下尾样本pUpperTail=linspace(1-尾分数,最大概率,nPoints);%样品上尾pInterior = linspace(tailFraction, 1 - tailFraction, nPoints);%样品内部情节(icdf(反面{指数},pLowerTail) pLowerTail,'红色的'“线宽”,2)绘图(icdf(tails{index},pInterior),pInterior,“黑”“线宽”, 2) plot(icdf(tails{index}, pUpperTail), pUpperTail,“蓝”“线宽”(2)包含标准化的剩余的)伊拉贝尔(“概率”)标题(“经验提供”)({传奇“帕累托低尾”内核内部平滑的...“帕累托上尾”},“位置”“西北”

评估GPD FIT

虽然前面的图表说明了复合CDF,但更详细地检查GPD适合性是有指导意义的。

GP分布的CDF参数化为

$ $ F (y) = 1 -(1 + \ζy / \β)^{1 / \ζ},y # 62; = 0, \β# 62;0 \ζ# 62;-0.5美元美元

对于超越(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”“经验提供”“位置”‘东南’);Xlabel(“超过数”)伊拉贝尔(“概率”)标题(“标准化残差的上尾”

校准t Copula

给定标准化残差,现在估计标量自由度参数(DoF)和线性相关矩阵(R)的t copula使用copulafit函数可在统计和机器学习工具箱中找到。的copulafit函数允许用户通过两种不同的方法估计t copula的参数。

默认方法是在两步过程中执行的正式最大似然方法。

具体来说,虽然完全对数似然可以直接最大化,但在多维空间中目标函数的最大值往往出现在长、平、窄的谷中,在高维空间中可能会出现收敛困难。为了规避这些困难,copulafit最大似然估计(MLE)分两步进行。内步长最大化了线性相关矩阵的对数似然,给定一个固定的自由度值。条件最大化被放置在关于自由度的一维最大化中,从而最大化所有参数的对数可能性。在这个外部步骤中被最大化的函数被称为自由度的轮廓对数似然函数。

相反,以下代码段使用替代方法,该替代方案近似于用于大样本大小的自由度参数的程度的轮廓对数似然性。虽然这种方法通常比MLE更快,但它应该谨慎使用,因为估计和置信度限制可能不是准确的小或中等样本尺寸。

具体地,假设自由度是固定常数,通过区分对数似然函数来导出的近似值来导出。然后迭代地解决所得到的非线性方程,用于相关矩阵。反过来,这种迭代嵌套在另一个优化中以估计自由度。该方法的精神与上面的简档日志似然方法类似,但是不是真正的MLE,因为相关矩阵不会收敛到给定程度的自由度的条件MLE。但是,对于大型样本尺寸,估计通常非常靠近MLE(见[1][7]).

另一种方法是先计算样本秩相关矩阵(Kendall’s或Spearman’s),然后通过鲁棒正弦变换将秩相关转换为线性相关。给定这个线性相关矩阵的估计,对数似然函数然后是最大的关于自由度参数单独。这种方法似乎也受到profile log-likelihood方法的启发,但根本不是MLE方法。然而,这种方法不需要矩阵反演,因此在存在接近奇异的相关矩阵时具有数值稳定的优势(见[8]).

最后,Nystrom和Skoglund[6]建议将自由度参数保留为用户指定的仿真输入,从而允许用户主观地诱导资产之间的尾部依赖程度。特别是,他们建议一个相对较低的自由度,在1到2之间,这样就可以更仔细地检查关节极端的可能性。这种方法对压力测试是有用的,其中极端相互依赖的程度是至关重要的。

下面的代码段首先通过上面导出的半参数经验CDF将标准化残差转换为均匀变量,然后将t copula拟合到转换后的数据。当均匀变量通过每个裕度的经验CDF进行转换时,校准方法通常称为标准最大似然(CML)。

U =零(尺寸(残差));i = 1: nIndices U (:, i) = cdf(反面{我},残差(:,我));%将边距转换为均匀边距结束[r,dof] = copulafit(“t”U“方法”“近似EML”);%适合联系符

用t Copula模拟全球指数投资组合的回报

给定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.输入噪声过程,通过计量经济学工具箱™重新引入在原始指数回报中观察到的自相关和异方差过滤器函数。

请注意,过滤器接受从copula导出的用户指定的标准化干扰,并一次为单个索引模型模拟多条路径,这意味着为每个索引连续模拟和存储所有样本路径。

要充分利用当前信息,请指定必要的前样例模型残差、方差和返回值,以便每个模拟路径从一个共同的初始状态演化。

Y0 =回报(结束:);% presample回报Z0 =残差(结束:);%预先标准化残差V0 =方差(结束:);% presample方差simulatedReturns = 0 (horizon, nTrials, nIndices);i = 1: nIndices simulatedReturns (:,:, i) =过滤器(适合{我},Z(:,:我),...“Y0”,Y0(i),“Z0”Z0(我),“半”V0 (i));结束

现在重塑模拟的返回数组,使每个页面表示一个多变量返回序列的一次尝试,而不是一个单变量返回序列的多次尝试。

simulatedReturns = permute(simulatedReturns, [1 3 2]);

最后,鉴于每个索引的模拟返回,形成由各个指标组成的同样加权的全局索引组合(全球名称指数的全局索引)。由于我们正在使用每日对数回报,因此风险地平线上的累积回报只是每个中间期间的返回的总和。另请注意,在整个风险地平线上固定产品重量,并且模拟忽略了重新平衡组合所需的任何交易成本(每日再平衡过程被认为是自筹资金)。

请注意,尽管模拟收益是对数的(连续复合的),投资组合的收益序列是通过首先将单个对数收益转换为算术收益(价格变化除以初始价格),然后加权单个算术收益来获得投资组合的算术收益,最后转换回投资组合的对数回报。对于日数据和短期VaR范围,重复转换的差异很小,但对于较长的时间周期,差异可能是显著的。

累计回报率=零(nTrials,1);权重=repmat(1/nindice,nindice,1);等加权投资组合i=1:nTrials累计周转率(i)=总和(log(1+(exp(模拟周转率(:,:,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%%变量:%8.4f%s\n',var(1),“%”)流('模拟95%%变量:%8.4f%s\n',var(2),“%”)流('模拟99%%变量:%8.4f%s\n\n',VaR(3),“%”) figure h = cdfplot(累计返回);h.Color ='红色的';Xlabel(“对数回归”)伊拉贝尔(“概率”)标题(“模拟一个月全球投资组合回报CDF”
最大模拟损失:14.4218%最大模拟增益:12.4470%模拟90%VaR:-4.7476%模拟95%VaR:-6.3291%模拟99%VaR:-10.6639%

参考文献

[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.弗雷。“异方差金融时间序列尾部相关风险度量的估计:极值方法。”实证金融学杂志.2000年第7卷,第271-300页。

[5]《单变量极值理论,GARCH和风险度量》,预印本,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年。