深入研究GARCH模型及其在股票价格波动分析中的应用
最近,一位客户要求我们写一份关于 GARCH 的研究报告,包括一些图形和统计输出。相关视频:时间序列分析:ARIMA GARCH 模型分析股票价格数据
时间序列分析模型 ARIMA-ARCH GARCH 模型分析股票价格数据
该分析将用于制定管理客户和供应商关系的战略指南。假设:
董事会担心该公司连续第五个季度的盈利未达到预期。股东们很不高兴。罪魁祸首似乎是销售成本的波动。
示例 关于能源定价模型,您应该询问哪些关键业务问题?您可以使用哪些方法来管理波动性?
这里有一些想法。关键业务问题可能是:
管理波动性
在这篇文章中我们将
拱形模型
我们研究了波动性聚类。 ARCH 模型是对此进行建模的一种方法。
这些模型对于金融时间序列特别有用,它表现出收益率变化较大的时期和价格变化相对平稳的间歇期。
AR+ARCH 模型 σ(t)2 = z(t)2 可以从 z(t) 标准正态变量和初始标准波动率开始指定。然后,我们用方差 ε(t) = (sigma2)1/2z(t)ε 平方调整这些变量。然后我们首先计算每个日期的 t = 1...n,
使用这个条件误差项,我们计算自回归
现在我们准备计算新的方差项。
n <- 10500
z <- rnorm(n) ## 样本标准正态分布变量
sig2 <- z^2 ##创建波动率序列
omega <- 1 ## 方差
mu <- 0.1 ## 平均收益率
omega/(1-alpha)
sqrt(omega/(1-alpha))
## [1] 2.222222
## [1] 1.490712
for (t in 2:n) ## 滞后于第二个日期开始
{
y[t] <- mu + phi*(y[t-1 -mu) + e[t] ## 收益率
sig2[t+1] <- omega + alpha * e[t ^2 ## 生成新的sigma ^ 2。
结果没有指导意义。
我们可以看到
条件标准差中较大的孤立峰也显示了 ARCH 图中的估计值
我们有几种方法来估计 AR-ARCH 过程的参数。首先,让我们加载一些数据。
## 汇率数据是从OANDA获得
data.1 <- na.omit(merge(EUR_USD, GBP_USD,
OIL_Brent))
P <- data.1
R <- na.omit(diff(log(P)) * 100)
然后我们绘制数据自相关图。
##
## Box-Ljung test
##
## data: Brent.r
## X-squared = 32.272, df = 14, p-value = 0.003664
纯随机性测试,p值小于5%,序列不是白噪声
配件
我们的第一个任务是 ARMA-GARCH 模型。
指定正常的 sGarch 模型。 garchOrder = c(1,1) 意味着我们使用残差平方和方差的一周期滞后:
使用 armaOrder = c(1,0) 指定长期平均收益模型
均值包含在上式中。根据正态分布。我们还将使用 Akaike 信息准则 (AIC) 比较拟合与学生 t 分布。使用 ugarchfit 将数据拟合到模型。
ugarchspec(variance.model = list(model = "sGARCH",
garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1,
0), include.mean = TRUE), distribution.model = "norm")
让我们看看这个模型中的条件分位数,也称为 VaR,它设置为 99%。
视频:VaR原理和Python蒙特卡罗模拟计算投资组合示例
风险价值VaR原理及Python Monte Carlo蒙特卡罗模拟计算投资组合示例
,持续时间 10:03
## 首先是条件分位数
plot(fit, which = 2)
现在,让我们生成一个绘图面板。
## 数据acf-显示序列相关
plot(fit , which = 6)
## 数据的QQ图-显示标准化残基的峰度-不支持正态假设
## 标准化残差的acf
## 平方标准残差的acf
例子
让我们重新进行 GARCH 估计,现在使用 Student t 分布。
## 用学生t分布拟合AR(1)-GARCH(1,1)模型
AR.GARCH.spec <- ugarchspec(variance.model = list(model = "sGARCH",
garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1,
0), include.mean = TRUE), distribution.model = "std")
结果
绝对观测值的 ACF 显示存在较大的波动性聚类。 AR-ARCH 估计具有有限的标准化残差(残差/标准误差),这大大减少了这些误差。看来t分布AR-GARCH解释了原油波动的大部分趋势。
使用哪种型号?模型中的信息使用 Akaike 信息准则 (AIC) 进行测量。
使用正态分布模型的 AIC = 4.2471。使用学生 t 分布模型的 AIC = 4.2062。 Student's t 分布模型更好。
以下是我们可以通过拟合模型得出的一些常见结果:
## mu ar1 omega alpha1 beta1 shape
## 0.04018002 0.01727725 0.01087721 0.03816097 0.96074399 7.03778415
系数包括:
让我们绘制随时间变化的波动图。
## mu ar1 omega alpha1 beta1 shape
## 0.04018002 0.01727725 0.01087721 0.03816097 0.96074399 7.03778415
接下来,我们绘制并检查残差:
hist(z.hat)
mean(z.hat)
## [1] -0.0181139
var(z.hat)
## [,1]
## [1,] 1.000682
## [1] -0.3207327
## attr(,"method")
## [1] "moment"
kurtosis(z.hat)
## [1] 2.048561
## attr(,"method")
## [1] "excess"
##
## Shapiro-Wilk normality test
##
## data: as.numeric(z.hat)
## W = 0.98439, p-value < 2.2e-16
##
## Jarque-Bera Normality Test
##
## data: as.numeric(z.hat)
## JB = 780.73, p-value < 2.2e-16
## alternative hypothesis: greater
我们看到了什么?
模拟使用拟合结果中的参数来指定AR-GARCH。生成 2000 个模拟路径。
GARCHspec
##
## *---------------------------------*
## * GARCH Model Spec *
## *---------------------------------*
##
## Conditional Variance Dynamics
## ------------------------------------
## GARCH Model : sGARCH(1,1)
## Variance Targeting : FALSE
##
## Conditional Mean Dynamics
## ------------------------------------
## Mean Model : ARFIMA(1,0,0)
## Include Mean : TRUE
## GARCH-in-Mean : FALSE
##
## Conditional Distribution
## ------------------------------------
## Distribution : std
## Includes Skew : FALSE
## Includes Shape : TRUE
## Includes Lambda : FALSE
## 生成长度为2000的两个路径
ugarchpath(GARCHspec, n.sim = 2000,
n.start = 50, m.sim = 2)
提取波动性
head(vol)
## [,1] [,2]
## T+1 2.950497 5.018346
## T+2 2.893878 4.927087
## T+3 2.848404 4.849797
## T+4 2.802098 4.819258
## T+5 2.880778 4.768916
## T+6 2.826746 4.675612
## 实际的模拟数据
X <- series$seriesSim
head(X)
## [,1] [,2]
## [1,] 0.1509418 1.4608335
## [2,] 1.2644849 -2.1509425
## [3,] -1.0397785 4.0248510
## [4,] 4.4369130 3.4214660
## [5,] -0.3076812 -0.1104726
## [6,] 0.4798977 2.7440751
例子
模拟的序列与现实相符吗?
X1 <- X[, 1]
acf(X1)
acf(abs(X1))
qqnorm(X1)
qqline(X1, col = 2)
shapiro.test(X1)
这是结果
##
## Shapiro-Wilk normality test
##
## data: X1
## W = 0.97164, p-value < 2.2e-16
Shapiro-Wilk 检验 - 零假设:正态分布。如果 p 值足够小,则拒绝原假设。 -必须使用QQ图进行验证。
多元GARCH
从单变量 GARCH 到多变量 GARCH
为什么? -如果我们有一个投资组合(例如可能受到汇率和原油价格变化影响的应收账款)怎么办? -我们需要了解这三个因素的联合波动性和依赖性,因为它们影响应收账款的整体波动性。我们将使用这些条件方差对管理货币和商品风险的工具的期权价格进行建模。
dcc.garch11.spec
##
## *------------------------------*
## * DCC GARCH Spec *
## *------------------------------*
## Model : DCC(1,1)
## Estimation : 2-step
## Distribution : mvt
## No. Parameters : 21
## No. Series : 3
现在准备装修
现在让我们得到一些结果:
##
## *---------------------------------*
## * DCC GARCH Fit *
## *---------------------------------*
##
## Distribution : mvt
## Model : DCC(1,1)
## No. Parameters : 21
## [VAR GARCH DCC UncQ] : [0+15+3+3]
## No. Series : 3
## No. Obs. : 4057
## Log-Likelihood : -12820.82
## Av.Log-Likelihood : -3.16
##
## Optimal Parameters
## -----------------------------------
## Estimate Std. Error t value Pr(>|t|)
## [EUR.USD].mu 0.006996 0.007195 0.97238 0.330861
## [EUR.USD].omega 0.000540 0.000288 1.87540 0.060738
## [EUR.USD].alpha1 0.036643 0.001590 23.04978 0.000000
## [EUR.USD].beta1 0.962357 0.000397 2426.49736 0.000000
## [EUR.USD].shape 9.344066 1.192132 7.83811 0.000000
## [GBP.USD].mu 0.006424 0.006386 1.00594 0.314447
## [GBP.USD].omega 0.000873 0.000327 2.67334 0.007510
## [GBP.USD].alpha1 0.038292 0.002217 17.27004 0.000000
## [GBP.USD].beta1 0.958481 0.000555 1727.86868 0.000000
## [GBP.USD].shape 10.481272 1.534457 6.83061 0.000000
## [OIL.Brent].mu 0.040479 0.026696 1.51627 0.129450
## [OIL.Brent].omega 0.010779 0.004342 2.48228 0.013055
## [OIL.Brent].alpha1 0.037986 0.001941 19.57467 0.000000
## [OIL.Brent].beta1 0.960927 0.000454 2118.80489 0.000000
## [OIL.Brent].shape 7.040287 0.729837 9.64639 0.000000
## [Joint]dcca1 0.009915 0.002821 3.51469 0.000440
## [Joint]dccb1 0.987616 0.004386 225.15202 0.000000
## [Joint]mshape 9.732509 0.652707 14.91100 0.000000
##
## Information Criteria
## ---------------------
##
## Akaike 6.3307
## Bayes 6.3633
## Shibata 6.3306
## Hannan-Quinn 6.3423
##
##
## Elapsed time : 11.89964
现在,利用拟合中的所有信息,我们进行预测。我们用来模拟对冲工具或投资组合的 VaR 或 ES,让我们首先绘制随时间变化的西格玛。
例子
给定条件波动率和相关性,看看 VaR 和 ES 的三个风险因素。
以下是一些结果。首先计算,然后绘图。
## 1% 5% 50% 95% 99%
## -6.137269958 -3.677130793 -0.004439644 3.391312753 5.896992710
## 1% 5% 50% 95% 99%
## -1.3393119939 -0.8235076255 -0.0003271163 0.7659725631 1.2465945013
## 1% 5% 50% 95% 99%
## -1.520666396 -0.980794376 0.006889539 0.904772045 1.493169076
我们看到:
分布的负部分具有更大的权重。汇率也差不多。如果您在客户和分销流程中使用布伦特原油,您可能会在大约 1% 的时间内遭受超过 600% 的损失。
让我们使用新的波动率模型和分布进行调整以适应不对称和厚尾。
在这里,我们尝试使用一种新的 GARCH 模型:gjr 代表 Glosten、Jagannathan 和 Runkle(1993)提出的波动率模型:
σ2t=ω+ασ2t-1+β1ε2t-1+β2ε2t-1It-1
适合这个模型。
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(1,0,1)
## Distribution : nig
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu -0.040275 0.027883 -1.4445e+00 0.148608
## ar1 0.996072 0.001900 5.2430e+02 0.000000
## ma1 -0.989719 0.000005 -1.8786e+05 0.000000
## omega 0.006346 0.003427 1.8517e+00 0.064071
## alpha1 0.009670 0.003841 2.5178e+00 0.011808
## beta1 0.968206 0.001237 7.8286e+02 0.000000
## gamma1 0.042773 0.007183 5.9547e+00 0.000000
## skew -0.120184 0.032059 -3.7488e+00 0.000178
## shape 2.362890 0.351494 6.7224e+00 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu -0.040275 0.030871 -1.3046e+00 0.192023
## ar1 0.996072 0.002107 4.7283e+02 0.000000
## ma1 -0.989719 0.000005 -1.8363e+05 0.000000
## omega 0.006346 0.003388 1.8729e+00 0.061086
## alpha1 0.009670 0.004565 2.1184e+00 0.034143
## beta1 0.968206 0.000352 2.7485e+03 0.000000
## gamma1 0.042773 0.008503 5.0300e+00 0.000000
## skew -0.120184 0.033155 -3.6249e+00 0.000289
## shape 2.362890 0.405910 5.8212e+00 0.000000
##
## LogLikelihood : -8508.439
##
## Information Criteria
## ------------------------------------
##
## Akaike 4.1989
## Bayes 4.2129
## Shibata 4.1989
## Hannan-Quinn 4.2038
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 1.856 0.1730
## Lag[2*(p+q)+(p+q)-1][5] 2.196 0.9090
## Lag[4*(p+q)+(p+q)-1][9] 2.659 0.9354
## d.o.f=2
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.5109 0.474739
## Lag[2*(p+q)+(p+q)-1][5] 9.3918 0.013167
## Lag[4*(p+q)+(p+q)-1][9] 13.2753 0.009209
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 10.26 0.500 2.000 0.001360
## ARCH Lag[5] 10.41 1.440 1.667 0.005216
## ARCH Lag[7] 11.06 2.315 1.543 0.010371
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 2.5309
## Individual Statistics:
## mu 0.91051
## ar1 0.07050
## ma1 0.06321
## omega 0.70755
## alpha1 0.22126
## beta1 0.28137
## gamma1 0.17746
## skew 0.25115
## shape 0.16545
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.1 2.32 2.82
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 1.1836 0.23663
## Negative Sign Bias 0.7703 0.44119
## Positive Sign Bias 1.8249 0.06809 *
## Joint Effect 9.8802 0.01961 **
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 27.42 0.09520
## 2 30 46.32 0.02183
## 3 40 58.50 0.02311
## 4 50 70.37 0.02431
##
##
## Elapsed time : 6.630391
我们可以使用 tailplot() 函数解释结果。
## p quantile sfall
## [1,] 0.900 3.478474 5.110320
## [2,] 0.950 4.509217 6.293461
## [3,] 0.975 5.636221 7.587096
## [4,] 0.990 7.289163 9.484430
## [5,] 0.999 12.415553 15.368772
分位数为我们提供了风险价值 (VaR) 和预期损失 (ES)
你可以看到尾巴的图片。
最流行的见解
1. 使用机器学习来识别不断变化的股市状况——隐马尔可夫模型(HMM)的应用
2.R语言GARCH-DCC模型和DCC(MVT)建模估计
3.R语言实现Copula算法建模依赖案例分析报告
4.R语言COPULAS与金融时间序列数据VaR分析
5.R语言多元COPULA GARCH模型时间序列预测
6.使用R语言实现神经网络预测股票。
7、r语言预测波动率的实现:ARCH模型和HAR-RV模型
8.如何用R语言制作马尔可夫切换模型
9.matlab利用Copula模拟优化市场风险