关于数据挖掘:R语言风险价值ARIMAGARCHDeltanormal法滚动估计VaRValue-at-Risk和回测分析股票数据

56次阅读

共计 4642 个字符,预计需要花费 12 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=24492

介绍

此剖析的目标是构建一个过程,以在给定时变波动性的状况下正确预计危险价值。危险价值被宽泛用于掂量金融机构的市场危险。咱们的工夫序列数据包含 1258 天的股票收益。为了解释每日收益率方差的一小部分,咱们应用 Box-Jenkins 办法来拟合自回归综合挪动均匀 (ARIMA) 模型,并测试带下划线的假如。稍后,当咱们寻找代替计划、最佳拟合散布模式时,咱们会查看收益率的正态性。咱们应用狭义自回归异方差 (GARCH) 办法预计残差的条件方差,并将其与 delta-normal 办法进行比拟。

数据

出于建模过程的目标,咱们每天收集了 5 年(2013 年 2 月至 2018 年 2 月)的花旗公司股票(共 1259 个察看样本)。

 

# 加载库
library(tidyverse)


# 加载数据

read.csv('stock.csv', header = T)



# 每只股票一栏


plot(y = stok$C , geo = 'line')

红线示意此特定工夫范畴内的均匀收盘价。

非安稳过程具备随工夫变动的均值、方差和协方差。应用非安稳工夫序列数据会导致预测不牢靠。安稳过程是均值回归的,即它在具备恒定方差的恒定均值左近稳定。在咱们的例子中,平稳性是指安稳工夫序列满足三个条件的弱平稳性:

为了解决这个问题,咱们次要应用差分法。一阶差分能够形容为

对于平稳性变换,咱们更偏向于计算简略的日收益,示意如下

ret = diff(stoks$C) / socs$C\[-legth\]
 
plot(x = 1:length, y = res)

为了验证收益率的平稳性,咱们应用了 Dickey-Fuller 测验,其中零假如示意非安稳工夫序列。

adf.test(ret)

小的 P 值 (<0.01) 表明有足够的证据回绝原假如,因而工夫序列被认为是安稳的。

Box-Jenkins 办法

对于工夫序列剖析,Box-Jenkins 办法利用 ARIMA 模型来找到代表生成工夫序列的随机过程的工夫序列模型的最佳拟合。该办法应用三阶段建模办法:a) 辨认 ,b)  预计 ,c)  诊断查看

辨认

要应用 Box-Jenkins 办法,咱们必须确保工夫序列是安稳的。在咱们的例子中,咱们应用咱们在前一部分中曾经查看过平稳性的股票的收益率。此外,基于自相干函数 (ACF) 和偏自相干函数 (PACF),能够确定 ARIMA 模型的 p、d 和 q 阶。辨认模型的另一种办法是 Akaike 信息准则 (AICc)。AIC 预计每个模型绝对于其余每个模型的品质。

其中

  • ∑u^2= 残差平方和
  • T = 察看次数
  • k = 模型参数的数量 (p + q + 1)

很显著,当模型中退出额定的滞后参数时,残差总和会缩小,但可能会呈现过拟合的问题。AIC 解决过拟合和欠拟合的危险。将抉择 AIC 最低的模型。

auto.arima(rets)

能够通过下面的过程察看到咱们计算了各种 ARIMA 模型的 AIC,并且咱们推断出适合的模型是 二阶自回归 (AR(2))

预计

为了预计参数的系数,咱们应用最大似然。应用 ARIMA(2, 0, 0)作为抉择模型,后果如下:

model

因而,该过程能够形容为:

rt=0.0437∗rt−1−0.0542∗rt−2+ϵt 其中 ϵt 是白噪声

诊断查看

该程序包含察看残差图及其 ACF & PACF 图,并查看 Ljung-Box 测试后果。如果模型残差的 ACF 和 PACF 没有显示显着滞后,则所选模型是适合的。

ggtsdisplay(plot)

ACF 和 PACF 图很类似,自相干仿佛为零。右下角图示意残差与正态分布 N(0, σ2σ2) 相比的直方图。

为了进一步测验残差不相干的假如,咱们执行 Ljung-Box 测验。

QLB 统计量不对称地遵循具备 mpq 自由度的 X2 散布。零假如是指 H0:ρ1=ρ2=⋯=ρm=0

Box.test(resiuas)

咱们不能回绝原假如,因而残差的过程体现得像白噪声,所以没有可能被建模。

GARCH 实现

只管残差的 ACF 和 PACF 没有显着滞后,但残差的工夫序列图显示出一些集群稳定。重要的是要记住,ARIMA 是一种对数据进行线性建模的办法,并且预测宽度放弃不变,因为该模型不会反映最近的变动或蕴含新信息。为了对波动性进行建模,咱们应用自回归条件异方差 (ARCH) 模型。ARCH 是工夫序列数据的统计模型,它将以后误差项的方差形容为先前时间段误差项理论大小的函数。

咱们假如感兴趣的工夫序列 rtrt 被合成为两局部,可预测和不可预测局部,

其中 It−1 是工夫 t−1 的信息集,并且  ϵt 是不可预测的局部。

不可预测的成分,能够示意为以下模式的 GARCH 过程:

其中 zt 是一个均值为零且方差等于 1 的独立同散布随机变量序列。ϵt 的条件方差是 σt,它是工夫 t−1 信息集的时变函数。

下一步是定义误差项合成的第二局部,即条件方差 σt。对于这样的工作,咱们能够应用 GARCH(1, 1) 模型,示意为:

当残差平方相干时,GARCH 过程无效。ACF 和 PACF 图分明地表显著着相关性。

另一种测验平方残差别方差性的办法是对 a1 和 β1 参数进行显着性测验。

# 模型定义
ugarchpec(varin , 
                        mean.model 
 
fit(sec = model.spec ')

a1 和 β1 都显着不同于零,因而假如残差随工夫变动的稳定率是正当的。

 σt−12 项的间断替换,GARCH 方程能够写为:

当咱们用优化给出的系数预计替换时,咱们失去以下等式:

鉴于 0<β1<1,随着滞后的减少,残差平方的影响减小。

危险价值

危险价值(VaR)是一种基于以后头寸的上行危险的统计量度。它预计在失常的市场条件下,一组投资在设定的时间段内可能会有多少损失。

VaR 统计具备三个组成部分:a) 时间段 ,b)  置信水平 ,c)  损失金额(或损失百分比)。对于 95% 的置信水平,咱们能够说最坏的每日损失不会超过 VaR 预计。如果咱们应用历史数据,咱们能够通过取 5% 的分位数值来预计 VaR。对于咱们的数据,这个预计是:

quante(res , 0.05)

qplot(ret)

红色条示意低于 5% 分位数的收益率。

散布特色

为了预计 VaR,咱们须要正确定义假如散布的相应分位数。对于正态分布,对应于 a = 5% 的分位数为 -1.645。教训证据表明,正态性假如通常会产生较弱的后果。Jarque-Bera 测验能够测验股票收益遵从正态分布的假如。

其中 S 是偏度,C 是峰度。正态分布样本将返回 JB 分数。低 p 值表明股票收益不是正态分布的。

ja.tst(rets)

qplot(ret , gom = 'desity') + geom_density

在上图中,显示了股票收益(_蓝色_)和正态分布数据(_红色_)的密度图。下图的垂直线代表 a = 0.05(_浅绿色_)和 a = 0.01(_深绿色_)的失常对应分位数。下图表明对于 95% 的显着性,应用正态分布可能会高估危险值。然而,对于 99% 的显着性程度,正态分布会低估危险。

学生的 t 散布

为了更充沛地模仿尾部的厚度,咱们能够对股票收益应用其余散布假如。t 散布是对称的钟形散布,就像正态分布一样,但尾部较重,这意味着它更容易产生远离其均值的值。咱们应用_rugarch 包中_的 _fitdist_ 函数  来获取 t 散布的拟合参数。

fitdispars

cat("对于 a = 0.05,正态分布的分位数值为:" ,
     qnorm(p = 0.05) , "\\n" ,
)

正如咱们所察看到的,95% 显着性程度的分位数表明正态分布高估了危险,但 99% 未能发现异常值的存在,因而产生了对危险的低估。

Garch VaR 和 Delta-normal 办法

Delta-normal 办法假如所有股票收益都是正态分布的。这种办法包含回到过来并计算收益的方差。危险价值能够定义为:

其中 μ 是均匀股票收益,σ 是收益的标准差,a 是选定的置信水平,N−1 是逆 PDF 函数,生成给定 a 的正态分布的相应分位数。

这种简略模型的后果经常令人悲观,现在很少在实践中应用。正态性和恒定每日方差的假如通常是谬误的,咱们的数据也是如此。

之前咱们察看到收益率体现出随工夫变动的波动性。因而,对于 VaR 的预计,咱们应用 GARCH(1,1) 模型给出的条件方差。咱们应用学生的 t 散布。对于此办法,危险价值示意为:

  是给定 t−1 信息的条件标准偏差,并且  是 t 散布的逆 PDF 函数。

qplot(y = rets , gom = 'point') + gem_pnt(col = 'lihtgrson')

红线示意 GARCH 模型产生的 VaR,蓝线示意 delta-normal VaR。

VaR 预测

该 _ugarchroll_ 办法容许执行的模型 / 数据集组合的滚动预计和预测。它返回计算预测密度的任何所需度量所需的散布预测参数。咱们将最初 500 个观测值设置为测试集,并对条件标准偏差进行滚动挪动 1 步预测,. 咱们每 50 次察看从新预计 GARCH 参数。

roll = garhrol(spec = model.spec)
 
#测试集 500 个察看
mean(ret) + rolldesiy\[,'Siga'\]*qdist(dis='std',

回测

让  是 T 期间股票收益率低于 VaR 估计值的天数,其中如果  It 为 1,  和 如果 ,It 为 0 . 因而,N 是样本中察看到的异样数。正如 Kupiec (1995) 所论证的那样,失败数遵循二项式散布 B(T, p)。

for(i in 1:50 p\[i\]= (pbinom(q = (i-1) - pbinom(q))

qplot(y = p)

上图示意由二项式散布给出的异样概率分布。预期数量为 25 (=500obs. x 5%)。两条红线示意 95% 的置信水平,较低的是 16,较高的是 35。因而,当咱们查看测试集上的异样时,咱们冀望 16 到 35 之间的数字表明 GARCH 模型预测胜利。

plot(VaR95, geom = 'line') +
    geom_point

黑线代表 GARCH 模型给出的每日预测 VaR,红点代表低于 VaR 的收益率。最初一步是计算异样的数量,并将其与应用 delta-normal 办法生成的异样进行比拟。

cat('delta-normal 办法的异样数:', (sum(rets\[759:1258\] < (mean(r\]

正如咱们之前所说,咱们预计 delta-normal 办法会高估危险。回测时,只有 14 倍的收益率低于 VaR 低于 95% 显着性程度 (<16)。另一方面,在这种非凡状况下,GARCH 办法(23 个例外)仿佛是一种无效的预测工具。

参考

Angelidis T., Benos A. and Degiannakis S. (December 2003). The Use of GARCH Models in VaR Estimation.


最受欢迎的见解

1.R 语言基于 ARMA-GARCH-VaR 模型拟合和预测实证钻研

2.R 语言时变参数 VAR 随机模型

3.R 语言预计时变 VAR 模型工夫序列的实证钻研

4.R 语言基于 ARMA-GARCH 过程的 VAR 拟合和预测

5.GARCH(1,1),MA 以及历史模拟法的 VaR 比拟

6.R 语言用向量自回归(VAR)进行经济数据脉冲响应

7.R 语言实现向量主动回归 VAR 模型

8.R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型

9.R 语言 VAR 模型的不同类型的脉冲响应剖析

正文完
 0