金融风险管理:VaR和ES的度量。
第一个问题上一节已经提到了,那么如何衡量风险。常用的风险测量工具有:
VaR是指在一定置信区间和一定时间内的最大损失金额。
比如说。银行发行某一基金或资产组合,其99%风险测度VaR在1天期限内为6000万元。
对此有三种理解:
绘制概率密度图
上图是一个标准的正态分布,从-3到3。
95%置信区间对应的分位数就是VaR值,所以VaR值是相对于无损失风险的分位数。
绘制累积分布函数
VaR有自己的缺点,不符合次可加性原理(我还是不懂次可加性),所以没有办法计算投资组合的VaR值。同时,我们对尾部的描述一无所知,也就是我们关心的是置信区间内是什么,但是万一我们确实输在了置信区间外,这个损失的尾部分布是什么呢?有哪些期待?VaR不能告诉我们这个,但是ES可以弥补以上两个缺点。
ES是指损失超过VaR后尾部损失的期望值。计算公式如下:
原则上,给定一定的置信区间和时间t,我们应该能够对照正态分布的表找到相应的VaR值。但实际上收益率的分布并不满足正态分布,只是模型的作用不是反映细节,而是在给定一定假设的情况下,模型能在多大程度上贴近现实?
对于投资组合,Delta-normal方法有两个假设:
从上面的假设中,我们知道资产的收益组合满足正态分布,我们需要VaR,就是根据概念找出这个正态分布的分位数。我们知道,正态分布最重要的两个参数是均值和标准差(或方差),它们分别决定了分布的平移和拉伸压缩。这里我们用标准差代替方差,因为标准差和均值有相同的单位。在经济学或风险管理中,统计学中的sigma通常被称为波动率,实际上是同一个意思。
假设我们有一个价值为1的投资组合,给定C的置信区间,平均收益率为0(标准正态分布的收益率为0),那么计算第二天的。
这里alpha可以通过置信水平找到,关键是如何找到波动率sigma。所以接下来的重点是如何通过历史来估计投资资产回报率的波动性。
在建模之前,我们需要明白我们是根据历史来建模的,也就是我们认为过去的历史包含了某种趋势,而且这种趋势还会继续(但是我们知道随时可能会有新的冲击),我们需要明白模型是为了刻画数据的趋势,真实数据和预测值之间会有残差, 但是从真实数据中扣除预测值后剩下的残差应该是随机波动的,也就是不会相关,这样就可以说我们的模型。
如果返回序列是rt,rt由两部分组成:它自己的均值ut和随机扰动项at。表述如下:
,其中ut满足ARMA(p,Q)模型,即前一项是P个滞后项的历史收益率的自回归项,后一项是Q个滞后项的移动平均项。如下所示:
ARCH(p)模型假设:
时刻t的扰动项
与ARCH模型不同的是,不仅有扰动项的线性组合,还有Q项历史滞后项sigma的移动平均项。
GARCH(p,q)模型假设:
其中扰动项的因子varεt的范围是(0,1),
RiskMetrics是JP Morgan提出的一种风险度量技术,只涉及简单的表格。该方法认为,给定t-1时刻的信息,t时刻的扰动项满足正态分布。其中,sigma的表达式如下:
接下来,我们将利用谷歌五年的历史数据来预测未来一周可能遭受的最大损失和平均损失。
首先获取数据:
然后我们接下来会用到rugarch工具包,可以通过install.packages()的方法安装。
接下来,我们将找出损失变量,将负对数收益率作为百分比后的损失变量。
建模包括两部分:均值方程和波动方程。均值方程满足ARMA(p,q)模型,那么建立ARMA(p,q)模型的一般步骤应该是:
对于波动方程,首先要检验ARCH效应,即残差项是否为二次相关。
这里解释一下,其实我们做了这么多来净化相关性。ARMA描述的是线性相关,而GARCH描述的是非线性相关。我们在不断地消除相关性,这样当相关性完全消除后,剩下的就是随机波动的白噪声。比如最后一个ARCH模型建立后,最后要做的就是扣除残差,剩余的白噪声是否满足一定的分布(比如GARCH要求正态分布,只有这样才能相信这样的白噪声是自然噪声,不包含主要信息)。我们前面建立了ARMA模型后,消除了线性相关,但剩下的和均值的差(也就是差)就是一个波动。根据上面提到的GARCH模型,它可能具有二次序列相关性,所以我们在对GARCH模型建模时,相当于对这部分波动的二次相关性进行了拟合(与ARMA建模的操作相同)。然后检查上一步中ARMA的‘残差’的残差是否仍然相关。如果不是,说明关联描述完整。否则,我们不得不重新选择参数,建立更好的GARCH模型来拟合这部分残差。然后,最后扣除所有的相关性,就是白噪声了。要看这个白噪声是不是真的那么无辜,所以要看是否符合正态分布。
在这种情况下,其实收益率的自相关性很弱(否则大家很容易预测套利),所以不需要建立ARMA模型,直接用算术平均代替均值方程,然后重点建立GARCH模型。
我们直接用GARCH(1,1)模型。一般P和Q都不超过2,这里就不讨论选型和测试了。
我们可以看到我们ugarch模型中均值方程的参数mean.model的阶P和Q是(0,0),它包含了均值项,说明我们这里取简单算术均值作为均值方程。波动方程方差.模型的阶p和q设置为(1,1),然后根据历史损失率建立模型,提前五步预测一周的情况,设置n.ahead=5。
输出结果
然后我们可以计算VaR和ES。
输出结果
这意味着在95%的置信度下,五天内最大可能损失不会超过?1000000 x 4.755209% =?4755209,平均损失多少?1000000 x 5.963223% =?5963223
在这里补充一下,我一开始不太懂ES的计算。让我们在这里仔细看看。实际上,qnorm(0.95)是返回95%置信水平下的分位数,DNnorm函数是返回这个分位数上的密度概率,0.05是尾部的累积概率(可以理解为95%置信水平后所有可能的损失值,即左边的面积),所以人,顾名思义, 尾均值是求0.95对应的分位数下的概率和总对应损失左边面积的大小(可以理解为最终损失既与概率有关,也与该概率下的损失有关)。
整体来说,其实我们也可以先预测1天的sigma,然后乘以sqrt(5),结果略有不同。
这里RiskMetrics的建模方法和GARCH一样,只是参数(p,q)应该是(1,1),没有漂移项alpha0。只需在模型的参数模型中选择‘I arch’即可。
输出结果
这意味着在95%的置信度下,五天内最大可能损失不会超过?1000000 x 3.828855% =?3828855,平均损失是?1000000 x 4.801539% =?4801539
这里的计算结果与GARCH模型预测的结果不同,说明模型和参数(p,q)的选择对计算结果有影响。
本文介绍了VaR和ES的概念、GARCH模型、ARCH模型以及利用风险度量计算VaR和ES的方法和过程。关键是要拟合波动率。除了知道如何计算,我们还需要知道什么时候使用这个模型。