主要内容

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

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

请注意,这是一个相对高级、全面的示例,假设您对EVT和copula有所了解。关于广义Pareto分布的估计和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”)包含(“日期”) ylabel (的索引值)标题(“相对每日指数收盘”)传说(系列,“位置”“西北”

在为后续建模做准备时,将每个指数的收盘水平转换为每日对数回报(有时称为几何回报,或连续复合回报)。

回报= price2ret(数据);%对数返回T =大小(回报,1);% #的回报(即,历史样本大小)

由于在整体建模方法的第一步涉及到重复应用GARCH过滤和极值理论来描述每个单独的股票指数回报序列的分布,这有助于检查特定国家的细节。您可以将下一行代码更改为集合{1,2,3,4,5,6}中的任意整数,以检查任何索引的详细信息。

指数= 1;% 1 =加拿大,2 =法国,3 =德国,4 =日本,5 =英国,6 =美国Figure plot(date (2:end), returns(:,index))“x”)包含(“日期”) ylabel (“返回”)标题(“每日对数收益”

筛选每个索引的返回值

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

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

图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]).

此外,每个指数的标准化残差被建模为标准化的学生t分布,以补偿通常与股权回报相关的肥尾。这是

$ $ z_t = \ epsilon_t / \ sigma_t $ $ i.i.d.分布式t(\ν)$ $ $ $

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

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

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

图subplot(2,1,1) plot(date (2:end), residuals(:,index)) datetick(“x”)包含(“日期”) ylabel (“残留”)标题(过滤后的残差的) subplot(2,1,2) plot(date (2:end), sqrt(variance (:,index))) datetick(“x”)包含(“日期”) ylabel (“波动”)标题(“过滤条件标准偏差”

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

残差=残差/根号(方差);

为了结束本节,检查标准化残差的acf和标准化残差的平方。

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

图autocorr(残差(:,指数))标题(“标准化残差的样本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} = partotails (residuals(:,i), tailFraction, 1 - tailFraction,“内核”);结束

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

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

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

评估GPD匹配度

虽然前面的图表说明了复合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”“经验提供”“位置”“东南”);包含(“超过数”) ylabel (“概率”)标题(“标准化残差的上尾”

校准t Copula

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

默认方法是一种形式化的最大似然方法,执行两步过程。

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

相反,下面的代码段使用了一种替代方法,它近似于大样本规模下自由度参数的配置文件对数似然值。尽管这种方法通常比MLE快得多,但使用时应谨慎,因为对于小或中等样本量的估计和置信限可能不准确。

具体地说,近似是通过对线性相关矩阵的对数似然函数微分得到的,假设自由度是一个固定的常数。由此得到的非线性方程,然后迭代求解相关矩阵。这个迭代又嵌套在另一个优化中,以估计自由度。该方法在本质上类似于上述的剖面对数似然法,但不是一个真正的最大似然法,因为在给定的自由度下,相关矩阵不收敛于条件最大似然法。然而,对于大的样本量,估计值通常非常接近MLE(见[1][7]).

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

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

下面的代码段首先利用上面推导的半参数经验CDF将标准化残差转换为均匀变量,然后将t copula与转换后的数据进行拟合。当用每个边界的经验CDF转换均匀变量时,通常采用正则最大似然法(canonical maximum likelihood, CML)进行校准。

U = 0(大小(残差));i = 1: nIndices U (:, i) = cdf(反面{我},残差(:,我));%将余量转换为均匀结束[R, DoF] = copulafit“t”U“方法”“approximateml”);%适合联系符

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

给定t关联函数的参数,现在通过首先模拟相应的相依标准化残差来模拟联合相依的股票指数收益。

要做到这一点,首先使用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);copula模拟j = 1: nIndices Z (:,:, j) =重塑(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(我),“Z0”Z0(我),“半”V0 (i));结束

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

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

最后,考虑到每个指数的模拟回报,形成一个由单个指数组成的权重相等的全球指数组合(一个由国家指数组成的全球指数)。由于我们使用的是每天的对数回报,因此风险范围内的累积回报就是每个干预期间的回报之和。还要注意,投资组合的权重在整个风险范围内都是固定的,并且模拟忽略了重新平衡投资组合所需的任何交易成本(每日的再平衡过程假定是自融资的)。

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

累计返回= 0 (nTrials, 1);权重= repmat(1/nIndices, nIndices, 1);等加权投资组合i = 1:nTrials cumulativeReturns(i) = sum(log(1 + (exp(simulatedReturns(:,:,i)) - 1) * weights));结束

总结结果

模拟每个指数的回报,形成全球投资组合,报告最大的收益和损失,以及不同信心水平的VaR,在一个月的风险水平。此外,绘制全球投资组合的实证CDF。

VaR = 100 *分位数(累计收益率,[0.10 0.05 0.01]');disp (' ')流('最大模拟损失:%8.4f%s\n', -100 *分钟(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\n'VaR (3),“%”) figure h = cdfplot(累计返回);h.Color =“红色”;包含(“对数回归”) ylabel (“概率”)标题(“模拟一个月全球投资组合回报CDF”
最大模拟损失:14.4162%最大模拟增益:12.4510%模拟90% VaR: -4.7456%模拟95% VaR: -6.3244%模拟99% VaR: -10.6542%

参考文献

[1]E. Bouye, V. Durrleman, A. Nikeghbali, G. Riboulet, and Roncalli, T。金融copula:阅读指南和一些应用Rech Groupe de。③。,Credit Lyonnais, Paris, 2000.

[2]Embrechts, P., A. McNeil和D. Straumann。风险管理中的相关性和依赖性:属性和陷阱。风险管理:风险中的价值和超越.剑桥:剑桥大学出版社,1999,第176-223页。

[3]格洛斯滕,L. R., R. Jagannathan和D. E. Runkle。“关于期望值与股票名义超额收益波动的关系”。金融杂志.第48卷,第5期,1993年,1779-1801页。

[4]麦克尼尔和弗雷。异方差金融时间序列尾部相关风险测度的估计:极值方法实证金融学杂志.2000年第7卷,第271-300页。

[5]Nystrom, K.和J. Skoglund。单变量极值理论、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年。