开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2021.11.25
我们研究波动聚集,以及使用单变量GARCH(1,1)模型对其进行建模。
波动聚集——存在相对平稳时期和高波动时期的现象——是市场数据的一个看似普遍的属性。对此没有普遍接受的解释。GARCH(广义自回归条件异方差)模型波动聚集。图1是波动率的garch模型的示例。
图1:根据garch(1,1)模型估计的2011年底之前的标准普尔500指数波动率
提供给garch估计的数据是每日数据。你可以使用每周或每月的数据,但这将使数据中的一些波动变得平滑。
你可以用garch处理日内数据,但这变得很复杂。一天中的波动有季节性。季节性在很大程度上取决于交易发生的特定市场,也可能取决于特定资产。一个例子是看盘中的风险值。
图1没有显示真实的波动性,因为我们从来没有观察过波动性。波动性曾经只是间接地暴露在我们面前。所以我们试图估计一些未知的东西。
图2是一个原型garch模型图。
图2:“无噪音”garch模型图
图3:由garch(1,1)模型估计的MMM波动率。
当然,在真实数据中,有各种规模的冲击,而不仅仅是大的冲击。
点击标题查阅往期内容
左右滑动查看更多
01
02
03
04
对Garch模型的估计主要是对衰减速度的估计。它所看到的衰减是非常嘈杂的,所以它希望看到大量的数据。大量的数据是指它希望有数以万计的每日观测数据。
有两个原因不能给它大量的观测数据。
你没有那么多观察数据
所以有一个折中的方法。每天2000次观察往往不无道理。
如果你每天的观测值少于1000个,那么估计就不可能给你提供很多关于参数的真实信息。最好是选择一个"合理的"模型。这将是一个具有大约正确的持久性的模型(见下文),α1参数在0和0.1之间,β1参数在0.9和1之间。
我们使用GARCH(1,1)模型;不是因为它是最好的,因为它是最常用的。
我们知道,收益率没有正态分布,它们有长尾。假设长尾完全是由于arch效应造成的,这是完全合理的,在这种情况下,在arch模型中使用正态分布将是正确的做法。然而,使用长尾分布的可能性,结果是给出一个更好的拟合(几乎总是如此)。t分布似乎做得很好。
下面是假设MMM收益率正态分布的拟合输出(在本例中实际上是Box-Pierce):
如果你习惯于看拟合度检验的p值,你可能会注意到一些奇怪的东西。检验表明,我们用4个参数过度拟合了1547个观测值。我不这么认为。
更好的解释是,尽管检验是非常稳健的,但对这种极端的数据来说,检验并不稳健。这样检验平方残差可能会产生反作用。一个有信息量的检验是关于平方标准化残差的行列。
garch模型的持久性与冲击后大的波动率衰减的速度有关。对于garch(1,1)模型来说,关键的统计数字是两个主要参数(alpha1和beta1,我们在这里使用的符号)的总和。
α1和β1的总和应该小于1。如果总和等于1,那么我们就有一个指数衰减模型。
可以用半衰期来表示持久性。半衰期是log(0.5)/log(alpha1+beta1),其中的单位将是收益率的频率。当α1+β1达到1时,半衰期就变成了无限。
为什么我们会得到具有无限持久性的估计?持久性是通过观察在样本期间衰减的速度来估计的。如果在样本期间波动率有一个趋势,那么估计者就会"认为"它从未看到完全的衰减。样本期越短,越有可能出现欺骗估计的趋势。
无论参数估计值是多少,波动率的样本内估计值看起来都很相似。如果我们改变各自模型的参数估计值,图1和图3不会有太大变化。但是当我们在样本外进行预测时,参数就很重要了。
Garch模型之所以有用,是因为以下两点:
你可以使用garch模型进行预测
你可以使用garch模型进行模拟
模型的持久性是预测的关键驱动因素——它决定了预测进入无条件波动的速度。如果波动率确实存在很多持久性,并且你的模型准确地捕捉到了这种持久性,那么你将在很远的地方获得良好的预测。
有两种不同的事情可以预测:
例如,期权价格的波动率是到期前的平均波动率,而不是到期日的波动率。
因此,在预测时你需要了解两件事:
你想要哪个预测
你得到哪个预测
garch模拟需要:
garch模型(包括参数值)
模型的波动状态
标准化(方差1)的分布
我们想要的波动状态几乎总是数据末尾的状态。我们想利用当前的波动状态并展望未来。
使用经验分布——拟合模型的标准化残差——通常是分布的最佳选择。即使在使用经验分布时,拟合模型时的分布假设也会产生影响。
估计程序“试图”使残差符合假设的分布。假设正态分布的模型的标准化残差将比假设分布相同数据的模型的残差更接近正态分布。
模拟依赖于估计的参数,但不像预测那样严重。当我们模拟到更远的未来时,模型误差会加重。
R中的garch建模有多种选择。没有一种是完美的,使用哪种可能取决于你想要实现的目标。然而,rugarch对于许多人来说,它可能是最好的选择。
这具有拟合(即估计参数)、预测和模拟的功能。
以下是使用Studentt分布进行拟合的示例:
这个包中的优化可能是我讨论的包中最复杂和最值得信赖的。
我们将拟合与上述相同的Studentt模型:
这个包是第一个在R中包含公开可用的garch函数的包。它仅限于正态分布。
对Garch模型进行贝叶斯估计。
这个包所做的唯一模型是具有t分布误差的garch(1,1)。
但是,此命令失败并出现错误。如果我们以百分比形式给出收益率,则该命令确实有效:
这也可能是最大似然估计的一个问题。至少有一个Garch的实现在优化百分比收益而不是自然比例的收益方面要好得多。你可以对优化做一个测试,就是在两种规模的收益率上估计模型并比较结果。
不过,bayesGARCH函数并没有给我们一个估计值。它给我们的是一个矩阵,列对应于参数,行对应于马尔科夫链蒙特卡洛。这可以说是参数的(后验)分布的一个样本。
如果我们对持久性施加一个约束,我们可以得到一个更有用的分析。我们通过为约束条件创建一个函数来做到这一点。
这就是说超过两年的半衰期是不合理的。然后我们使用该约束:
现在我们从结果中进行选择并计算分布中的半衰期:
然后绘制结果。
图3:MMM波动率半衰期的贝叶斯估计
该包拟合具有t分布误差的EGARCH模型。
图4将这个估计值与garch(1,1)估计值进行了比较(来自rugarch,但它们看起来都非常相似)。
图4:由garch(1,1)模型(蓝色)和beta-tEGARCH模型(红色)估计的MMM波动率
我认为在这个包中估计一个garch模型的方法是:
该包将为ARCH模型选择最佳滞后。
如何拟合和使用garch模型。
这模型通常比更常见的garch(1,1)模型效果更好。
图5显示了拟合标准普尔500指数的两个模型对未来20天每天波动率的预测。模型对波动率的预测更为细致。
图5:使用模型(蓝色)和具有方差目标(红色)的garch(1,1)对每天的波动率预测
通常,你关心的是从现在到指定日期的平均波动率。这被称为期限结构——图6显示了这一点。
图6:使用分量模型(蓝色)和具有方差目标(红色)的garch(1,1)预测标准普尔500指数的波动率期限结构
创建这些图的代码如下所示。
该rugarch软件包允许选择拟合模型。
首先这是我遇到的一个问题:
更新这些包可以解决问题。
卸载包后,我更新了Rcpp和RcppArmadillo包。仍然不能正常工作。
再次安装Rcpp后,成功了。
模型被调用"csGARCH",rugarch两个额外的参数被称为eta11(我的符号中的ρ)和eta21(φ)。它的分布和常数平均值是:
用途如下:
警告信息似乎是关于:
估计系数和半衰期为:
具有方差目标的garch(1,1)模型的规范是:
一旦模型拟合好,你就可以进行预测。
一旦我们得到了预测的波动率,我们就可以绘制它。生成图5的函数是: