主要内容

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

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

请注意,这是一个相对高级、全面的示例,假设您对EVT和copula有一定的了解。有关广义Pareto分布估计和copula模拟的详细信息,请参阅用广义帕累托分布模拟尾部数据用连接函数模拟相依随机变量在统计和机器学习工具箱™。有关本示例大部分所基于的方法的详细信息,请参见[5][6]).

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

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

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

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

图表(日期、价格(数据))日期勾选(“x”)xlabel(“日期”)伊拉贝尔(“索引值”)头衔(“相对每日指数收盘”)传奇(系列),“位置”,“西北”)

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

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

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

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

过滤每个索引的返回值

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

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

图autocorr(返回(:,索引))标题(“回报的ACF样本”)

然而,平方收益的样本ACF说明了方差的持续性程度,并意味着GARCH建模可能会显著影响后续尾部估计过程中使用的数据。

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

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

$$r\u t=c+\theta r\u{t-1}+\epsilon\t$$

条件方差的非对称GARCH模型

$$\sigma^2\u t=\kappa+\alpha\sigma^2{t-1}+\phi\epsilon^2{t-1}+\psi[\epsilon{t-1}<0]\epsilon^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);%预分配存储方差=NaN(T,nindice);拟合=cell(nindice,1);选项=options(@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对象封装了参数化GP下尾、非参数核光滑内部和参数化GP上尾的估计,为每个指标构造了一个复合半参数CDF。

由此产生的分段分布对象允许在CDF内部进行插值,并允许在每个尾部进行外推(函数评估)。外推非常可取,允许在历史记录之外估计分位数,对于风险管理应用来说非常宝贵。

此外,Pareto tail对象还提供了计算CDF和反CDF(分位数函数)的方法,以及查询分段分布各分段之间边界的累积概率和分位数的方法。

nPoints = 200;%#CDF每个区域的采样点tailFraction = 0.1;%分配给每个尾部的残差的小数部分尾部=单元(九分之一,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(尾部{index},犁尾),犁尾,“红色”,“线宽”,2)绘图(icdf(tails{index},pInterior),pInterior,“黑色”,“线宽”, 2) plot(icdf(tails{index}, pUpperTail), pUpperTail,“蓝”,“线宽”(2)包含“标准化残差”)伊拉贝尔(“概率”)标题(“经验提供”)({传奇“帕累托下尾”“内核平滑内部”...“帕累托上尾”},“位置”,“西北”)

评估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模型似乎是一个不错的选择。

图[P,Q]=边界(尾部{索引});%累积概率&边界分位数y=排序(残差(残差(:,索引)>Q(2),索引)-Q(2));%排序超标情节(y) (cdf(反面{指数},y + Q (2)) - P (2)) / P (1)) (F (x) = ecdf (y);%经验提供持有在…上楼梯(x、F、,“r”网格)在…上传奇(“拟合广义Pareto CDF”,“经验提供”,“位置”,‘东南’);xlabel(“超过数”)伊拉贝尔(“概率”)标题(“标准化残差的上尾”)

校准t Copula

给定标准化残差,现在使用连接词函数可在统计和机器学习工具箱中找到。的连接词函数允许用户通过两种不同的方法估计t copula的参数。

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

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

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

具体而言,假设自由度为固定常数,通过对线性相关矩阵的对数似然函数进行微分得出近似值。然后迭代求解相关矩阵的非线性方程。该迭代反过来嵌套在另一个优化中,以估计匹配自由度。该方法与上述剖面对数似然法在精神上类似,但不是真正的最大似然估计,因为相关矩阵不会收敛到给定自由度的条件最大似然估计。但是,对于大样本量,估计值通常非常接近最大似然估计(参见[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]=连接拟合(“t”U“方法”,“近似EML”);%拟合copula

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

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

要做到这一点,首先使用copularnd函数可在统计和机器学习工具箱中找到。

然后,通过外推到GP尾部并插值到平滑的内部,通过反演每个指数的半参数边际CDF,将均匀变量转换为标准化残差。这将产生与上述AR(1)+GJR(1,1)滤波过程中获得的结果一致的模拟标准化残差。这些残差在时间上是独立的,但在任何时间点上都是相关的。当单独观察时,模拟标准化残差数组的每一列代表一个i.i.d.单变量随机过程,而每一行共享由copula引起的秩相关。

以下代码段模拟了在一个月内22个交易日内独立的标准化指数残差的2000个随机试验。

s=RandStream.getGlobalStream();重置nTrials=2000;% #的独立随机试验地平线= 22;%VaR预测期Z=零(水平线、中心线、九度线);%标准化残差数组U=连接函数d(“t”,R,自由度,地平线*NTRIAL);%t-copula模拟j=1:nIndices Z(:,:,j)=重塑(icdf(tails{j},U(:,j)),地平线,中线);结束

使用模拟标准化残差作为i.i.d.输入噪声过程,通过计量经济学工具箱重新引入原始指数收益中观察到的自相关和异方差™过滤器函数。

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

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

Y0 =回报(结束:);% presample回报Z0 =残差(结束:);%样本前标准化残差V0=差异(结束时:);%抽样前方差simulatedReturns = 0 (horizon, nTrials, nIndices);i=1:nIndices simulatedReturns(:,:,i)=过滤器(拟合{i},Z(:,:,i),...“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*分钟(累计圈数),'%')流(“最大模拟增益:%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和Roncali,T.《金融的连接词:阅读指南和一些应用》,法国歌剧院,里昂信贷银行,巴黎,2000年。

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

[3]关于股票名义超额收益率的预期值与波动性之间的关系金融杂志第48卷,第5期,1993年,第1779-1801页。

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

[5]《单变量极值理论,GARCH和风险度量》,预印本,2002年提交。

[6]《基于情景的风险管理框架》,预印本,2002年提交。

[7]Roncalli,T.,A.Durreman和A.Nikeghbali.“哪个Copula是正确的?”巴黎里昂信贷银行,2000年。

[8]《超越相关性:金融资产之间的极端协同运动》,哥伦比亚大学,纽约,2002年。