library(rugarch)
## Warning: package 'rugarch' was built under R version 4.2.3
## Loading required package: parallel
##
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
##
## sigma
library(moments)
library(tseries)
## Warning: package 'tseries' was built under R version 4.2.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(nortest)
library(kSamples)
## Warning: package 'kSamples' was built under R version 4.2.3
## Loading required package: SuppDists
## Warning: package 'SuppDists' was built under R version 4.2.3
##
## Attaching package: 'kSamples'
## The following object is masked from 'package:nortest':
##
## ad.test
library(VineCopula)
## Warning: package 'VineCopula' was built under R version 4.2.3
library(FinTS)
## Warning: package 'FinTS' was built under R version 4.2.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.2.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(goftest)
##
## Attaching package: 'goftest'
## The following object is masked from 'package:kSamples':
##
## ad.test
## The following objects are masked from 'package:nortest':
##
## ad.test, cvm.test
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'ggplot2' was built under R version 4.2.3
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'tidyr' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'purrr' was built under R version 4.2.3
## Warning: package 'stringr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## Warning: package 'lubridate' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.4
## ✔ ggplot2 3.4.2 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.2.1
## ✔ purrr 1.0.1 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ purrr::reduce() masks rugarch::reduce()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
vnindex1 <- read_excel("C:/Users/dell/Downloads/VN Index Historical Data before covid 19 - Copy (2).xlsx")
nas1 <- read_excel("C:/Users/dell/Downloads/NASDAQ Composite Historical Data before covid.xlsx",
col_types = c("date", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric"))
#Mô tả thống kê và kiểm định thống kê ## vni ### Chuỗi lợi suất vni
pricevni <- as.numeric(gsub(",", "", vnindex1$Price))
returnvni <- rev(diff(log(vnindex1$Price)))
vnindex1 %>% summarise(Min = min(returnvni),
Max = max(returnvni),
Mean = mean(returnvni),
StDev = sd(returnvni),
Skewness = skewness(returnvni),
Kurtosis = kurtosis(returnvni))
## # A tibble: 1 × 6
## Min Max Mean StDev Skewness Kurtosis
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 -0.157 0.0770 0.000322 0.0291 -1.43 8.56
adf.test(returnvni)
## Warning in adf.test(returnvni): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: returnvni
## Dickey-Fuller = -4.585, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
jarque.bera.test(returnvni)
##
## Jarque Bera Test
##
## data: returnvni
## X-squared = 252.71, df = 2, p-value < 2.2e-16
Box.test(returnvni, lag = 2, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: returnvni
## X-squared = 4.2348, df = 2, p-value = 0.1203
Box.test(returnvni, lag = 2, type = "Box-Pierce")
##
## Box-Pierce test
##
## data: returnvni
## X-squared = 4.153, df = 2, p-value = 0.1254
pricenas <- as.numeric(gsub(",", "", nas1$Price))
returnnas <- rev(diff(log(nas1$Price)))
nas1 %>% summarise(Min = min(returnnas),
Max = max(returnnas),
Mean = mean(returnnas),
StDev = sd(returnvni),
Skewness = skewness(returnnas),
Kurtosis = kurtosis(returnnas))
## # A tibble: 1 × 6
## Min Max Mean StDev Skewness Kurtosis
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 -0.135 0.101 0.00370 0.0291 -0.822 6.50
adf.test(returnnas)
## Warning in adf.test(returnnas): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: returnnas
## Dickey-Fuller = -5.5271, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
jarque.bera.test(returnnas)
##
## Jarque Bera Test
##
## data: returnnas
## X-squared = 96.384, df = 2, p-value < 2.2e-16
Box.test(returnnas, lag = 2, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: returnnas
## X-squared = 0.78419, df = 2, p-value = 0.6756
Box.test(returnnas, lag = 2, type = "Box-Pierce")
##
## Box-Pierce test
##
## data: returnnas
## X-squared = 0.76598, df = 2, p-value = 0.6818
cor(returnvni,returnnas, method = "pearson")
## [1] 0.501605
cor(returnvni,returnnas, method = "spearman")
## [1] 0.3488511
cor(returnvni,returnnas, method = "kendall")
## [1] 0.2444072
b.archTest <- ArchTest(returnvni, lags = 1, demean = TRUE)
c.archTest <- ArchTest(returnnas, lags = 1, demean = TRUE)
b.archTest
##
## ARCH LM-test; Null hypothesis: no ARCH effects
##
## data: returnvni
## Chi-squared = 2.4462, df = 1, p-value = 0.1178
c.archTest
##
## ARCH LM-test; Null hypothesis: no ARCH effects
##
## data: returnnas
## Chi-squared = 14.77, df = 1, p-value = 0.0001215
vni1.ts <- ts(vnindex1[,2])
autoarfima(vni1.ts,ar.max = 2, ma.max = 2, criterion = "AIC", method = "full")
## $fit
##
## *----------------------------------*
## * ARFIMA Model Fit *
## *----------------------------------*
## Mean Model : ARFIMA(2,0,2)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 1052.61424 0.086322 12193.98 0
## ar1 0.00000 NA NA NA
## ar2 0.89746 0.000093 9643.79 0
## ma1 1.21500 0.000028 43330.51 0
## ma2 0.16715 0.000017 9663.71 0
## sigma 26.17220 0.049855 524.97 0
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 1052.61424 3.997158 263.3407 0
## ar1 0.00000 NA NA NA
## ar2 0.89746 0.001647 545.0655 0
## ma1 1.21500 0.000675 1800.9707 0
## ma2 0.16715 0.000318 524.8398 0
## sigma 26.17220 3.001580 8.7195 0
##
## LogLikelihood : -724.0088
##
## Information Criteria
## ------------------------------------
##
## Akaike 9.3463
## Bayes 9.4440
## Shibata 9.3443
## Hannan-Quinn 9.3860
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.07753 0.7807
## Lag[2*(p+q)+(p+q)-1][11] 4.10340 0.9998
## Lag[4*(p+q)+(p+q)-1][19] 7.76131 0.8261
##
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 1.069 0.3012
## Lag[2*(p+q)+(p+q)-1][2] 2.581 0.1823
## Lag[4*(p+q)+(p+q)-1][5] 3.574 0.3122
##
##
## ARCH LM Tests
## ------------------------------------
## Statistic DoF P-Value
## ARCH Lag[2] 3.677 2 0.1590
## ARCH Lag[5] 3.277 5 0.6574
## ARCH Lag[10] 5.407 10 0.8623
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 8.1332
## Individual Statistics:
## mu 0.01449
## ar2 0.01425
## ma1 0.01462
## ma2 0.01461
## sigma 0.21275
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.28 1.47 1.88
## Individual Statistic: 0.35 0.47 0.75
##
##
## Elapsed time : 0.05879498
##
##
## $rank.matrix
## ar1 ar2 ma1 ma2 im arf AIC converged
## 1 0 1 1 1 1 0 9.346267 1
## 2 1 0 1 0 1 0 9.427842 1
## 3 1 1 0 0 1 0 9.431364 1
## 4 0 1 1 0 1 0 9.438511 1
## 5 1 1 1 0 1 0 9.439112 1
## 6 1 0 1 1 1 0 9.439254 1
## 7 1 1 0 1 1 0 9.439811 1
## 8 1 0 0 0 1 0 9.442138 1
## 9 1 1 1 1 1 0 9.449600 1
## 10 1 0 0 1 1 0 9.453592 1
## 11 0 1 0 0 1 0 10.250550 1
## 12 0 0 1 1 1 0 10.256259 1
## 13 0 1 0 1 1 0 10.259284 1
## 14 0 0 1 0 1 0 10.784204 1
## 15 0 0 0 1 1 0 10.941781 1
## 16 0 0 0 0 1 0 11.808644 1
## 17 1 0 0 0 0 0 11.835223 1
## 18 1 0 0 1 0 0 11.843648 1
## 19 1 0 1 0 0 0 11.846330 1
## 20 1 0 1 1 0 0 11.854876 1
## 21 1 1 0 0 0 0 12.495969 1
## 22 1 1 1 0 0 0 12.507311 1
## 23 1 1 0 1 0 0 12.508431 1
## 24 1 1 1 1 0 0 12.520131 1
## 25 0 1 1 0 0 0 12.554815 1
## 26 0 1 0 0 0 0 12.560957 1
## 27 0 1 0 1 0 0 12.565732 1
## 28 0 1 1 1 0 0 12.567459 1
## 29 0 0 1 1 0 0 14.448822 1
## 30 0 0 1 0 0 0 15.338941 1
## 31 0 0 0 1 0 0 15.378431 1
vnindex1.garch11n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
vnindex1.garch11n.fit <- ugarchfit(spec = vnindex1.garch11n.spec, data = vni1.ts)
vnindex1.garch11t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
vnindex1.garch11t.fit <- ugarchfit(spec = vnindex1.garch11t.spec, data = vni1.ts)
vnindex1.garch11st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
vnindex1.garch11st.fit <- ugarchfit(spec = vnindex1.garch11st.spec, data = vni1.ts)
vnindex1.garch11g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
vnindex1.garch11g.fit <- ugarchfit(spec = vnindex1.garch11g.spec, data = vni1.ts)
vnindex1.garch11sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
vnindex1.garch11sg.fit <- ugarchfit(spec = vnindex1.garch11sg.spec, data = vni1.ts)
####GJR-GARCH(12)VNI
vnindex1.garch12n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
vnindex1.garch12n.fit <- ugarchfit(spec = vnindex1.garch12n.spec, data = vni1.ts)
vnindex1.garch12t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
vnindex1.garch12t.fit <- ugarchfit(spec = vnindex1.garch12t.spec, data = vni1.ts)
vnindex1.garch12st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
vnindex1.garch12st.fit <- ugarchfit(spec = vnindex1.garch12st.spec, data = vni1.ts)
vnindex1.garch12g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
vnindex1.garch12g.fit <- ugarchfit(spec = vnindex1.garch12g.spec, data = vni1.ts)
vnindex1.garch12sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
vnindex1.garch12sg.fit <- ugarchfit(spec = vnindex1.garch12sg.spec, data = vni1.ts)
vnindex1.garch21n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
vnindex1.garch21n.fit <- ugarchfit(spec = vnindex1.garch21n.spec, data = vni1.ts)
vnindex1.garch21t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
vnindex1.garch21t.fit <- ugarchfit(spec = vnindex1.garch21t.spec, data = vni1.ts)
vnindex1.garch21st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
vnindex1.garch21st.fit <- ugarchfit(spec = vnindex1.garch21st.spec, data = vni1.ts)
vnindex1.garch21g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
vnindex1.garch21g.fit <- ugarchfit(spec = vnindex1.garch21g.spec, data = vni1.ts)
vnindex1.garch21sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
vnindex1.garch21sg.fit <- ugarchfit(spec = vnindex1.garch21sg.spec, data = vni1.ts)
####GJR-GARCH(22)VNI
vnindex1.garch22n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
vnindex1.garch22n.fit <- ugarchfit(spec = vnindex1.garch22n.spec, data = vni1.ts)
vnindex1.garch22t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
vnindex1.garch22t.fit <- ugarchfit(spec = vnindex1.garch22t.spec, data = vni1.ts)
vnindex1.garch22st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
vnindex1.garch22st.fit <- ugarchfit(spec = vnindex1.garch22st.spec, data = vni1.ts)
vnindex1.garch22g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
vnindex1.garch22g.fit <- ugarchfit(spec = vnindex1.garch22g.spec, data = vni1.ts)
vnindex1.garch22sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
vnindex1.garch22sg.fit <- ugarchfit(spec = vnindex1.garch22sg.spec, data = vni1.ts)
nas1.ts <- ts(nas1)
autoarfima(nas1.ts[,2],ar.max = 2, ma.max = 2, criterion = "AIC", method = "full")
## $fit
##
## *----------------------------------*
## * ARFIMA Model Fit *
## *----------------------------------*
## Mean Model : ARFIMA(1,0,0)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 7333.7874 294.821069 24.875 0
## ar1 0.9901 0.013002 76.148 0
## sigma 271.9979 16.099980 16.894 0
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 7333.7874 193.096545 37.9799 0
## ar1 0.9901 0.021752 45.5181 0
## sigma 271.9979 39.618529 6.8654 0
##
## LogLikelihood : -1095.862
##
## Information Criteria
## ------------------------------------
##
## Akaike 14.088
## Bayes 14.147
## Shibata 14.087
## Hannan-Quinn 14.112
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.02689 0.8697
## Lag[2*(p+q)+(p+q)-1][2] 0.19934 0.9988
## Lag[4*(p+q)+(p+q)-1][5] 1.70432 0.7941
##
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 7.765 5.328e-03
## Lag[2*(p+q)+(p+q)-1][2] 8.821 3.920e-03
## Lag[4*(p+q)+(p+q)-1][5] 32.261 7.278e-09
##
##
## ARCH LM Tests
## ------------------------------------
## Statistic DoF P-Value
## ARCH Lag[2] 8.186 2 1.669e-02
## ARCH Lag[5] 39.595 5 1.802e-07
## ARCH Lag[10] 43.649 10 3.806e-06
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 2.2129
## Individual Statistics:
## mu 0.5564
## ar1 0.1888
## sigma 1.3721
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 0.846 1.01 1.35
## Individual Statistic: 0.35 0.47 0.75
##
##
## Elapsed time : 0.04453897
##
##
## $rank.matrix
## ar1 ar2 ma1 ma2 im arf AIC converged
## 1 1 0 0 0 1 0 14.08797 1
## 2 0 1 1 0 1 0 14.09411 1
## 3 1 0 0 1 1 0 14.09504 1
## 4 1 1 0 0 1 0 14.09999 1
## 5 1 0 1 0 1 0 14.10053 1
## 6 0 1 1 1 1 0 14.10502 1
## 7 1 1 0 1 1 0 14.10705 1
## 8 1 1 1 0 1 0 14.10711 1
## 9 1 0 1 1 1 0 14.10785 1
## 10 1 1 1 1 1 0 14.12094 1
## 11 0 1 0 1 1 0 14.78199 1
## 12 0 1 0 0 1 0 14.78675 1
## 13 0 0 1 1 1 0 15.72436 1
## 14 1 0 0 0 0 0 15.82121 1
## 15 1 0 0 1 0 0 15.82932 1
## 16 1 0 1 0 0 0 15.83202 1
## 17 1 0 1 1 0 0 15.84035 1
## 18 1 1 0 0 0 0 16.42643 1
## 19 1 1 0 1 0 0 16.43899 1
## 20 1 1 1 0 0 0 16.43899 1
## 21 1 1 1 1 0 0 16.45174 1
## 22 0 0 1 0 1 0 16.45816 1
## 23 0 0 0 1 1 0 16.50469 1
## 24 0 1 1 0 0 0 16.52391 1
## 25 0 1 1 1 0 0 16.53628 1
## 26 0 1 0 0 0 0 16.55070 1
## 27 0 1 0 1 0 0 16.55415 1
## 28 0 0 0 0 1 0 17.52963 1
## 29 0 0 1 1 0 0 18.75679 1
## 30 0 0 1 0 0 0 19.72188 1
## 31 0 0 0 1 0 0 19.76278 1
nas1.garch11n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
nas1.garch11n.fit <- ugarchfit(spec = nas1.garch11n.spec, data = nas1.ts[,2])
nas1.garch11t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
nas1.garch11t.fit <- ugarchfit(spec = nas1.garch11t.spec, data = nas1.ts[,2])
nas1.garch11st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
nas1.garch11st.fit <- ugarchfit(spec = nas1.garch11st.spec, data = nas1.ts[,2])
nas1.garch11g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
nas1.garch11g.fit <- ugarchfit(spec = nas1.garch11g.spec, data = nas1.ts[,2])
nas1.garch11sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
nas1.garch11sg.fit <- ugarchfit(spec = nas1.garch11sg.spec, data = nas1.ts[,2])
nas1.garch12n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
nas1.garch12n.fit <- ugarchfit(spec = nas1.garch12n.spec, data = nas1.ts[,2])
nas1.garch12t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
nas1.garch12t.fit <- ugarchfit(spec = nas1.garch12t.spec, data = nas1.ts[,2])
nas1.garch12st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
nas1.garch12st.fit <- ugarchfit(spec = nas1.garch12st.spec, data = nas1.ts[,2])
nas1.garch12g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
nas1.garch12g.fit <- ugarchfit(spec = nas1.garch12g.spec, data = nas1.ts[,2])
nas1.garch12sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
nas1.garch12sg.fit <- ugarchfit(spec = nas1.garch12sg.spec, data = nas1.ts[,2])
nas1.garch21n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
nas1.garch21n.fit <- ugarchfit(spec = nas1.garch21n.spec, data = nas1.ts[,2])
nas1.garch21t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
nas1.garch21t.fit <- ugarchfit(spec = nas1.garch21t.spec, data = nas1.ts[,2])
nas1.garch21st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
nas1.garch21st.fit <- ugarchfit(spec = nas1.garch21st.spec, data = nas1.ts[,2])
nas1.garch21g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
nas1.garch21g.fit <- ugarchfit(spec = nas1.garch21g.spec, data = nas1.ts[,2])
nas1.garch21sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
nas1.garch21sg.fit <- ugarchfit(spec = nas1.garch21sg.spec, data = nas1.ts[,2])
nas1.garch22n.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
nas1.garch22n.fit <- ugarchfit(spec = nas1.garch22n.spec, data = nas1.ts[,2])
nas1.garch22t.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
nas1.garch22t.fit <- ugarchfit(spec = nas1.garch22t.spec, data = nas1.ts[,2])
nas1.garch22st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
nas1.garch22st.fit <- ugarchfit(spec = nas1.garch22st.spec, data = nas1.ts[,2])
nas1.garch22g.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
nas1.garch22g.fit <- ugarchfit(spec = nas1.garch22g.spec, data = nas1.ts[,2])
nas1.garch22sg.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
nas1.garch22sg.fit <- ugarchfit(spec = nas1.garch22sg.spec, data = nas1.ts[,2])
###VNINDEX
vni1.model.list <- list(garch11n = vnindex1.garch11n.fit, garch11t = vnindex1.garch11t.fit, garch11st = vnindex1.garch11st.fit, garch11g = vnindex1.garch11g.fit, garch11sg = vnindex1.garch11sg.fit, garch12n = vnindex1.garch12n.fit, garch12t = vnindex1.garch12t.fit, garch12st = vnindex1.garch12st.fit, garch12g = vnindex1.garch12g.fit, garch12sg = vnindex1.garch12sg.fit, garch21n = vnindex1.garch21n.fit, garch21t = vnindex1.garch21t.fit, garch21st = vnindex1.garch21st.fit, garch21g = vnindex1.garch21g.fit, garch21sg = vnindex1.garch21sg.fit, garch22n = vnindex1.garch22n.fit, garch22t = vnindex1.garch22t.fit, garch22st = vnindex1.garch22st.fit, garch22g =vnindex1.garch22g.fit, garch22sg = vnindex1.garch22sg.fit)
vni1.info.mat <- sapply(vni1.model.list, infocriteria)
rownames(vni1.info.mat) <- rownames(infocriteria(vnindex1.garch11n.fit))
vni1.info.mat
## garch11n garch11t garch11st garch11g garch11sg garch12n garch12t
## Akaike 9.353430 9.199591 9.149415 9.165301 9.156282 9.379804 9.203908
## Bayes 9.529383 9.395094 9.364469 9.360805 9.371336 9.575307 9.418962
## Shibata 9.347244 9.192013 9.140317 9.157724 9.147184 9.372226 9.194809
## Hannan-Quinn 9.424894 9.278996 9.236761 9.244707 9.243628 9.459209 9.291253
## garch12st garch12g garch12sg garch21n garch21t garch21st garch21g
## Akaike 9.160452 9.294489 9.168194 9.273906 9.224143 9.162807 9.246666
## Bayes 9.395056 9.509543 9.402799 9.488960 9.458748 9.416962 9.481270
## Shibata 9.149706 9.285391 9.157449 9.264808 9.213398 9.150291 9.235921
## Hannan-Quinn 9.255738 9.381835 9.263480 9.361252 9.319429 9.266034 9.341952
## garch21sg garch22n garch22t garch22st garch22g garch22sg
## Akaike 9.172903 9.236360 9.174219 9.133942 9.226856 9.148142
## Bayes 9.427058 9.470964 9.428374 9.407647 9.481011 9.421847
## Shibata 9.160387 9.225615 9.161703 9.119535 9.214340 9.133734
## Hannan-Quinn 9.276130 9.331646 9.277446 9.245109 9.330083 9.259309
vni1.inds <- which(vni1.info.mat == min(vni1.info.mat), arr.ind=TRUE)
model.vni1 <- colnames(vni1.info.mat)[vni1.inds[,2]]
model.vni1
## [1] "garch22st"
###Nasdaq
nas1.model.list <- list(garch11n = nas1.garch11n.fit, garch11t = nas1.garch11t.fit, garch11st = nas1.garch11st.fit, garch11g = nas1.garch11g.fit, garch11sg = nas1.garch11sg.fit, garch12n = nas1.garch12n.fit, garch12t = nas1.garch12t.fit, garch12st = nas1.garch12st.fit, garch12g = nas1.garch12g.fit, garch12sg = nas1.garch12sg.fit, garch21n = nas1.garch21n.fit, garch21t = nas1.garch21t.fit, garch21st = nas1.garch21st.fit, garch21g = nas1.garch21g.fit, garch21sg = nas1.garch21sg.fit, garch22n = nas1.garch22n.fit, garch22t = nas1.garch22t.fit, garch22st = nas1.garch22st.fit, garch22g =nas1.garch22g.fit, garch22sg = nas1.garch22sg.fit)
nas1.info.mat <- sapply(nas1.model.list, infocriteria)
rownames(nas1.info.mat) <- rownames(infocriteria(nas1.garch11n.fit))
nas1.info.mat
## garch11n garch11t garch11st garch11g garch11sg garch12n garch12t
## Akaike 13.76652 13.76548 13.52247 14.04103 14.02723 13.74802 13.78930
## Bayes 13.94247 13.96098 13.73752 14.23653 14.24228 13.94352 14.00435
## Shibata 13.76034 13.75790 13.51337 14.03345 14.01813 13.74044 13.78020
## Hannan-Quinn 13.83799 13.84488 13.60981 14.12043 14.11457 13.82742 13.87665
## garch12st garch12g garch12sg garch21n garch21t garch21st garch21g
## Akaike 13.49310 14.04940 14.03457 13.73554 13.74472 13.51318 13.74490
## Bayes 13.72770 14.26445 14.26917 13.95059 13.97933 13.76734 13.97950
## Shibata 13.48235 14.04030 14.02382 13.72644 13.73398 13.50067 13.73415
## Hannan-Quinn 13.58838 14.13674 14.12985 13.82289 13.84001 13.61641 13.84018
## garch21sg garch22n garch22t garch22st garch22g garch22sg
## Akaike 14.00925 13.74416 13.76110 13.52321 14.03200 14.02206
## Bayes 14.26340 13.97876 14.01526 13.79692 14.28615 14.29576
## Shibata 13.99673 13.73341 13.74859 13.50881 14.01948 14.00765
## Hannan-Quinn 14.11247 13.83944 13.86433 13.63438 14.13523 14.13322
nas1.inds <- which(nas1.info.mat == min(nas1.info.mat), arr.ind=TRUE)
model.nas1 <- colnames(nas1.info.mat)[nas1.inds[,2]]
model.nas1
## [1] "garch12st"
#THAM SỐ ƯỚC LƯỢNG MÔ HÌNH BIÊN PHÙ HỢP NHẤT
vnindex1.garch22st.fit
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(2,2)
## Mean Model : ARFIMA(2,0,2)
## Distribution : sstd
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 1029.186861 5.993765 171.709588 0.000000
## ar1 0.128745 0.037021 3.477585 0.000506
## ar2 0.816294 0.040988 19.915559 0.000000
## ma1 0.908713 0.085296 10.653648 0.000000
## ma2 0.003600 0.047611 0.075605 0.939734
## omega 122.754357 61.486616 1.996440 0.045886
## alpha1 0.000000 0.334584 0.000000 1.000000
## alpha2 0.671880 0.324912 2.067885 0.038651
## beta1 0.028007 0.298911 0.093696 0.925351
## beta2 0.267708 0.173885 1.539567 0.123666
## gamma1 0.189431 0.326126 0.580853 0.561339
## gamma2 -0.420081 0.374740 -1.120994 0.262290
## skew 0.550500 0.078706 6.994363 0.000000
## shape 7.539318 3.960613 1.903574 0.056966
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 1029.186861 5.485497 187.619627 0.000000
## ar1 0.128745 0.081858 1.572779 0.115770
## ar2 0.816294 0.087313 9.349000 0.000000
## ma1 0.908713 0.099971 9.089722 0.000000
## ma2 0.003600 0.072003 0.049993 0.960128
## omega 122.754357 97.581437 1.257968 0.208403
## alpha1 0.000000 0.719882 0.000000 1.000000
## alpha2 0.671880 0.389833 1.723507 0.084797
## beta1 0.028007 0.627507 0.044632 0.964401
## beta2 0.267708 0.294959 0.907611 0.364084
## gamma1 0.189431 0.746295 0.253829 0.799628
## gamma2 -0.420081 0.611648 -0.686802 0.492208
## skew 0.550500 0.110385 4.987107 0.000001
## shape 7.539318 4.285178 1.759394 0.078511
##
## LogLikelihood : -698.4475
##
## Information Criteria
## ------------------------------------
##
## Akaike 9.1339
## Bayes 9.4076
## Shibata 9.1195
## Hannan-Quinn 9.2451
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.03692 0.8476
## Lag[2*(p+q)+(p+q)-1][11] 4.69054 0.9898
## Lag[4*(p+q)+(p+q)-1][19] 7.99909 0.7944
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.7553 0.38481
## Lag[2*(p+q)+(p+q)-1][11] 12.1087 0.03591
## Lag[4*(p+q)+(p+q)-1][19] 16.4154 0.05723
## d.o.f=4
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[5] 0.5711 0.500 2.000 0.449820
## ARCH Lag[7] 11.2776 1.473 1.746 0.004564
## ARCH Lag[9] 12.7028 2.402 1.619 0.006709
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 3.307
## Individual Statistics:
## mu 0.005592
## ar1 0.024039
## ar2 0.127799
## ma1 0.283500
## ma2 0.118270
## omega 0.063298
## alpha1 0.208911
## alpha2 0.091608
## beta1 0.086257
## beta2 0.040365
## gamma1 0.240943
## gamma2 0.268203
## skew 0.619664
## shape 0.319168
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 3.08 3.34 3.9
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.2535 0.8002
## Negative Sign Bias 0.7708 0.4421
## Positive Sign Bias 1.1056 0.2706
## Joint Effect 1.8244 0.6096
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 18.10 0.5156
## 2 30 31.31 0.3511
## 3 40 31.69 0.7907
## 4 50 51.05 0.3930
##
##
## Elapsed time : 1.380196
nas1.garch12st.fit
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,2)
## Mean Model : ARFIMA(2,0,2)
## Distribution : sstd
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 7099.658893 0.949105 7480.374914 0.00000
## ar1 0.464330 0.000230 2022.800594 0.00000
## ar2 0.596498 0.000265 2251.217483 0.00000
## ma1 0.384217 0.000188 2042.920695 0.00000
## ma2 -0.165991 0.000215 -772.627225 0.00000
## omega 2533.156155 2.690003 941.692763 0.00000
## alpha1 0.000000 0.000034 0.000025 0.99998
## beta1 0.436595 0.000227 1926.591042 0.00000
## beta2 0.332708 0.000182 1831.992302 0.00000
## gamma1 0.287820 0.000189 1518.976315 0.00000
## skew 0.010325 0.001145 9.015977 0.00000
## shape 9.619021 0.009433 1019.684489 0.00000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 7099.658893 1.249102 5683.81184 0.00000
## ar1 0.464330 0.000377 1231.84597 0.00000
## ar2 0.596498 0.000372 1601.76639 0.00000
## ma1 0.384217 0.000226 1702.02655 0.00000
## ma2 -0.165991 0.000254 -652.94561 0.00000
## omega 2533.156155 1.754235 1444.02355 0.00000
## alpha1 0.000000 0.000014 0.00006 0.99995
## beta1 0.436595 0.000107 4081.06725 0.00000
## beta2 0.332708 0.000102 3264.22682 0.00000
## gamma1 0.287820 0.000175 1648.63485 0.00000
## skew 0.010325 0.000775 13.32676 0.00000
## shape 9.619021 0.008264 1163.95576 0.00000
##
## LogLikelihood : -1040.462
##
## Information Criteria
## ------------------------------------
##
## Akaike 13.493
## Bayes 13.728
## Shibata 13.482
## Hannan-Quinn 13.588
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 2.495 0.1142
## Lag[2*(p+q)+(p+q)-1][11] 4.562 0.9950
## Lag[4*(p+q)+(p+q)-1][19] 7.213 0.8884
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.03268 0.8565
## Lag[2*(p+q)+(p+q)-1][8] 0.84113 0.9837
## Lag[4*(p+q)+(p+q)-1][14] 1.45864 0.9978
## d.o.f=3
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[4] 0.2704 0.500 2.000 0.6030
## ARCH Lag[6] 0.5037 1.461 1.711 0.8910
## ARCH Lag[8] 0.5332 2.368 1.583 0.9792
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 35.0192
## Individual Statistics:
## mu 0.9820
## ar1 0.1762
## ar2 0.1185
## ma1 0.1876
## ma2 0.2117
## omega 0.6380
## alpha1 0.3231
## beta1 0.3881
## beta2 0.3849
## gamma1 0.6609
## skew 0.9760
## shape 0.7905
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 2.69 2.96 3.51
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 1.46877 0.1440
## Negative Sign Bias 0.28027 0.7797
## Positive Sign Bias 0.07618 0.9394
## Joint Effect 4.13621 0.2471
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 14.77 0.7371
## 2 30 37.85 0.1258
## 3 40 40.92 0.3861
## 4 50 60.03 0.1344
##
##
## Elapsed time : 1.244629
#KIỂM ĐỊNH SỰ PHÙ HỢP CỦA MÔ HÌNH BIÊN
##Trích xuất chuỗi phần dư u của chuỗi NASDAQ
nas1.res <- residuals(nas1.garch21sg.fit)/sigma(nas1.garch21sg.fit)
fitdist(distribution = "sged", nas1.res, control = list())
## Warning in .safefunx(tmpv, .solnp_fun, .env, ...):
## solnp-->warning: NaN detected in function call...check your function
## $pars
## mu sigma skew shape
## -0.06552626 1.12758105 0.84062836 0.86373917
##
## $convergence
## [1] 0
##
## $values
## [1] 243.5232 219.4774 219.4774
##
## $lagrange
## [1] 0
##
## $hessian
## [,1] [,2] [,3] [,4]
## [1,] 4027595.3 920437.67 -6741570.4 367775.24
## [2,] 920437.7 210461.22 -1540635.5 84092.81
## [3,] -6741570.4 -1540635.55 11284770.9 -615599.77
## [4,] 367775.2 84092.81 -615599.8 33680.90
##
## $ineqx0
## NULL
##
## $nfuneval
## [1] 176
##
## $outer.iter
## [1] 2
##
## $elapsed
## Time difference of 0.03621006 secs
##
## $vscale
## [1] 1 1 1 1 1
u <-pdist(distribution = "sged", q = nas1.res, mu = -0.06552626 , sigma = 1.12758105 , skew=0.84062836, shape= 0.86373917)
##Trích xuất chuỗi phần dư v của chuỗi VNI
vni1.res <- residuals(vnindex1.garch11sg.fit)/sigma(vnindex1.garch11sg.fit)
fitdist(distribution = "sged", vni1.res, control = list())
## $pars
## mu sigma skew shape
## -0.01375835 1.04473982 0.62022477 1.06838240
##
## $convergence
## [1] 0
##
## $values
## [1] 228.8834 206.0694 206.0694
##
## $lagrange
## [1] 0
##
## $hessian
## [,1] [,2] [,3] [,4]
## [1,] 2370.9077 1382.0762 -3223.3166 409.0343
## [2,] 1382.0762 954.6693 -1809.2064 281.2144
## [3,] -3223.3166 -1809.2064 5033.1383 -534.1669
## [4,] 409.0343 281.2144 -534.1669 113.8131
##
## $ineqx0
## NULL
##
## $nfuneval
## [1] 112
##
## $outer.iter
## [1] 2
##
## $elapsed
## Time difference of 0.0303359 secs
##
## $vscale
## [1] 1 1 1 1 1
v <-pdist("sged",vni1.res, mu = -0.01375835, sigma = 1.04473982 , skew= 0.62022477, shape = 1.06838240)
ad.test(u, "punif")
##
## Anderson-Darling test of goodness-of-fit
## Null hypothesis: uniform distribution
## Parameters assumed to be fixed
##
## data: u
## An = 0.57981, p-value = 0.667
ad.test(v, "punif")
##
## Anderson-Darling test of goodness-of-fit
## Null hypothesis: uniform distribution
## Parameters assumed to be fixed
##
## data: v
## An = 0.70958, p-value = 0.5506
cvm.test(u, "punif")
##
## Cramer-von Mises test of goodness-of-fit
## Null hypothesis: uniform distribution
## Parameters assumed to be fixed
##
## data: u
## omega2 = 0.064377, p-value = 0.7872
cvm.test(v, "punif")
##
## Cramer-von Mises test of goodness-of-fit
## Null hypothesis: uniform distribution
## Parameters assumed to be fixed
##
## data: v
## omega2 = 0.13246, p-value = 0.4482
ks.test(u, "punif")
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: u
## D = 0.059943, p-value = 0.6294
## alternative hypothesis: two-sided
ks.test(v, "punif")
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: v
## D = 0.061457, p-value = 0.5976
## alternative hypothesis: two-sided
BiCopSelect(u, v, familyset= NA, selectioncrit="AIC",indeptest = FALSE, level = 0.05)
## Bivariate copula: Clayton (par = 0.54, tau = 0.21)
Stu <- BiCopEst(u, v, family = 23, method = "mle", se = T, max.df = 10)
summary(Stu)
## Family
## ------
## No: 23
## Name: Rotated Clayton 90 degrees
##
## Parameter(s)
## ------------
## par: 0 (SE = 0.1)
##
## Dependence measures
## -------------------
## Kendall's tau: 0 (empirical = 0.22, p value < 0.01)
## Upper TD: 0
## Lower TD: 0
##
## Fit statistics
## --------------
## logLik: -0.01
## AIC: 2.02
## BIC: 5.06