R语言: GARCH模型股票交易量的研究道琼斯股票市场指数|附代码数据

发布时间 2023-09-12 23:38:57作者: 拓端tecdat

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

原文出处:拓端数据部落公众号

 最近我们被客户要求撰写关于GARCH的研究报告,包括一些图形和统计输出。

我将建立道琼斯工业平均指数(DJIA)日交易量对数比的ARMA-GARCH模型。 ``

获取数据

load(file='DowEnvironment.RData')

日交易量

 每日交易量内发生的 变化。 

 
 
plot(dj_vol)
 
html
 

 首先,我们验证具有常数均值的线性回归在统计上是显着的。``

 

 

在休息时间= 6时达到最小BIC。

以下是道琼斯日均交易量与水平变化(红线) 。

 
 
summary(bp_dj_vol)
 
 
## 
##   Optimal (m+1)-segment partition: 
## 
## Call:
## breakpoints.formula(formula = dj_vol ~ 1, h = 0.1)
## 
## Breakpoints at observation number:
##                                             
## m = 1                                   2499
## m = 2           896                     2499
## m = 3       626     1254                2499
## m = 4   342 644     1254                2499
## m = 5   342 644     1219 1649           2499
## m = 6   320 622 924 1251 1649           2499
## m = 7   320 622 924 1251 1692      2172 2499
## m = 8   320 622 924 1251 1561 1863 2172 2499
## 
## Corresponding to breakdates:
##                                                              
## m = 1                                                        
## m = 2                                       0.296688741721854
## m = 3                     0.207284768211921                  
## m = 4   0.113245033112583 0.213245033112583                  
## m = 5   0.113245033112583 0.213245033112583                  
## m = 6   0.105960264900662 0.205960264900662 0.305960264900662
## m = 7   0.105960264900662 0.205960264900662 0.305960264900662
## m = 8   0.105960264900662 0.205960264900662 0.305960264900662
##                                                              
## m = 1                                                        
## m = 2                                                        
## m = 3   0.41523178807947                                     
## m = 4   0.41523178807947                                     
## m = 5   0.40364238410596  0.546026490066225                  
## m = 6   0.414238410596027 0.546026490066225                  
## m = 7   0.414238410596027 0.560264900662252                  
## m = 8   0.414238410596027 0.516887417218543 0.616887417218543
##                                            
## m = 1                     0.827483443708609
## m = 2                     0.827483443708609
## m = 3                     0.827483443708609
## m = 4                     0.827483443708609
## m = 5                     0.827483443708609
## m = 6                     0.827483443708609
## m = 7   0.719205298013245 0.827483443708609
## m = 8   0.719205298013245 0.827483443708609
## 
## Fit:
##                                                                          
## m   0         1         2         3         4         5         6        
## RSS 3.872e+19 2.772e+19 1.740e+19 1.547e+19 1.515e+19 1.490e+19 1.475e+19
## BIC 1.206e+05 1.196e+05 1.182e+05 1.179e+05 1.178e+05 1.178e+05 1.178e+05
##                        
## m   7         8        
## RSS 1.472e+19 1.478e+19
## BIC 1.178e+05 1.178e+05
 
 
lwd = c(3,1), col = c("red", "black"))

 

 
 
 

 每日交易量对数比率模型

 每日交易量对数比率:

 
 
plot(dj_vol_log_ratio)

 

异常值检测

 下面我们将原始时间序列与调整后的异常值进行比较。

 
 
 

 

 

相关图

 

 
 
 

 

 
 
pacf(dj_vol_log_ratio)

 

上图可能表明 ARMA(p,q)模型的p和q> 0. 

单位根测试

我们 提供Augmented Dickey-Fuller测试。 

根据 测试统计数据与临界值进行比较,我们拒绝单位根存在的零假设。 

ARMA模型

我们现在确定时间序列的ARMA结构,以便对结果残差运行ARCH效果测试。 

 

 
 
 

ma1系数在统计上不显着。因此,我们尝试使用以下ARMA(2,3)模型。

所有系数都具有统计显着性,AIC低于第一个模型。然后我们尝试使用ARMA(1,2)。

 
 
## 
## Call:
## arima(x = dj_vol_log_ratio, order = c(1, 0, 2), include.mean = FALSE)
## 
## Coefficients:
##          ar1      ma1     ma2
##       0.6956  -1.3183  0.3550
## s.e.  0.0439   0.0518  0.0453
## 
## sigma^2 estimated as 0.06598:  log likelihood = -180.92,  aic = 367.84
## z test of coefficients:
## 
##      Estimate Std. Error  z value  Pr(>|z|)    
## ar1  0.695565   0.043874  15.8537 < 2.2e-16 ***
## ma1 -1.318284   0.051787 -25.4557 < 2.2e-16 ***
## ma2  0.355015   0.045277   7.8409 4.474e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

该模型在集合中具有最高的AIC,并且所有系数具有统计显着性。

我们还可以尝试 进一步验证。

 
 
eacf(dj_vol_log_ratio)

## AR / MA
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 xooxxooxooxooo 
## 1 xxoxoooxooxooo 
## 2 xxxxooooooxooo 
## 3 xxxxooooooxooo 
## 4 xxxxxoooooxooo 
## 5 xxxxoooooooooo 
## 6 xxxxxoxooooooo 
## 7 xxxxxooooooooo

以“O”为顶点的左上角三角形似乎位于{(1,2),(2,2),(1,3),(2,3)}之内,代表潜在的集合( p,q)根据eacf()函数输出的值。 

我们已经在集合{(3,2)(2,3)(1,2)}内验证了具有(p,q)阶的ARMA模型。让我们试试{(2,2)(1,3)}

 
 
## 
## Call:
## arima(x = dj_vol_log_ratio, order = c(2, 0, 2), include.mean = FALSE)
## 
## Coefficients:
##          ar1      ar2      ma1     ma2
##       0.7174  -0.0096  -1.3395  0.3746
## s.e.  0.1374   0.0560   0.1361  0.1247
## 
## sigma^2 estimated as 0.06598:  log likelihood = -180.9,  aic = 369.8
## z test of coefficients:
## 
##       Estimate Std. Error z value  Pr(>|z|)    
## ar1  0.7173631  0.1374135  5.2205 1.785e-07 ***
## ar2 -0.0096263  0.0560077 -0.1719  0.863536    
## ma1 -1.3394720  0.1361208 -9.8403 < 2.2e-16 ***
## ma2  0.3746317  0.1247117  3.0040  0.002665 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

ar2系数在统计上不显着。

 
 
## 
## Call:
## arima(x = dj_vol_log_ratio, order = c(1, 0, 3), include.mean = FALSE)
## 
## Coefficients:
##          ar1      ma1     ma2     ma3
##       0.7031  -1.3253  0.3563  0.0047
## s.e.  0.0657   0.0684  0.0458  0.0281
## 
## sigma^2 estimated as 0.06598:  log likelihood = -180.9,  aic = 369.8

## z test of coefficients:
## 
##       Estimate Std. Error  z value  Pr(>|z|)    
## ar1  0.7030934  0.0656902  10.7032 < 2.2e-16 ***
## ma1 -1.3253176  0.0683526 -19.3894 < 2.2e-16 ***
## ma2  0.3563425  0.0458436   7.7730 7.664e-15 ***
## ma3  0.0047019  0.0280798   0.1674     0.867    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

ma3系数在统计上不显着。

 

ARCH效果测试

如果ARCH效应对于我们的时间序列的残差具有统计显着性,则需要GARCH模型。

我们测试候选平均模型ARMA(2,3)。

 
 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  resid_dj_vol_log_ratio - mean(resid_dj_vol_log_ratio)
## Chi-squared = 78.359, df = 12, p-value = 8.476e-12

根据报告的p值,我们拒绝无ARCH效应的零假设。

让我们看一下残差相关图。

 
 
par(mfrow=c(1,2))
acf(resid_dj_vol_log_ratio)
pacf(resid_dj_vol_log_ratio)

 

我们测试了第二个候选平均模型ARMA(1,2)。

 
 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  resid_dj_vol_log_ratio - mean(resid_dj_vol_log_ratio)
## Chi-squared = 74.768, df = 12, p-value = 4.065e-11

根据报告的p值,我们拒绝无ARCH效应的零假设。

让我们看一下残差相关图。

 
 
par(mfrow=c(1,2))
acf(resid_dj_vol_log_ratio)
pacf(resid_dj_vol_log_ratio)

 

要检查 对数比率内的不对称性,将显示汇总统计数据和密度图。

 
 
##              DJI.Volume
## nobs        3019.000000
## NAs            0.000000
## Minimum       -2.301514
## Maximum        2.441882
## 1. Quartile   -0.137674
## 3. Quartile    0.136788
## Mean          -0.000041
## Median        -0.004158
## Sum           -0.124733
## SE Mean        0.005530
## LCL Mean      -0.010885
## UCL Mean       0.010802
## Variance       0.092337
## Stdev          0.303869
## Skewness      -0.182683
## Kurtosis       9.463384
 
 
plot(density(dj_vol_log_ratio))

 

因此,对于每日交易量对数比,还将提出eGARCH模型。

为了将结果与两个候选平均模型ARMA(1,2)和ARMA(2,3)进行比较,我们进行了两次拟合

ARMA-GARCH:ARMA(1,2)+ eGARCH(1,1)
所有系数都具有统计显着性。然而,基于上面报道的标准化残差p值的加权Ljung-Box检验,我们拒绝了对于本模型没有残差相关性的零假设。 

ARMA-GARCH:ARMA(2,3)+ eGARCH(1,1)

 
 
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : eGARCH(1,1)
## Mean Model   : ARFIMA(2,0,3)
## Distribution : sstd 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error   t value Pr(>|t|)
## ar1     -0.18607    0.008580  -21.6873  0.0e+00
## ar2      0.59559    0.004596  129.5884  0.0e+00
## ma1     -0.35619    0.013512  -26.3608  0.0e+00
## ma2     -0.83010    0.004689 -177.0331  0.0e+00
## ma3      0.26277    0.007285   36.0678  0.0e+00
## omega   -1.92262    0.226738   -8.4795  0.0e+00
## alpha1   0.14382    0.033920    4.2401  2.2e-05
## beta1    0.31060    0.079441    3.9098  9.2e-05
## gamma1   0.43137    0.043016   10.0281  0.0e+00
## skew     1.32282    0.031382   42.1523  0.0e+00
## shape    3.48939    0.220787   15.8043  0.0e+00
## 
## Robust Standard Errors:
##         Estimate  Std. Error   t value Pr(>|t|)
## ar1     -0.18607    0.023940   -7.7724 0.000000
## ar2      0.59559    0.022231   26.7906 0.000000
## ma1     -0.35619    0.024244  -14.6918 0.000000
## ma2     -0.83010    0.004831 -171.8373 0.000000
## ma3      0.26277    0.030750    8.5453 0.000000
## omega   -1.92262    0.266462   -7.2154 0.000000
## alpha1   0.14382    0.032511    4.4239 0.000010
## beta1    0.31060    0.095329    3.2582 0.001121
## gamma1   0.43137    0.047092    9.1602 0.000000
## skew     1.32282    0.037663   35.1225 0.000000
## shape    3.48939    0.223470   15.6146 0.000000
## 
## LogLikelihood : 356.4994 
## 
## Information Criteria
## ------------------------------------
##                      
## Akaike       -0.22888
## Bayes        -0.20698
## Shibata      -0.22891
## Hannan-Quinn -0.22101
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                      0.7678 0.38091
## Lag[2*(p+q)+(p+q)-1][14]    7.7336 0.33963
## Lag[4*(p+q)+(p+q)-1][24]   17.1601 0.04972
## d.o.f=5
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      0.526  0.4683
## Lag[2*(p+q)+(p+q)-1][5]     1.677  0.6965
## Lag[4*(p+q)+(p+q)-1][9]     2.954  0.7666
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]     1.095 0.500 2.000  0.2955
## ARCH Lag[5]     1.281 1.440 1.667  0.6519
## ARCH Lag[7]     1.940 2.315 1.543  0.7301
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  5.3764
## Individual Statistics:              
## ar1    0.12923
## ar2    0.20878
## ma1    1.15005
## ma2    1.15356
## ma3    0.97487
## omega  2.04688
## alpha1 0.09695
## beta1  2.01026
## gamma1 0.18039
## skew   0.38131
## shape  2.40996
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          2.49 2.75 3.27
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value    prob sig
## Sign Bias           1.4929 0.13556    
## Negative Sign Bias  0.6317 0.52766    
## Positive Sign Bias  2.4505 0.01432  **
## Joint Effect        6.4063 0.09343   *
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     17.92       0.5278
## 2    30     33.99       0.2395
## 3    40     44.92       0.2378
## 4    50     50.28       0.4226
## 
## 
## Elapsed time : 1.660402

 ``

所有系数都具有统计显着性。没有找到标准化残差或标准化平方残差的相关性。模型可以正确捕获所有ARCH效果。调整后的Pearson拟合优度检验不拒绝零假设,即标准化残差的经验分布和所选择的理论分布是相同的。然而:

*对于其中一些模型参数随时间变化恒定的Nyblom稳定性测试零假设被拒绝

 

 
 
par(mfrow=c(2,2))
plot(garchfit, which=8)
plot(garchfit, which=9)
plot(garchfit, which=10)
plot(garchfit, which=11)

 

我们用平均模型拟合(红线)和条件波动率(蓝线)显示原始道琼斯日均交易量对数时间序列。

 
 
 

对数波动率分析

以下是我们的模型ARMA(2,2)+ eGARCH(1,1)产生的条件波动率图。

 
 
plot(cond_volatility)
显示了按年度的条件波动率的线图。
 
 
par(mfrow=c(6,2))
pl <- lapply(2007:2018, function(x) { plot(cond_volatility[as.character(x)], main = "DJIA Daily Volume Log-ratio conditional volatility")})
pl

 

显示了按年度计算的条件波动率框图。

 
 
 

结论

我们研究了基本统计指标,如平均值,偏差,偏度和峰度,以了解多年来价值观的差异,以及价值分布对称性和尾部。从这些摘要开始,我们获得了平均值,中位数,偏度和峰度指标的有序列表,以更好地突出多年来的差异。

密度图可以了解我们的经验样本分布的不对称性和尾部性。

对于对数回报,我们构建了ARMA-GARCH模型(指数GARCH,特别是作为方差模型),以获得条件波动率。同样,可视化作为线和框图突出显示了年内和年之间的条件波动率变化。这种调查的动机是,波动率是变化幅度的指标,用简单的词汇表示,并且是应用于资产的对数收益时的基本风险度量。有几种类型的波动性(有条件的,隐含的,实现的波动率)。

交易量可以被解释为衡量市场活动幅度和投资者兴趣的指标。计算交易量指标(包括波动率)可以了解这种活动/利息水平如何随时间变化。

 

非常感谢您阅读本文,有任何问题请在下面留言!


最受欢迎的见解

1.HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率

2.R语言中基于混合数据抽样(MIDAS)回归的HAR-RV模型预测GDP增长

3.波动率的实现:ARCH模型与HAR-RV模型

4.R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

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

6.R语言多元COPULA GARCH 模型时间序列预测

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

8.matlab预测ARMA-GARCH 条件均值和方差模型

9.R语言对S&P500股票指数进行ARIMA + GARCH交易策略