Thị trường chứng khoán (TTCK) ngày càng khẳng định vai trò quan trọng trong nền kinh tế, là kênh dẫn vốn quan trọng và là kênh đầu tư đầy tiềm năng của các nhà đầu tư, đồng thời là một bộ phận của nền kinh tế thị trường, đồng thời là một chỉ báo quan trọng để đánh giá và dự báo tình hình nền kinh tế, thị trường tại thời điểm giá chứng khoán thay đổi thông qua chỉ số giá chứng khoán. Chính vì bản chất phòng ngừa được rủi ro mà phần lớn các quốc gia có thị trường tài chính phát triển đều ưu tiên xây dựng và phát triển thị trường chứng khoán như một thành phần trong cấu trúc thị trường tổng thể. Có thể nói, TTCK phái sinh đã từng bước trở thành công cụ phòng ngừa rủi ro cho các nhà đầu tư. Khi giá chứng khoán tăng các nhà đầu tư kỳ vọng và đẩy mạnh vốn gia nhập TTCK, các doanh nghiệp dễ dàng huy động vốn, mở rộng sản xuất để từ đó nền kinh tế vĩ mô trở nên tích cực. Ngược lại, một khi TTCK bị rung lắc mạnh mẽ, giá chứng khoán có đà giảm mạnh, niềm tin của các nhà đầu tư bị lung lay và có xu hướng rút vốn ra khỏi thị trường để tìm đến các kênh đầu tư khác, lúc này các doanh nghiệp gặp khó khăn trong việc huy động vốn, nền kinh tế cũng bị ảnh hưởng không ít. Trải qua hơn 25 năm hoạt động, TTCK Việt Nam ngày càng đóng vai trò quan trọng trong sự phát triển ngành tài chính nước ta, đồng thời góp phần hoàn thiện cơ cấu thị trường tài chính, trở thành kênh huy động vốn quan trọng cho nền kinh tế trong và cả ngoài nước
Bên cạnh thị trường chứng khoán cơ sở, giá dầu thô luôn nhận được sự quan tâm mạnh mẽ, là một trong những nguyên liệu đầu vào quan trọng của hầu hết các ngành công nghiệp. Sự thay đổi của giá dầu tác động đến nền kinh tế và TTCK của một số quốc gia, trong đó có nền kinh tế Việt Nam. Mặc dù Việt Nam là quốc gia khai thác dầu mỏ và có hoạt động xuất khẩu dầu thô, song vẫn phải nhập một lượng dầu thô rất lớn đáp ứng nhu cầu lọc dầu phục vụ nhu cầu sử dụng trong nước. Chính vì điều này giá dầu thế giới cũng ảnh hưởng không ít đến xăng dầu tiêu thụ ở Việt Nam. Đặc biệt, giai đoạn đầu xung đột giữa Ukraina và Nga, nguồn cung dầu hạn chế khiến giá xăng, dầu trong nước tăng đột biến, điều này ảnh hưởng tiêu cực đến thị trường Việt Nam.
Mối quan hệ giữa giá dầu và thị trường chứng khoán đã và đang là vấn đề nghiên cứu quan trọng trong từng bối cảnh kinh tế và được nghiên cứu rộng rãi. Các tác giả K Sukcharoen, T Zohrabyan, D Leatham và X Wu (2014) cho thấy rằng giá dầu và chỉ số thị trường chứng khoán có sự phụ thuộc yếu của các quốc gia. Nghiên cứu của Cao Thị Hà Phương (2018) khẳng định tỷ suất sinh lợi chứng khoán Việt Nam chịu ảnh hưởng một phần dưới sự tác động của biến động giá dầu thế giới. Từ các nghiên cứu trên, giá dầu và chỉ số giá chứng khoán có mối liên hệ với nhau, từ đó VN30 - 30 cổ phiếu có chỉ số vốn hóa lớn (cổ phiếu bluechip) trên sàn HOSE cũng có thể có mối quan hệ tương tự. Chính vì vậy, bài tiểu luận này tiến hành thực hiện Nghiên cứu mối quan hệ giữa giá dầu thế giới và thị trường chứng khoán Việt Nam từ đó cung cấp mối quan hệ, hiểu rõ hơn về các biến động ảnh hưởng đến thị trường chứng khoán Việt Nam như thế nào để đưa ra các hoạch định sao cho phù hợp nhất.
Tìm hiểu và đưa ra các lí thuyết về chỉ số giá chứng khoán VN30 và giá dầu có mối tương quan như thế nào theo thời gian. Từ đó, xác định mô hình phù hợp với đề tài nghiên cứu và chỉ ra mối liên hệ giữa chúng.
Dựa trên các số liệu đã thu nhập và hệ thống lí luận, mục tiêu bài viết là tiến hành phân tích, đánh giá mối quan hệ để từ đó hiểu rõ hơn sự thay đổi của giá dầu, giá chứng khoán, dự báo giá và cung cấp cho các nhà đầu tư các thông tin. Dựa trên kết quả chạy mô hình và đưa ra kết luận.
Đối tượng nghiên cứu: là mối quan hệ giữa giá dầu và chứng khoán Việt Nam, cụ thể là giá dầu thô WTI và chỉ số VN30.
Phạm vi nghiên cứu:
Phạm vi nghiên cứu không gian: Nghiên cứu được phân tích tại thị trường Việt Nam và giá dầu thế giới.
Phạm vi nghiên cứu thời gian: Nghiên cứu được phân tích từ 01/2024 - 31/07/2024.
Dữ liệu nghiên cứu: Tác giả đã thu nhập số liệu giá dầu và giá VN30 từ các trang web uy tín về tài chính - đầu tư
Với dữ liệu chuỗi thời gian, nghiên cứu sử dụng các phương pháp phân tích thống kê mô tả, kết hợp phân tích sự biến động, mối quan hệ giữa 2 yếu tố thông qua mô hình ARCH - GARCH, mô hình COPULA. Từ đó đưa ra các giải pháp giúp các nhà đầu tư có thể có một cái nhìn tổng quát hơn về biến động giá dầu, sự thay đổi chỉ số giá VN30.
Ngoài các phần mục lục, danh mục từ viết tắt, danh mục hình và bảng, phụ lục và tài liệu tham khảo, bài tiểu luận được bố cục theo các chương sau:
Chương 1: Tổng quan về các vấn đề nghiên cứu
Chương 2: Cơ sở lí thuyết nghiên cứu
Chương 3: Thiết kế nghiên cứu
Chương 4: Kết quả mô hình nghiên cứu
Chương 5: Kết luận và đưa ra khuyến nghị
Tổng quan về thị trường chứng khoán
Thị trường chứng khoán là nơi diễn ra hoạt động trao đổi mua bán các loại chứng khoán ( trái phiếu, cổ phiếu…) và các sản phẩm tài chính giữa các nhà đầu tư thông qua các sàn giao dịch, đóng vai trò quan trọng trong việc huy động vốn, tăng dòng tiền cũng như trong nền kinh tế vĩ mô. Ngày nay, chứng khoán là một kênh đầu tư hấp dẫn được nhiều người quan tâm, tính đến cuối tháng 5/2024 gần 8% dân số có tài khoản chứng khoán. Cơ cấu của một thị trường chứng khoán bao gồm thị trường sơ cấp và thị trường thứ cấp.
Thị trường sơ cấp là nơi các chứng khoán mới được phát hành và bán lần đầu từ các công ty, trên thị trường này tổ chức phát hành sẽ nhận được tiền huy động vốn hay vay nợ từ các nhà đầu tư. Thị trường thứ cấp là thị trường mua đi bán lại các loại chứng khoán đã phát hành lần đầu ở thị trường sơ cấp, là nơi mà các nhà đầu tư cá nhân có thể tham gia giao dịch chứng khoán.
Thị trường chứng khoán đóng vai trò quan trọng đối với sự phát triển của nền kinh tế. Thông qua thị trường chứng khoán, Chính phủ dễ dàng tạo ra nguồn thu bù lỗ thâm hụt ngân sách và điều chỉnh lạm phát thông qua giao dịch mua bán trái phiếu, cổ phiếu; các doanh nghiệp huy động được nguồn vốn kinh doanh hiệu quả và đánh giá được hoạt động kinh doanh thông qua giá chứng khoán; riêng đối với nhà đầu tư, TTCK đem đến một kênh đầu tư đa dạng, ít rủi ro với sự quản lý của UBCK , độ thanh khoản cao và minh bạch.
Các chủ thể tham gia trên TTCK bao gồm các nhóm sau: chủ thể phát hành, chủ thể nhà đầu tư, chủ thể trung gian chứng khoán, chủ thể quản lí và giám sát và các tổ chức có liên quan đến TTCK.
Chứng khoán xuất hiện trên TTCK là các loại chứng khoán vốn (cổ phiếu, chứng chỉ quỹ), trái phiếu, chứng khoán phái sinh.
##
## 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
## Warning: package 'ggplot2' was built under R version 4.3.3
setwd("D:/AnhThu/MH")
library(xlsx)
a <- read.xlsx("D:/AnhThu/MH/VNIW.xlsx", sheetIndex = 1, header = T)
# vẽ đồ thị
a %>% ggplot(aes(x=DATE, y=VN30)) +
geom_line(color = "blue") +
labs(x = 'DATE', y = 'Điểm', title = 'Biểu đồ chỉ số giá VN30')Nhìn chung chỉ số giá VN30 đang ở trong xu hướng tăng trưởng khá ổn định từ đầu năm đến cuối tháng 7/2024. Sau đợt thị trường giảm điểm vào cuối tháng 4, chỉ số VN30 đã hồi phục trở lại và side way quanh vùng 1280 - 1300 điểm.
a %>% ggplot(aes(x=DATE, y=WTI)) +
geom_line(color = "blue") +
labs(x = 'DATE', y = 'USD', title = 'Biểu đồ giá dầu thô giai đoạn 01/2024 - 07/2024')Giá dầu 4 tháng đầu năm 2024 tăng trưởng mạnh mẽ, giá đạt đỉnh vượt 86 USD/thùng. Giá dầu sau đó có sự sụt giảm, song cũng dần quay trở lại do nhu cầu dầu thô vẫn còn khá cao. Nhìn chung, biểu đồ cho thấy giá dầu thô WTI di chuyển khá ổn định, điều này có ý nghĩa thị trường tương đối cân bằng giữa cung và cầu.
## Warning: package 'psych' was built under R version 4.3.3
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
summary_stat <- describe(aa)
summary_stat <- round(summary_stat[, c("n", "mean", "sd", "min", "max", "skew", "kurtosis")], 5)
colnames(summary_stat) <- c("Obs.", "Mean", "St. Dev.", "Min", "Max", "Skewness", "Kurtosis")
print(summary_stat)## Obs. Mean St. Dev. Min Max Skewness Kurtosis
## RVN30 142 0 0.00 -0.02 0.01 -0.77 3.30
## RWTI 142 0 0.01 -0.03 0.02 -0.25 1.31
Bảng trên trình bày thống kê mô tả cho chuỗi tỷ suất lợi nhuận của chỉ số VN30 và giá dầu. Kết quả tỷ suất lợi nhuận trung bình gần như bằng 0, điều này cho thấy rằng, lợi suất của VN30 và giá dầu có sự biến động cao. Sự biến động lợi suất giữa hai biến trên giống nhau vì có độ lệch chuẩn xấp xỉ bằng nhau (0.00 và 0.01). Độ lệch Skewness của tất cả các chuỗi lợi suất có giá trị âm, từ đó xác suất nhận được lợi nhuận âm sẽ cao hơn lợi nhuận dương. Giá trị độ nhọn Kutosis của RVN30 vượt quá 3 và của RWTI là 1.31, chứng tỏ tỷ suất lợi nhuận của giá dầu có độ biến động ổn định.
a %>% ggplot(aes(x=DATE, y=RVN30)) +
geom_line(color ='blue') +
labs(x = 'DATE', y = 'Độ biến động', title = 'Sự biến động của chuỗi RVN30 giai đoạn 01/2024 - 07/2024')a %>% ggplot(aes(x=DATE, y=RWTI)) +
geom_line(color ='blue') +
labs(x = 'DATE', y = 'Độ biến động', title = 'Sự biến động của tỷ suất sinh lời của giá dầu giai đoạn 01/2024 - 07/2024')Đặt giả thuyết:
H0: RVN30 theo phân phối chuẩn
H1: RVN30 không theo phân phối chuẩn
Kết quả của kiểm định giá trị chi-squared = 82.33 và p_value < 2.2e-16. Với mức ý nghĩa 95%. Kết quả p_value < 2.2e-16, nhỏ hơn alpha = 0.05. Bác bỏ H0, tỷ suất sinh lợi VN30 không tuân theo phân phối chuẩn
## Warning: package 'tseries' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
Đặt giả thuyết:
H0: RWTI theo phân phối chuẩn
H1: RWTI không theo phân phối chuẩn
Kết quả của kiểm định giá trị chi-squared = 12.534 và p_value = 0.001897. Với mức ý nghĩa 95%, kết quả p_value = 0.001897, nhỏ hơn alpha = 0.05. Bác bỏ H0, tỷ suất sinh lợi RWTI không tuân theo phân phối chuẩn
Kết quả kiểm định Jarque-Bera bác bỏ mạnh mẽ giả định phân phối chuẩn của hai chuỗi tỷ suất sinh lợi, như vậy phân phối của hai chuỗi lợi suất không tuân theo phân phối chuẩn. Để củng cố thêm, đồ thị QQ plot được sử dụng để kiểm định sự phân bố chuẩn của hàm phân phối xác suất.
## Warning: package 'ggpubr' was built under R version 4.3.3
## Warning in adf.test(a$RVN30): p-value smaller than printed p-value
## Warning in adf.test(a$RWTI): p-value smaller than printed p-value
Đặt giả thuyết
H0: Chuỗi không dừng
H1: Chuỗi dừng
Kết quả kiểm định Augmented Dickey–Fuller (ADF) cho thấy, tất cả các chuỗi lợi suất có tính dừng với giá trị p_value đều bằng 0.01 < alpha = 0.05
Đặt giả thuyết H0: Không có tương quan chuỗi Ljung-Box
H1: Có tương quan chuỗi Ljung-Box
Với giá trị của thống kê kiểm định (Q statistic) = 13.669 và giá trị p-value = 0.3224 > 0.05. Chấp nhận giả thuyết không có sự tự tương quan, chuỗi RVN30 không có sự tự tương quan
Với chuỗi RWTI giá trị của thống kê kiểm định (Q statistic) = 768.97 và giá trị p-value < 2.2e-16 < 0.05. Bác bỏ giả thuyết không có sự tự tương quan, chuỗi RWTI có sự tự tương quan
## Warning: package 'fGarch' was built under R version 4.3.3
## NOTE: Packages 'fBasics', 'timeDate', and 'timeSeries' are no longer
## attached to the search() path when 'fGarch' is attached.
##
## If needed attach them yourself in your R script by e.g.,
## require("timeSeries")
## Warning: package 'rugarch' was built under R version 4.3.3
## Loading required package: parallel
##
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
##
## sigma
arch_s <- ugarchspec(variance.model = list(model = "sGARCH"))
arch_vn <- ugarchfit(spec = arch_s, data = a$RVN30)
#tính phần dư
residuals <- residuals(arch_vn)
# tạo biến số và mô hình hồi quy tuyến tính
n <- length(residuals)
x <- 1:n
arch_lm <- lm(residuals^2 ~ x)
# kiểm định hiệu ứng ARCH-LM
library(lmtest)## Warning: package 'lmtest' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
arch_w <- ugarchfit(spec = arch_s, data = a$RWTI)
residuals1 <- residuals(arch_w)
m <- length(residuals1)
x <- 1:m
arch_lm_w <- lm(residuals1^2 ~ x)
bp1 <- bptest(arch_lm_w)Kiểm định ARCH-LM được sử dụng để xác định xem có sự tồn tại của hiệu ứng ARCH trong biến động của chuỗi thời gian hay không. Giả thiết H0 là không có hiệu ứng ARCH trong dữ liệu. Giá trị p-value càng nhỏ, càng chứng tỏ tồn tại bằng chứng về hiệu ứng ARCH.
Kết quả kiểm định cho mỗi biến như sau:
Đối với RVN30, giá trị BP = 0.0031495 và p_value = 0.9552 > 0.05. Chấp nhận giả thuyết H0, vậy chuỗi RVN30 không có hiệu ứng ARCH
Đối với RWTI, giá trị BP = 0.072418 và p_value = 0.7878 > 0.05. Chấp nhận giả thuyết H0, vậy chuỗi RWTI không có hiệu ứng ARCH
library(tibble)
tb <- data.frame(
'Kiểm định' = c("Jarque-bera","ADF","Ljung-Box","ARCH-GARCH"),
'RVN30' = c(j$p.value, adf$p.value, box$p.value, bp$p.value ),
'WTI' = c(jj$p.value, adf1$p.value, box1$p.value, bp1$p.value)
)
print(tb)## Kiểm.định RVN30 WTI
## 1 Jarque-bera 0.0000000 0.001897465
## 2 ADF 0.0100000 0.010000000
## 3 Ljung-Box 0.3223588 0.000000000
## 4 ARCH-GARCH 0.9552462 0.787848480
correlation_matrix <- cor(a[, c("RVN30", "RWTI")], method = "pearson")
spearman_corr <- cor(a[, c("RVN30", "RWTI")], method = "spearman")
kendall_corr <- cor(a[, c("RVN30", "RWTI")], method = "kendall")
correlation_matrix <- cbind(correlation_matrix, Spearman = spearman_corr[,"RWTI"], Kendall = kendall_corr[,"RWTI"])
print(correlation_matrix)## RVN30 RWTI Spearman Kendall
## RVN30 1.00000000 0.07267318 0.02139188 0.01538385
## RWTI 0.07267318 1.00000000 1.00000000 1.00000000
## RVN30 RWTI Spearman Kendall
## RVN30 1.00000000 0.07267318 0.02139188 0.01538385
## RWTI 0.07267318 1.00000000 1.00000000 1.00000000
Hệ số tương quan tuyến tính Pearson giữa hai biến số bằng 0.07267, điều này cho thấy sự tương quan giữa chứng khoán và giá dầu gần như không liên quan. Tuy nhiên, hệ số tương quan tuyến tính Pearson dựa trên giả định rằng chuỗi lợi suất có phân phối chuẩn trong khi dữ liệu không tuân theo phân phối chuẩn. Do đó, hệ số Pearson có thể không phù hợp để giải thích mối tương quan giữa hai chuỗi này khi thị trường biến động cực biên.
Ngược lại, với phương pháp phân tích phi tham số, hệ số tương quan hạng Spearman và Kendall không yêu cầu các chuỗi lợi suất có phân phối chuẩn. Kết quả cho thấy hệ số tương quan lần lượt là 0.2139 và 0.01538, hệ số tương quan này cũng là hệ số tương quan yếu. Việc tính hệ số hai quang này cũng chưa phản ánh thông tin hoặc các cú sốc thị trường, và chưa xem xét đến sự phụ thuộc bất đối xứng ở phần đuôi của phân phối đồng thời giữa hai chuỗi dữ liệu khi giá cả rung lắc mạnh. Do đó, phương pháp copula có điều kiện sẽ được áp dụng để xem xét mức độ phụ thuộc và sự phụ thuộc giữa hai chuỗi tỷ suất sinh lợi chỉ số VN30 và giá dầu.
Biểu đồ hệ số tương quan theo kiểm định Pearson
## RVN30 RWTI
## RVN30 1.00000000 0.07267318
## RWTI 0.07267318 1.00000000
## Warning: package 'corrplot' was built under R version 4.3.3
## corrplot 0.92 loaded
## Kết quả ước lượng mức độ phản ứng của VN30 và giá dầu
#Tìm mô hình aram cho RVN30 và RWTI
autoarfima(a$RVN30,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|)
## ar1 -0.126395 0.066286 -1.9068 0.056545
## ar2 -0.824162 0.071042 -11.6011 0.000000
## ma1 0.159783 0.028780 5.5518 0.000000
## ma2 0.970851 0.031212 31.1055 0.000000
## sigma 0.004011 0.000238 16.8505 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## ar1 -0.126395 0.085530 -1.4778 0.139466
## ar2 -0.824162 0.120501 -6.8395 0.000000
## ma1 0.159783 0.032827 4.8675 0.000001
## ma2 0.970851 0.056146 17.2917 0.000000
## sigma 0.004011 0.000435 9.2317 0.000000
##
## LogLikelihood : 582.1595
##
## Information Criteria
## ------------------------------------
##
## Akaike -8.1290
## Bayes -8.0249
## Shibata -8.1314
## Hannan-Quinn -8.0867
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.1685 0.6814
## Lag[2*(p+q)+(p+q)-1][11] 3.5130 1.0000
## Lag[4*(p+q)+(p+q)-1][19] 6.9543 0.9123
##
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.1563 0.6926
## Lag[2*(p+q)+(p+q)-1][2] 0.1988 0.8549
## Lag[4*(p+q)+(p+q)-1][5] 0.5092 0.9563
##
##
## ARCH LM Tests
## ------------------------------------
## Statistic DoF P-Value
## ARCH Lag[2] 0.2471 2 0.8838
## ARCH Lag[5] 0.7623 5 0.9794
## ARCH Lag[10] 9.3554 10 0.4987
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 0.6091
## Individual Statistics:
## ar1 0.04611
## ar2 0.03680
## ma1 0.03254
## ma2 0.12537
## sigma 0.23017
##
## 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.02900696
##
##
## $rank.matrix
## ar1 ar2 ma1 ma2 im arf AIC converged
## 1 1 1 1 1 0 0 -8.129007 1
## 2 1 1 1 1 1 0 -8.124132 1
## 3 0 1 1 1 0 0 -8.122223 1
## 4 0 1 0 1 0 0 -8.118846 1
## 5 0 1 1 1 1 0 -8.117040 1
## 6 0 0 0 0 1 0 -8.115462 1
## 7 0 1 0 1 1 0 -8.113927 1
## 8 0 0 0 1 0 0 -8.113755 1
## 9 1 1 0 1 0 0 -8.113420 1
## 10 0 1 0 0 0 0 -8.111575 1
## 11 0 0 0 1 1 0 -8.108536 1
## 12 1 1 0 1 1 0 -8.107943 1
## 13 0 1 0 0 1 0 -8.106646 1
## 14 0 0 1 0 0 0 -8.105049 1
## 15 1 0 0 0 0 0 -8.104980 1
## 16 1 0 0 0 1 0 -8.101443 1
## 17 0 0 1 0 1 0 -8.101436 1
## 18 0 0 1 1 0 0 -8.100627 1
## 19 1 0 0 1 0 0 -8.099873 1
## 20 0 1 1 0 0 0 -8.097610 1
## 21 1 1 0 0 0 0 -8.097493 1
## 22 0 0 1 1 1 0 -8.094867 1
## 23 1 0 0 1 1 0 -8.094431 1
## 24 1 1 0 0 1 0 -8.092607 1
## 25 0 1 1 0 1 0 -8.092566 1
## 26 1 0 1 1 0 0 -8.092279 1
## 27 1 0 1 0 0 0 -8.090967 1
## 28 1 0 1 0 1 0 -8.089230 1
## 29 1 0 1 1 1 0 -8.086659 1
## 30 1 1 1 0 0 0 -8.086218 1
## 31 1 1 1 0 1 0 -8.081387 1
arma_rvn30 <- autoarfima(a$RVN30,ar.max = 2, ma.max = 2, criterion = "AIC", method = "full")
# arma của rvn30 là (2,2)
autoarfima(a$RWTI,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|)
## ar1 -0.066688 0.043091 -1.5476 0.12172
## ar2 -0.879191 0.057691 -15.2396 0.00000
## ma1 0.000000 NA NA NA
## ma2 0.979997 0.026606 36.8335 0.00000
## sigma 0.006913 0.000410 16.8516 0.00000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## ar1 -0.066688 0.036295 -1.8374 0.06615
## ar2 -0.879191 0.051269 -17.1486 0.00000
## ma1 0.000000 NA NA NA
## ma2 0.979997 0.014327 68.4010 0.00000
## sigma 0.006913 0.000506 13.6702 0.00000
##
## LogLikelihood : 504.8683
##
## Information Criteria
## ------------------------------------
##
## Akaike -7.0545
## Bayes -6.9712
## Shibata -7.0560
## Hannan-Quinn -7.0206
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.06656 0.7964
## Lag[2*(p+q)+(p+q)-1][11] 4.25289 0.9993
## Lag[4*(p+q)+(p+q)-1][19] 6.29420 0.9573
##
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.7321 0.3922
## Lag[2*(p+q)+(p+q)-1][2] 0.7515 0.5864
## Lag[4*(p+q)+(p+q)-1][5] 1.2880 0.7918
##
##
## ARCH LM Tests
## ------------------------------------
## Statistic DoF P-Value
## ARCH Lag[2] 0.6653 2 0.7170
## ARCH Lag[5] 3.1580 5 0.6756
## ARCH Lag[10] 6.0540 10 0.8107
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 0.747
## Individual Statistics:
## ar1 0.48278
## ar2 0.04588
## ma2 0.11083
## sigma 0.08287
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.07 1.24 1.6
## Individual Statistic: 0.35 0.47 0.75
##
##
## Elapsed time : 0.05036092
##
##
## $rank.matrix
## ar1 ar2 ma1 ma2 im arf AIC converged
## 1 1 1 0 1 0 0 -7.054482 1
## 2 0 1 1 1 0 0 -7.053427 1
## 3 1 1 0 1 1 0 -7.042292 1
## 4 0 1 1 1 1 0 -7.041275 1
## 5 0 0 0 1 0 0 -7.029366 1
## 6 0 1 0 0 0 0 -7.028805 1
## 7 0 0 0 0 1 0 -7.028320 1
## 8 1 0 0 0 0 0 -7.027855 1
## 9 0 0 1 0 0 0 -7.027730 1
## 10 0 0 0 1 1 0 -7.017114 1
## 11 0 1 0 1 0 0 -7.016777 1
## 12 0 1 0 0 1 0 -7.016561 1
## 13 1 0 0 1 0 0 -7.016410 1
## 14 0 0 1 1 0 0 -7.016205 1
## 15 1 1 0 0 0 0 -7.016091 1
## 16 0 1 1 0 0 0 -7.015865 1
## 17 1 0 0 0 1 0 -7.015779 1
## 18 1 0 1 0 0 0 -7.015735 1
## 19 0 0 1 0 1 0 -7.015647 1
## 20 0 1 0 1 1 0 -7.004551 1
## 21 1 0 0 1 1 0 -7.004236 1
## 22 0 0 1 1 1 0 -7.004021 1
## 23 1 1 0 0 1 0 -7.003888 1
## 24 1 0 1 0 1 0 -7.003672 1
## 25 0 1 1 0 1 0 -7.003659 1
## 26 1 0 1 1 0 0 -7.003201 1
## 27 1 1 1 0 0 0 -7.002885 1
## 28 1 1 1 1 0 0 -6.999399 1
## 29 1 0 1 1 1 0 -6.990946 1
## 30 1 1 1 0 1 0 -6.990700 1
## 31 1 1 1 1 1 0 -6.987034 1
arma_rwti <- autoarfima(a$RWTI,ar.max = 2, ma.max = 2, criterion = "AIC", method = "full")
# arma của rwti là (2,2)# RVN30
# Ước lượng mô hình GARCH(1,1) theo phân phối chuẩn
vn30.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2,2), include.mean =TRUE), distribution.model = 'norm')
vn30.fit <- ugarchfit(spec = vn30.spec, data = a$RVN30)
# Phân phối Student (std)
vn30st.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
vn30st.fit <- ugarchfit(spec = vn30st.spec, data = a$RVN30)
# Phân phối Student đối xứng (sstd)
vn30sst.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
vn30sst.fit <- ugarchfit(spec = vn30sst.spec, data = a$RVN30)
# Phân phối Generalized Error Distribution(ged)
vn30ged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
vn30ged.fit <- ugarchfit(spec = vn30ged.spec, data = a$RVN30)
# Phân phối Generalized Error Distribution đối xứng ("sged")
vn30sged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
vn30sged.fit <- ugarchfit(spec = vn30sged.spec, data = a$RVN30)
# phân phối theo garch (1,2)
vn30.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2,2), include.mean =TRUE), distribution.model = 'norm')
vn30.fit2 <- ugarchfit(spec = vn30.spec2, data = a$RVN30)
vn30st.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
vn30st.fit2 <- ugarchfit(spec = vn30st.spec2, data = a$RVN30)
vn30sst.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
vn30sst.fit2 <- ugarchfit(spec = vn30sst.spec2, data = a$RVN30)
vn30ged.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
vn30ged.fit2 <- ugarchfit(spec = vn30ged.spec2, data = a$RVN30)
# garch(2,1)
vn30st.spec21 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
vn30st.fit21 <- ugarchfit(spec = vn30st.spec21, data = a$RVN30)
vn30sst.spec21 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
vn30sst.fit21 <- ugarchfit(spec = vn30sst.spec21, data = a$RVN30)
vn30sged.spec21 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
vn30sged.fit21 <- ugarchfit(spec = vn30sged.spec21, data = a$RVN30)
#garch(2,2)
vn30ged.spec22 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
vn30ged.fit22 <- ugarchfit(spec = vn30ged.spec22, data = a$RVN30)
# tạo danh sách gồm các phân phối và ước lượng
VN30.model.list <- list(garch11n = vn30.fit, garch11t = vn30st.fit, garch11st = vn30sst.fit,
garch11g = vn30ged.fit, garch11sg = vn30sged.fit,
garch12n = vn30.fit2, garch12t = vn30st.fit2,
garch12g = vn30ged.fit2,
garch21t = vn30st.fit21, garch21st = vn30sst.fit21,
garch21sg = vn30sged.fit21
)
# Tính toán các thông tin
VN30.info.mat <- sapply(VN30.model.list, infocriteria)
rownames(VN30.info.mat) <- rownames(infocriteria(vn30.fit))
VN30.info.mat## garch11n garch11t garch11st garch11g garch11sg garch12n
## Akaike -8.124709 -8.232163 -8.220231 -8.193380 -8.246303 -8.144519
## Bayes -7.937368 -8.024006 -7.991258 -7.985223 -8.017331 -7.936363
## Shibata -8.132123 -8.241239 -8.231121 -8.202455 -8.257193 -8.153595
## Hannan-Quinn -8.048581 -8.147577 -8.127186 -8.108793 -8.153258 -8.059933
## garch12t garch12g garch21t garch21st garch21sg
## Akaike -8.243453 -8.248256 -8.234807 -8.235644 -8.149204
## Bayes -8.014481 -8.019283 -7.985019 -7.965040 -7.878601
## Shibata -8.254343 -8.259146 -8.247661 -8.250605 -8.164166
## Hannan-Quinn -8.150408 -8.155211 -8.133304 -8.125681 -8.039242
vn30.inds <- which(VN30.info.mat == min(VN30.info.mat), arr.ind=TRUE)
model.vn30 <- colnames(VN30.info.mat)[vn30.inds[,2]]
model.vn30## [1] "garch12g"
# Lựa chọn mô hình biên phù hợp cho chuỗi RWTI
# Ước lượng mô hình GARCH(1,1) theo phân phối chuẩn
wtin.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2,2), include.mean =TRUE), distribution.model = 'norm')
wtin.fit <- ugarchfit(spec = wtin.spec, data = a$RWTI)
# Phân phối Student (std)
wtist.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
wtist.fit <- ugarchfit(spec = wtist.spec, data = a$WTI)
# Phân phối Student đối xứng (sstd)
wtisst.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
wtisst.fit <- ugarchfit(spec = wtisst.spec, data = a$WTI)
# Phân phối Generalized Error Distribution(ged)
wtiged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
wtiged.fit <- ugarchfit(spec = wtiged.spec, data = a$WTI)
# Phân phối Generalized Error Distribution đối xứng ("sged")
wtisged.spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
wtisged.fit <- ugarchfit(spec = wtisged.spec, data = a$WTI)
# phân phối theo garch (1,2)
wti.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2,2), include.mean =TRUE), distribution.model = 'norm')
wti.fit2 <- ugarchfit(spec = wti.spec2, data = a$WTI)
wtist.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
wtist.fit2 <- ugarchfit(spec = wtist.spec2, data = a$WTI)
wtisst.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
wtisst.fit2 <- ugarchfit(spec = wtisst.spec2, data = a$WTI)
wtiged.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
wtiged.fit2 <- ugarchfit(spec = wtiged.spec2, data = a$WTI)
wtisged.spec2 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
wtisged.fit2 <- ugarchfit(spec = wtisged.spec2, data = a$WTI)
# garch(2,1)
wtin.spec21 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
wtin.fit21 <- ugarchfit(spec = wtin.spec21, data = a$WTI)
wtist.spec21 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
wtist.fit21 <- ugarchfit(spec = wtist.spec21, data = a$WTI)
wtisst.spec21 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
wtisst.fit21 <- ugarchfit(spec = wtisst.spec21, data = a$WTI)
wtiged.spec21 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
wtiged.fit21 <- ugarchfit(spec = wtiged.spec21, data = a$WTI)
wtisged.spec21 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 1)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
wtisged.fit21 <- ugarchfit(spec = wtisged.spec21, data = a$WTI)
#garch(2,2)
wtin.spec22 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "norm")
wtin.fit22 <- ugarchfit(spec = wtin.spec22, data = a$WTI)
wtist.spec22 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "std")
wtist.fit22 <- ugarchfit(spec = wtist.spec22, data = a$WTI)
wtisst.spec22 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sstd")
wtisst.fit22 <- ugarchfit(spec = wtisst.spec22, data = a$WTI)
wtiged.spec22 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "ged")
wtiged.fit22 <- ugarchfit(spec = wtiged.spec22, data = a$WTI)
wtisged.spec22 <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(2, 2)), mean.model = list(armaOrder = c(2, 2), include.mean = TRUE), distribution.model = "sged")
wtisged.fit22 <- ugarchfit(spec = wtisged.spec22, data = a$WTI)
# tạo danh sách gồm các phân phối và ước lượng
wti.model.list <- list(garch11n = wtin.fit, garch11t = wtist.fit, garch11st = wtisst.fit,
garch11g = wtiged.fit,
garch12t = wtist.fit2, garch12st = wtisst.fit2,
garch12sg = wtisged.fit2,
garch21n = wtin.fit21, garch21t = wtist.fit21, garch21st = wtisst.fit21,
garch21g = wtiged.fit21, garch21sg = wtisged.fit21,
garch21t = wtist.fit21, garch21st = wtisst.fit21
)
# Tính toán các thông tin
wti.info.mat <- sapply(wti.model.list, infocriteria)
rownames(wti.info.mat) <- rownames(infocriteria(wtin.fit))
wti.info.mat## garch11n garch11t garch11st garch11g garch12t garch12st garch12sg
## Akaike -6.963583 3.310387 3.370749 3.327879 3.341006 3.351298 3.359301
## Bayes -6.776242 3.518544 3.599722 3.536036 3.569978 3.601086 3.609089
## Shibata -6.970997 3.301311 3.359859 3.318803 3.330116 3.338445 3.346448
## Hannan-Quinn -6.887455 3.394974 3.463795 3.412466 3.434051 3.452802 3.460805
## garch21n garch21t garch21st garch21g garch21sg garch21t garch21st
## Akaike 3.391712 3.346571 3.393845 3.337741 3.364222 3.346571 3.393845
## Bayes 3.620685 3.596359 3.664448 3.587529 3.634826 3.596359 3.664448
## Shibata 3.380822 3.333717 3.378883 3.324888 3.349261 3.333717 3.378883
## Hannan-Quinn 3.484757 3.448075 3.503807 3.439245 3.474185 3.448075 3.503807
wti.inds <- which(wti.info.mat == min(wti.info.mat), arr.ind=TRUE)
model.wti <- colnames(wti.info.mat)[wti.inds[,2]]
model.wti## [1] "garch11n"
tab <- tibble(
'Chuỗi lợi suất' = c("RVN30", "RWTI"),
'Dạng mô hình phân phối biên' = c("ARMA (2,2)-GJR-GARCH(1,2)-Skewed GED", "ARMA (2,2)-GJR-GARCH(1,1)-Normal")
)
print(tab)## # A tibble: 2 × 2
## `Chuỗi lợi suất` `Dạng mô hình phân phối biên`
## <chr> <chr>
## 1 RVN30 ARMA (2,2)-GJR-GARCH(1,2)-Skewed GED
## 2 RWTI ARMA (2,2)-GJR-GARCH(1,1)-Normal
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,2)
## Mean Model : ARFIMA(2,0,2)
## Distribution : ged
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000613 0.000010 62.022405 0.000000
## ar1 -0.112573 0.004344 -25.913159 0.000000
## ar2 -0.898457 0.017032 -52.749892 0.000000
## ma1 0.135063 0.003001 45.006872 0.000000
## ma2 0.995615 0.006333 157.214565 0.000000
## omega 0.000000 0.000002 0.070816 0.943544
## alpha1 0.039397 0.000418 94.354120 0.000000
## beta1 0.168668 0.000485 347.903912 0.000000
## beta2 0.833935 0.001658 503.123748 0.000000
## gamma1 -0.088072 0.001601 -55.000700 0.000000
## shape 0.985692 0.263518 3.740512 0.000184
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000613 0.000087 7.069115 0.000000
## ar1 -0.112573 0.008251 -13.644177 0.000000
## ar2 -0.898457 0.055970 -16.052554 0.000000
## ma1 0.135063 0.007238 18.660806 0.000000
## ma2 0.995615 0.058661 16.972297 0.000000
## omega 0.000000 0.000065 0.001663 0.998673
## alpha1 0.039397 0.002650 14.868714 0.000000
## beta1 0.168668 0.008905 18.940716 0.000000
## beta2 0.833935 0.029314 28.448688 0.000000
## gamma1 -0.088072 0.025683 -3.429142 0.000605
## shape 0.985692 8.592706 0.114713 0.908673
##
## LogLikelihood : 596.6262
##
## Information Criteria
## ------------------------------------
##
## Akaike -8.2483
## Bayes -8.0193
## Shibata -8.2591
## Hannan-Quinn -8.1552
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.02805 0.8670
## Lag[2*(p+q)+(p+q)-1][11] 4.22998 0.9994
## Lag[4*(p+q)+(p+q)-1][19] 7.91345 0.8061
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 5.289e-05 9.942e-01
## Lag[2*(p+q)+(p+q)-1][8] 2.426e+01 8.471e-06
## Lag[4*(p+q)+(p+q)-1][14] 2.992e+01 8.547e-06
## d.o.f=3
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[4] 0.07348 0.500 2.000 0.7863
## ARCH Lag[6] 5.15874 1.461 1.711 0.1044
## ARCH Lag[8] 5.83867 2.368 1.583 0.1722
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 31.9713
## Individual Statistics:
## mu 0.15009
## ar1 0.12712
## ar2 0.02926
## ma1 0.11186
## ma2 0.04483
## omega 9.11767
## alpha1 0.08950
## beta1 0.12466
## beta2 0.12316
## gamma1 0.07687
## shape 0.11741
##
## 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.0861 0.2794
## Negative Sign Bias 0.4112 0.6816
## Positive Sign Bias 1.5309 0.1281
## Joint Effect 2.5335 0.4693
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 11.80 0.8939
## 2 30 26.17 0.6164
## 3 40 32.65 0.7536
## 4 50 41.80 0.7573
##
##
## Elapsed time : 0.6159151
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(2,0,2)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000253 0.000578 4.3791e-01 0.66145
## ar1 -1.748686 0.001954 -8.9494e+02 0.00000
## ar2 -0.760184 0.011059 -6.8741e+01 0.00000
## ma1 1.730902 0.000782 2.2126e+03 0.00000
## ma2 0.729710 0.000060 1.2212e+04 0.00000
## omega 0.000000 0.000001 8.4586e-02 0.93259
## alpha1 0.000100 0.002324 4.3136e-02 0.96559
## beta1 0.999864 0.000002 4.0215e+05 0.00000
## gamma1 -0.004629 0.007325 -6.3197e-01 0.52741
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 0.000253 0.000519 4.8834e-01 0.62531
## ar1 -1.748686 0.003490 -5.0112e+02 0.00000
## ar2 -0.760184 0.037132 -2.0472e+01 0.00000
## ma1 1.730902 0.003442 5.0292e+02 0.00000
## ma2 0.729710 0.000582 1.2538e+03 0.00000
## omega 0.000000 0.000018 4.7410e-03 0.99622
## alpha1 0.000100 0.002802 3.5768e-02 0.97147
## beta1 0.999864 0.000006 1.6982e+05 0.00000
## gamma1 -0.004629 0.006617 -6.9956e-01 0.48420
##
## LogLikelihood : 503.4144
##
## Information Criteria
## ------------------------------------
##
## Akaike -6.9636
## Bayes -6.7762
## Shibata -6.9710
## Hannan-Quinn -6.8875
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.01184 0.9133
## Lag[2*(p+q)+(p+q)-1][11] 4.19527 0.9996
## Lag[4*(p+q)+(p+q)-1][19] 7.01080 0.9074
## d.o.f=4
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.6038 0.4371
## Lag[2*(p+q)+(p+q)-1][5] 1.2202 0.8081
## Lag[4*(p+q)+(p+q)-1][9] 2.1559 0.8856
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.5649 0.500 2.000 0.4523
## ARCH Lag[5] 1.1443 1.440 1.667 0.6906
## ARCH Lag[7] 1.5191 2.315 1.543 0.8175
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 28.8057
## Individual Statistics:
## mu 0.18762
## ar1 0.07161
## ar2 0.04739
## ma1 0.07618
## ma2 0.07289
## omega 14.87728
## alpha1 0.13376
## beta1 0.08999
## gamma1 0.11750
##
## 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 0.05797 0.9539
## Negative Sign Bias 0.87419 0.3835
## Positive Sign Bias 1.46304 0.1457
## Joint Effect 3.38766 0.3356
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 16.87 0.5985
## 2 30 37.15 0.1423
## 3 40 43.92 0.2711
## 4 50 50.25 0.4235
##
##
## Elapsed time : 0.2451131
# tính toán phần dư
vn30.res <- residuals(vn30ged.fit2)/sigma(vn30ged.fit2)
fitdist(distribution = "ged", vn30.res, control = list())## $pars
## mu sigma shape
## 2.400732e-08 1.007917e+00 8.798625e-01
##
## $convergence
## [1] 0
##
## $values
## [1] 199.3276 187.1075 187.1075
##
## $lagrange
## [1] 0
##
## $hessian
## [,1] [,2] [,3]
## [1,] 1556687.1170 154.59788 -201.34292
## [2,] 154.5979 123.21300 51.74797
## [3,] -201.3429 51.74797 56.40292
##
## $ineqx0
## NULL
##
## $nfuneval
## [1] 118
##
## $outer.iter
## [1] 2
##
## $elapsed
## Time difference of 0.01615095 secs
##
## $vscale
## [1] 1 1 1 1
u <- pdist(distribution = "ged", q = vn30.res, mu = 2.400732e-08 , sigma = 1.007917e+00, shape = 8.798625e-01)
wti.res <- residuals(wtin.fit)/sigma(wtin.fit)
fitdist(distribution = "norm", wti.res, control = list())## $pars
## mu sigma
## 0.008079976 1.019259591
##
## $convergence
## [1] 0
##
## $values
## [1] 204.1999 204.1981 204.1981
##
## $lagrange
## [1] 0
##
## $hessian
## [,1] [,2]
## [1,] 1 0.0000
## [2,] 0 273.6374
##
## $ineqx0
## NULL
##
## $nfuneval
## [1] 58
##
## $outer.iter
## [1] 2
##
## $elapsed
## Time difference of 0.002774954 secs
##
## $vscale
## [1] 1 1 1
v <- pdist(distribution = "norm", q = vn30.res, mu = 0.008079976 , sigma = 1.019259591)
# các kiểm định
## kiểm định AD
library(nortest)
adt <- ad.test(u)
adt1 <- ad.test(v)## Warning in ad.test(v): Incompatible methods ("Ops.xts", "Ops.zoo") for "+"
## Warning in cvm.test(v): p-value is smaller than 7.37e-10, cannot be computed
## more accurately
tabl <- tibble(
'Các kiểm định' = c("A-D","Cv-M","K-S"),
'RVN30' = c(adt$statistic, cvm$statistic, ks$statistic),
'RWTI' = c(adt1$statistic, cvm1$statistic, ks1$statistic)
)
print(tabl)## # A tibble: 3 × 3
## `Các kiểm định` RVN30 RWTI
## <chr> <dbl> <dbl>
## 1 A-D 1.76 155.
## 2 Cv-M 0.215 26.1
## 3 K-S 0.0377 0.932
## Warning: package 'copula' was built under R version 4.3.3
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## Warning: package 'VineCopula' was built under R version 4.3.3
##
## Attaching package: 'VineCopula'
## The following object is masked from 'package:copula':
##
## pobs
tv <- BiCopSelect(u, v, familyset= 1:9, selectioncrit="AIC",indeptest = FALSE, level = 0.05)
tv1 <- BiCopPar2TailDep(5, 30.14)
table <- tibble(
'Chuỗi lợi suất' = c("Copula", "Đuôi trên", "Đuôi dưới"),
'RVN30-RWTI' = c("Frank", "0", "0")
)
print(table)## # A tibble: 3 × 2
## `Chuỗi lợi suất` `RVN30-RWTI`
## <chr> <chr>
## 1 Copula Frank
## 2 Đuôi trên 0
## 3 Đuôi dưới 0