rm(list=ls()) #clear environment
require(tidyverse)
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.0 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.1 ✔ tibble 3.1.8
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(ggplot2)
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(plm)
##
## Attaching package: 'plm'
##
## The following objects are masked from 'package:dplyr':
##
## between, lag, lead
library(lmtest)
## 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(dplyr)
File dữ liệu: https://docs.google.com/spreadsheets/d/1AsJCgzlFcPCaM7-zXZdQh5r0sgR4_E6b1vLQSLJnfXk/edit?usp=sharing
Trong điều kiện của một nền kinh tế mở, thương mại quốc tế trở nên phổ biến, việc thanh toán giữa quốc gia nhất thiết phải sử dụng tiền tệ của nước này hay nước khác. Để thực hiện việc chuyển đổi tiền tệ các nước, các quốc gia phải dựa vào tỷ giá hối đoái. Tỷ giá hối đoái là một trong những chính sách kinh tế vĩ mô quan trọng của mỗi quốc gia. Tỷ giá hối đoái luôn là một vấn đề phức tạp và nhạy cảm đối với mọi nền kinh tế, không ít nền kinh tế lâm vào tình trạng khó khăn do tỷ giá hối đoái gây ra. Chính vì vậy, nó luôn thu hút được sự chú ý đặc biệt của các nhà kinh tế, các học giả Việt Nam và trên thế giới. Đặc biệt là trong bối cảnh nền kinh tế trong nước và quốc tế như hiện nay thì việc nghiên cứu về tỷ giá hối đoái là một vấn đề có ý nghĩa lý luận và thực tiễn cao. Xuất phát từ những vấn đề trên, tác giả sẽ tiến hành nghiên cứu tác động của các yếu tố đến tỷ giá hối đoái của Việt Nam trong giai đoạn từ 01/2020 đến 08/2023 nhằm đưa ra các yếu tố có ảnh hưởng đến tỷ giá hối đoái và từ đó mô phỏng tỷ giá hối đoái Việt Nam. Tác giả quyết định chọn đề tài “Mô phỏng các nhân tố ảnh hưởng đến tỷ giá hối đoái tại Việt Nam”.
Dữ liệu nghiên cứu được thu thập tại trang web Investing.com bao gồm: tỷ giá hối đoái, chỉ số VNI, giá dầu, giá vàng, giá cổ phiếu của ngân hàng Vietcombank và ngân hàng Vietinbank trong giai đoạn từ 01/2020 đến 08/2023 để xem xét sự tác động của các yếu tố đến tỷ giá hối đoái.
setwd("C:/MPNN2")
data <- read_excel("tieuluan.xlsx",1)
exr = data$EXR
vni = data$VNI
hnx = data$HNX
sp500 = data$SP500
xau = data$XAU
wti = data$WTI
vcb = data$VCB
ctg = data$CTG
data
Mô tả dữ liệu
Bộ dữ liệu bao gồm 904 quan sát
-EXR: Tỷ giá hối đoái (USD/VND)
-VNI: Chỉ số phản ánh biến động giá cổ phiếu được niêm yết trên sàn HoSE
-HNX: Chỉ số phản ánh biến động giá cổ phiếu được niêm yết trên sàn Hà Nội
-SP500: Chỉ số chứng khoán được dựa trên vốn hóa của 500 công ty đại chúng lớn nhất nước Mỹ
-XAU: Tỷ giá vàng (XAU/USD)
-WTI: Tỷ giá dầu (WTI/USD)
-VCB: Giá đóng cửa của cổ phiếu của ngân hàng TMCP Ngoại thương Việt Nam - Vietcombank
-CTG: Giá đóng cửa của cổ phiếu của ngân hàng TMCP Công thương Việt Nam - Vietinbank
Mô hình hồi quy tuyến tính đa biến xem xét mối quan hệ giữa một biến phụ thuộc Y và nhiều biến độc lập \(X_1, X_2, … ,X_n\). Chúng ta giả định rằng mối quan hệ giữa các biến là tuyến tính, điều này có nghĩa là biến phụ thuộc có thể được biểu diễn dưới dạng một tổng các biến độc lập nhân với các hệ số tương ứng.
Mô hình hồi quy tuyến tính đa biến có dạng: \[Y=β_0+β_1X_1+β_2X_2+⋯+β_nX_n+ϵ\] Trong đó:
\(Y\) là biến phụ thuộc \(X_1, X_2, … ,X_n\) là các biến độc lập \(β_0,β_1, β_2, …, β_n\) là các hệ số hồi quy tương ứng với các biến độc lập \(ϵ\) là sai số đại diện cho sai số giữa giá trị thực tế và giá trị dự đoán của biến phụ thuộc.
Mục tiêu của việc ước lượng hệ số hồi quy là tìm các giá trị \(β_0,β_1, β_2, …, β_n\) sao cho mô hình hồi quy phù hợp tốt với dữ liệu thực tế nhất. Quá trình này thường được thực hiện bằng phương pháp của bình phương tối thiểu (Ordinary Least Squares - OLS), tìm cách giảm thiểu tổng bình phương của sai số \(ϵ\).
Sau khi ước lượng hệ số hồi quy, chúng ta cần kiểm tra tính chính xác của mô hình. Các kiểm định thường được sử dụng bao gồm kiểm định hồi quy, kiểm tra t-Student cho từng hệ số, kiểm tra F-statistic, kiểm tra điều kiện phân phối của sai số,…
Sau khi đã kiểm tra và xác nhận tính chính xác của mô hình, chúng ta có thể sử dụng nó để dự đoán giá trị của biến phụ thuộc dựa trên giá trị của các biến độc lập.
Quá trình ngẫu nhiên W(t), được gọi là chuyển động Brown tiêu chuẩn nếu thỏa các điều kiện sau:
Tác giả xây dựng mô hình với mục đích nghiên cứu sự tác động của các yếu tố đến tỷ giá hối đoái. Mô hình đề xuất như sau:
\[EXR= β_0 + β_1VNI + β_2HNX + β_3SP500 + β_4XAU + β_5WTI + β_6VCB + β_7CTG\]
Trong đó
\(β_0\): Hằng số của mô hình
\(β_1 ... β_7\): Hệ số hồi quy của các biến độc lập
Trong mô hình này sẽ phân tích sự tác động của các yếu tố đến tỷ giá hối đoái
Biến phụ thuộc: TỶ giá hối đoái (EXR)
Biến độc lập:
VNI: Chỉ số VN-index (điểm)
HNX: Chỉ số HNX-index (điểm)
SP500: Chỉ số S&P500-index (điểm)
WTI: Tỷ giá dầu (WTI/USD)
XAU: TỶ giá vàng (XAU/USD)
VCB: Giá đóng cửa của cổ phiếu ngân hàng Vietcombank (VND)
CTG: Giá đóng cửa của cổ phiếu ngân hàng Vietinbank (VND)
Biến EXR
summary(exr)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 22625 23019 23177 23253 23450 24871
sd(exr)
## [1] 417.0823
Biến EXR (tỷ giá hối đoái) có giá trị trung bình là 23253 tức giá trị trung bình của tỷ giá hối đoái là 23253VND/USD và giá trị trung vị là 23177 VND/USD. Biến này đạt giá trị nhỏ nhất là 22625 VND/USD và đạt lớn nhất là 24871 VND/USD. Với độ lệch chuẩn là 417,0823 VND/USD.
1. Biến VNI
summary(vni)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 659.2 966.6 1125.8 1138.8 1299.4 1528.6
sd(vni)
## [1] 211.6383
Biến VNI (chỉ số VNindex) có giá trị trung bình là 1138,8 tức là giá đóng cửa trung bình của chỉ số VN-index là 1138,8 điểm và giá trị trung vị là 1125,8. Biến này đạt giá trị thấp nhất là 659,2 điểm và đạt cao nhất là 1528,6 điểm. Với độ lệch chuẩn là 211,6383 điểm
hist.vni = ggplot(data = data,aes(vni))+ geom_histogram(aes(y=after_stat(density)),color="black",fill="lavender", bins = 30)+ stat_function(fun = dnorm, args = list(mean = mean(vni,na.rm = TRUE),sd = sd(vni,na.rm = TRUE)), color ='darkgreen',linewidth = 1)
hist.vni
qqnorm(vni)
qqline(vni)
Cặp giả thuyết - đối thuyết
\(H_0\): Biến VNI tuân theo phân phối chuẩn
\(H_1\): Biến VNI không tuân theo phân phối chuẩn
shapiro.test(vni)
##
## Shapiro-Wilk normality test
##
## data: vni
## W = 0.97373, p-value = 1.066e-11
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến VNI không tuân theo phân phối chuẩn.
Phân phối loga chuẩn
Cặp giả thuyết - đối thuyết
\(H_0\): Biến VNI tuân theo phân phối loga chuẩn
\(H_1\): Biến VNI không tuân theo phân phối loga chuẩn
ks.test(vni, y = 'plnorm')
## Warning in ks.test.default(vni, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: vni
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến VNI không tuân theo phân phối loga chuẩn.
Phân phối mũ
Cặp giả thuyết - đối thuyết
\(H_0\): Biến VNI tuân theo phân phối mũ
\(H_1\): Biến VNI không tuân theo phân phối mũ
ks.test(vni, y = 'pexp')
## Warning in ks.test.default(vni, y = "pexp"): ties should not be present for the
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: vni
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến VNI không tuân theo phân phối mũ.
Phân phối đều
Cặp giả thuyết - đối thuyết
\(H_0\): Biến VNI tuân theo phân phối đều
\(H_1\): Biến VNI không tuân theo phân phối đều
ks.test(vni, y = 'punif')
## Warning in ks.test.default(vni, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: vni
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến VNI không tuân theo phân phối đều.
2. Biến HNX
summary(hnx)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 92.64 146.12 228.41 247.59 312.90 493.84
sd(hnx)
## [1] 107.4283
Biến HNX có giá trị trung bình là 247,59 điểm tức giá đóng cửa trung bình của chỉ số HNX là 247,59 điểm và giá trị trung vị là 228,41. Biến này đạt giá trị thấp nhất là 92,64 điểm và đạt cao nhất là 493,84 điểm. Với độ lệch chuẩn là 107,4283 điểm
hist.hnx = ggplot(data = data,aes(hnx))+ geom_histogram(aes(y=after_stat(density)),color="black",fill="lavender", bins = 30)+ stat_function(fun = dnorm, args = list(mean = mean(hnx,na.rm = TRUE),sd = sd(hnx,na.rm = TRUE)), color ='brown',linewidth = 1)
hist.hnx
qqnorm(hnx)
qqline(hnx)
Cặp giả thuyết - đối thuyết
\(H_0\): Biến HNX tuân theo phân phối chuẩn
\(H_1\): Biến HNX không tuân theo phân phối chuẩn
shapiro.test(hnx)
##
## Shapiro-Wilk normality test
##
## data: hnx
## W = 0.93878, p-value < 2.2e-16
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến HNX không tuân theo phân phối chuẩn.
Phân phối loga chuẩn
Cặp giả thuyết - đối thuyết
\(H_0\): Biến HNX tuân theo phân phối loga chuẩn
\(H_1\): Biến HNX không tuân theo phân phối loga chuẩn
ks.test(hnx, y = 'plnorm')
## Warning in ks.test.default(hnx, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: hnx
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến HNX không tuân theo phân phối loga chuẩn.
Phân phối mũ
Cặp giả thuyết - đối thuyết
\(H_0\): Biến HNX tuân theo phân phối mũ
\(H_1\): Biến HNX không tuân theo phân phối mũ
ks.test(hnx, y = 'pexp')
## Warning in ks.test.default(hnx, y = "pexp"): ties should not be present for the
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: hnx
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến HNX không tuân theo phân phối mũ.
Phân phối đều
Cặp giả thuyết - đối thuyết
\(H_0\): Biến HNX tuân theo phân phối đều
\(H_1\): Biến HNX không tuân theo phân phối đều
ks.test(hnx, y = 'punif')
## Warning in ks.test.default(hnx, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: hnx
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến HNX không tuân theo phân phối đều.
3. Biến SP500
summary(sp500)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2237 3585 3986 3912 4321 4797
sd(sp500)
## [1] 522.9723
Biến SP500 có giá trị trung bình là 3912 tức giá đóng cửa trung bình của chỉ số S&P500 là 3912 điểm và giá trị trung vị là 3986. Biến này đạt giá trị thấp nhất là 2237 điểm và đạt cao nhất là 4797 điểm. Với độ lệch chuẩn là 522,9723 điểm
hist.sp500 = ggplot(data = data,aes(sp500))+ geom_histogram(aes(y=after_stat(density)),color="black",fill="lavender", bins = 30)+ stat_function(fun = dnorm, args = list(mean = mean(sp500,na.rm = TRUE),sd = sd(sp500,na.rm = TRUE)), color ='brown',linewidth = 1)
hist.sp500
qqnorm(sp500)
qqline(sp500)
Cặp giả thuyết - đối thuyết
\(H_0\): Biến SP500 tuân theo phân phối chuẩn
\(H_1\): Biến SP500 không tuân theo phân phối chuẩn
shapiro.test(sp500)
##
## Shapiro-Wilk normality test
##
## data: sp500
## W = 0.95621, p-value = 8.801e-16
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến SP500 không tuân theo phân phối chuẩn.
Phân phối loga chuẩn
Cặp giả thuyết - đối thuyết
\(H_0\): Biến SP500 tuân theo phân phối loga chuẩn
\(H_1\): Biến SP500 không tuân theo phân phối loga chuẩn
ks.test(sp500, y = 'plnorm')
## Warning in ks.test.default(sp500, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: sp500
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến SP500 không tuân theo phân phối loga chuẩn.
Phân phối mũ
Cặp giả thuyết - đối thuyết
\(H_0\): Biến SP500 tuân theo phân phối mũ
\(H_1\): Biến SP500 không tuân theo phân phối mũ
ks.test(sp500, y = 'pexp')
## Warning in ks.test.default(sp500, y = "pexp"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: sp500
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến SP500 không tuân theo phân phối mũ.
Phân phối đều
Cặp giả thuyết - đối thuyết
\(H_0\): Biến SP500 tuân theo phân phối đều
\(H_1\): Biến SP500 không tuân theo phân phối đều
ks.test(sp500, y = 'punif')
## Warning in ks.test.default(sp500, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: sp500
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến SP500 không tuân theo phân phối đều.
5. Biến XAU
summary(xau)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1471 1759 1816 1824 1902 2064
sd(xau)
## [1] 101.0509
Biến XAU có giá trị trung bình là 1824 tức tỷ giá trung bình của vàng là 1824USD và giá trị trung vị là 1471. Biến này đạt giá trị nhỏ nhất là 1471USD và đạt lớn nhất là 2064 USD. Với độ lệch chuẩn là 101,0509 USD
hist.xau = ggplot(data = data,aes(xau))+ geom_histogram(aes(y=after_stat(density)),color="black",fill="lavender", bins = 30)+ stat_function(fun = dnorm, args = list(mean = mean(xau,na.rm = TRUE),sd = sd(xau,na.rm = TRUE)), color ='brown',linewidth = 1)
hist.xau
qqnorm(xau)
qqline(xau)
Cặp giả thuyết - đối thuyết
\(H_0\): Biến XAU tuân theo phân phối chuẩn
\(H_1\): Biến XAU không tuân theo phân phối chuẩn
shapiro.test(xau)
##
## Shapiro-Wilk normality test
##
## data: xau
## W = 0.99177, p-value = 6.268e-05
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến XAU không tuân theo phân phối chuẩn.
Phân phối loga chuẩn
Cặp giả thuyết - đối thuyết
\(H_0\): Biến XAU tuân theo phân phối loga chuẩn
\(H_1\): Biến XAU không tuân theo phân phối loga chuẩn
ks.test(xau, y = 'plnorm')
## Warning in ks.test.default(xau, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: xau
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến XAU không tuân theo phân phối loga chuẩn.
Phân phối mũ
Cặp giả thuyết - đối thuyết
\(H_0\): Biến XAU tuân theo phân phối mũ
\(H_1\): Biến XAU không tuân theo phân phối mũ
ks.test(xau, y = 'pexp')
## Warning in ks.test.default(xau, y = "pexp"): ties should not be present for the
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: xau
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến XAU không tuân theo phân phối mũ.
Phân phối đều
Cặp giả thuyết - đối thuyết
\(H_0\): Biến XAU tuân theo phân phối đều
\(H_1\): Biến XAU không tuân theo phân phối đều
ks.test(xau, y = 'punif')
## Warning in ks.test.default(xau, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: xau
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến XAU không tuân theo phân phối đều.
6. Biến WTI
summary(wti)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 24.07 66.18 75.28 75.70 86.17 128.26
sd(wti)
## [1] 19.4601
Biến WTI có giá trị trung bình là 75,70 tức tỷ giá trung bình của dầu là 75,70USD và giá trị trung vị là 75,28. Biến này đạt giá trị nhỏ nhất là 24,07 USD và đạt lớn nhất là 128,26 USD. Với độ lệch chuẩn là 17,4601 USD
hist.wti = ggplot(data = data,aes(wti))+ geom_histogram(aes(y=after_stat(density)),color="black",fill="lavender", bins = 30)+ stat_function(fun = dnorm, args = list(mean = mean(wti,na.rm = TRUE),sd = sd(wti,na.rm = TRUE)), color ='brown',linewidth = 1)
hist.wti
qqnorm(wti)
qqline(wti)
Cặp giả thuyết - đối thuyết
\(H_0\): Biến WTI tuân theo phân phối chuẩn
\(H_1\): Biến WTI không tuân theo phân phối chuẩn
shapiro.test(wti)
##
## Shapiro-Wilk normality test
##
## data: wti
## W = 0.98233, p-value = 5.364e-09
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến WTI không tuân theo phân phối chuẩn.
Phân phối loga chuẩn
Cặp giả thuyết - đối thuyết
\(H_0\): Biến WTI tuân theo phân phối loga chuẩn
\(H_1\): Biến WTI không tuân theo phân phối loga chuẩn
ks.test(wti, y = 'plnorm')
## Warning in ks.test.default(wti, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: wti
## D = 0.99927, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến WTI không tuân theo phân phối loga chuẩn.
Phân phối mũ
Cặp giả thuyết - đối thuyết
\(H_0\): Biến WTI tuân theo phân phối mũ
\(H_1\): Biến WTI không tuân theo phân phối mũ
ks.test(wti, y = 'pexp')
## Warning in ks.test.default(wti, y = "pexp"): ties should not be present for the
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: wti
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến WTI không tuân theo phân phối mũ.
Phân phối đều
Cặp giả thuyết - đối thuyết
\(H_0\): Biến WTI tuân theo phân phối đều
\(H_1\): Biến WTI không tuân theo phân phối đều
ks.test(wti, y = 'punif')
## Warning in ks.test.default(wti, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: wti
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến WTI không tuân theo phân phối đều.
5. Biến VCB
summary(vcb)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 43925 69018 76368 76543 82400 106500
sd(vcb)
## [1] 11004.54
Biến VCB có giá trị trung bình là 76543 VND và giá trị trung vị là 76368. Biến này đạt giá trị nhỏ nhất là 43925VND và đạt lớn nhất là 106500VND. Với độ lệch chuẩn là 11004,54VND
hist.vcb = ggplot(data = data,aes(vcb))+ geom_histogram(aes(y=after_stat(density)),color="black",fill="lavender", bins = 30)+ stat_function(fun = dnorm, args = list(mean = mean(vcb,na.rm = TRUE),sd = sd(vcb,na.rm = TRUE)), color ='brown',linewidth = 1)
hist.vcb
qqnorm(vcb)
qqline(vcb)
Cặp giả thuyết - đối thuyết
\(H_0\): Biến VCB tuân theo phân phối chuẩn
\(H_1\): Biến VCB không tuân theo phân phối chuẩn
shapiro.test(vcb)
##
## Shapiro-Wilk normality test
##
## data: vcb
## W = 0.98591, p-value = 1.226e-07
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến VCB không tuân theo phân phối chuẩn.
Phân phối loga chuẩn
Cặp giả thuyết - đối thuyết
\(H_0\): Biến VCB tuân theo phân phối loga chuẩn
\(H_1\): Biến VCB không tuân theo phân phối loga chuẩn
ks.test(vcb, y = 'plnorm')
## Warning in ks.test.default(vcb, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: vcb
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến VCB không tuân theo phân phối loga chuẩn.
Phân phối mũ
Cặp giả thuyết - đối thuyết
\(H_0\): Biến VCB tuân theo phân phối mũ
\(H_1\): Biến VCB không tuân theo phân phối mũ
ks.test(vcb, y = 'pexp')
## Warning in ks.test.default(vcb, y = "pexp"): ties should not be present for the
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: vcb
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến VCB không tuân theo phân phối mũ.
Phân phối đều
Cặp giả thuyết - đối thuyết
\(H_0\): Biến VCB tuân theo phân phối đều
\(H_1\): Biến VCB không tuân theo phân phối đều
ks.test(vcb, y = 'punif')
## Warning in ks.test.default(vcb, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: vcb
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến VCB không tuân theo phân phối đều.
6. Biến CTG
summary(ctg)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 12824 22692 28050 26748 30911 41141
sd(ctg)
## [1] 6202.461
Biến CTG có giá trị trung bình là 26748VND và giá trị trung vị là 28050. Biến này đạt giá trị nhỏ nhất là 12824VND và đạt lớn nhất là 41141VND. Với độ lệch chuẩn là 6202,461VND
hist.ctg = ggplot(data = data,aes(ctg))+ geom_histogram(aes(y=after_stat(density)),color="black",fill="lavender", bins = 30)+ stat_function(fun = dnorm, args = list(mean = mean(ctg,na.rm = TRUE),sd = sd(ctg,na.rm = TRUE)), color ='brown',linewidth = 1)
hist.ctg
qqnorm(ctg)
qqline(ctg)
Cặp giả thuyết - đối thuyết
\(H_0\): Biến CTG tuân theo phân phối chuẩn
\(H_1\): Biến CTG không tuân theo phân phối chuẩn
shapiro.test(ctg)
##
## Shapiro-Wilk normality test
##
## data: ctg
## W = 0.9623, p-value = 1.627e-14
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến CTG không tuân theo phân phối chuẩn.
Phân phối loga chuẩn
Cặp giả thuyết - đối thuyết
\(H_0\): Biến CTG tuân theo phân phối loga chuẩn
\(H_1\): Biến CTG không tuân theo phân phối loga chuẩn
ks.test(ctg, y = 'plnorm')
## Warning in ks.test.default(ctg, y = "plnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: ctg
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến CTG không tuân theo phân phối loga chuẩn.
Phân phối mũ
Cặp giả thuyết - đối thuyết
\(H_0\): Biến CTG tuân theo phân phối mũ
\(H_1\): Biến CTG không tuân theo phân phối mũ
ks.test(ctg, y = 'pexp')
## Warning in ks.test.default(ctg, y = "pexp"): ties should not be present for the
## Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: ctg
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến CTG không tuân theo phân phối mũ.
Phân phối đều
Cặp giả thuyết - đối thuyết
\(H_0\): Biến CTG tuân theo phân phối đều
\(H_1\): Biến CTG không tuân theo phân phối đều
ks.test(ctg, y = 'punif')
## Warning in ks.test.default(ctg, y = "punif"): ties should not be present for
## the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: ctg
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
Kết quả kiểm định cho thấy p-value < 0,05 nên ta không thừa nhận giả thuyết \(H_0\), tại mức ý nghĩa 5% thì biến CTG không tuân theo phân phối đều.
mh <- lm(exr ~ vni + hnx + sp500 + xau + wti + vcb + ctg)
summary(mh)
##
## Call:
## lm(formula = exr ~ vni + hnx + sp500 + xau + wti + vcb + ctg)
##
## Residuals:
## Min 1Q Median 3Q Max
## -643.44 -145.41 -22.71 95.89 1129.77
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.787e+04 2.333e+02 119.430 < 2e-16 ***
## vni -4.600e+00 2.207e-01 -20.844 < 2e-16 ***
## hnx 2.135e+00 4.455e-01 4.793 1.92e-06 ***
## sp500 3.222e-01 4.972e-02 6.482 1.49e-10 ***
## xau -2.209e+00 1.044e-01 -21.163 < 2e-16 ***
## wti 1.412e+01 1.131e+00 12.482 < 2e-16 ***
## vcb 1.936e-02 1.464e-03 13.222 < 2e-16 ***
## ctg 1.174e-02 3.551e-03 3.306 0.000984 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 252.5 on 896 degrees of freedom
## Multiple R-squared: 0.6363, Adjusted R-squared: 0.6334
## F-statistic: 223.9 on 7 and 896 DF, p-value: < 2.2e-16
Từ kết quả mô hình thể hiện các yếu tố có tác động đến tỷ giá hối đoái tại Việt Nam được xây dựng như sau:
\[EXR = 2,787e^{+04} - 4,600e^{+00} VNI + 2,135e^{+00} HNX + 3,222e^{-01} SP500 - 2,209e^{+00} XAU + 1,412e^{+01}WTI + 1,936e^{-02}VCB + 1,174e^{-02}CTG\]
Giá trị R-squared của mô hình là 0,89 tức biến độc lập trong mô hình giải thích được 89% sự biến thiên của biến phụ thuộc.
Thông qua kết quả hồi quy cho thấy có 6 biến có ý nghĩa thống kê tại mức ý nghĩa 5%. Trong điều kiện các yếu tố khác không đổi:
Biến VNI có mối tương quan ngược chiều với tỷ giá hối đoái (EXR) cho thấy khi chỉ số VNindex tăng 1 điểm thì tỷ giá hối đoái sẽ giảm \(4.600^{+00}\).
Biến HNX có mối tương quan cùng chiều với tỷ giá hối đoái (EXR) cho thấy khi chỉ số HNXindex tăng 1 điểm thì tỷ giá hối đoái sẽ tăng \(2,135e^{+00}\).
Biến SP500 có mối tương quan cùng chiều với tỷ giá hối đoái (EXR) cho thấy khi chỉ số HNXindex tăng 1 điểm thì tỷ giá hối đoái sẽ tăng \(3,222e^{-01}\).
Biến XAU có mối tương quan ngược chiều với tỷ giá hối đoái (EXR) cho thấy khi tỷ giá vàng tăng 1 USD thì tỷ giá hối đoái sẽ giảm \(2,209e^{-00}\).
Biến WTI có mối tương quan cùng chiều với tỷ giá hối đoái (EXR) cho thấy khi tỷ giá dầu tăng 1 USD thì tỷ giá hối đoái sẽ tăng \(1,412e^{+00}\).
Biến VCB có mối tương quan cùng chiều với tỷ giá hối đoái (EXR) cho thấy khi giá cổ phiếu VCB tăng 1 thì tỷ giá hối đoái sẽ tăng \(1,936e^{-02}\).
Biến CTG có mối tương quan cùng chiều với tỷ giá hối đoái (EXR) cho thấy khi giá cổ phiếu CTG tăng 1 thì tỷ giá hối đoái sẽ tăng \(1,174e^{-02}\).
Sau khi kiểm định phân phối cho các biến độc lập thì kết quả cho thấy các biến độc lập đều không tuân theo phân phối nào. Vì thế tác giả sẽ sử dụng chuyển động Brown để mô phỏng lại các biến độc lập theo công thức sau:
set.seed(100)
simulate_stock_price <- function(S0, r, sigma, N, dt) {
# Mô phỏng z theo phân phối chuẩn
Z <- rnorm(N, mean = 0, sd = 1)
# Tạo ra vecto rỗng chứa các giá trị của giá cổ phiếu
prices <- numeric(N)
prices[1] <- S0
for (i in 1:(N-1)) {
drift <- (r - 0.5 * sigma^2) * dt
diffusion <- sigma * sqrt(dt) * Z[i]
prices[i+1] <- prices[i] * exp(drift + diffusion)
}
return(prices)
}
# Parameters
S0 <- vni[1] # Giá cổ phiếu ban đầu
r <- 0.05 # Lãi suất phi rủi ro
sigma <- sd(diff(log(vni))) # Độ biến động tỷ giá
N <- 10000 # Mô phỏng trong 10000 ngày
dt <- 1/N
set.seed(100)
VNI <- simulate_stock_price(S0, r, sigma, N, dt)
plot(VNI, type = 'l', col = 'pink', main = "Chỉ số VN-index", ylab = "VNI", xlab = "Ngày")
hist(VNI)
set.seed(100)
simulate_stock_price <- function(S0, r, sigma, N, dt) {
# Mô phỏng z theo phân phối chuẩn
Z <- rnorm(N, mean = 0, sd = 1)
# Tạo ra vecto rỗng chứa các giá trị của giá cổ phiếu
prices <- numeric(N)
prices[1] <- S0
for (i in 1:(N-1)) {
drift <- (r - 0.5 * sigma^2) * dt
diffusion <- sigma * sqrt(dt) * Z[i]
prices[i+1] <- prices[i] * exp(drift + diffusion)
}
return(prices)
}
# Parameters
S0 <- hnx[1] # Giá cổ phiếu ban đầu
r <- 0.05 # Lãi suất phi rủi ro
sigma <- sd(diff(log(hnx))) # Độ biến động tỷ giá
N <- 10000 # Mô phỏng trong 10000 ngày
dt <- 1/N
set.seed(100)
HNX <- simulate_stock_price(S0, r, sigma, N, dt)
plot(HNX, type = 'l', col = 'pink', main = "Chỉ số HNX-index", ylab = "HNX", xlab = "Ngày")
hist(HNX)
set.seed(100)
simulate_stock_price <- function(S0, r, sigma, N, dt) {
# Mô phỏng z theo phân phối chuẩn
Z <- rnorm(N, mean = 0, sd = 1)
# Tạo ra vecto rỗng chứa các giá trị của giá cổ phiếu
prices <- numeric(N)
prices[1] <- S0
for (i in 1:(N-1)) {
drift <- (r - 0.5 * sigma^2) * dt
diffusion <- sigma * sqrt(dt) * Z[i]
prices[i+1] <- prices[i] * exp(drift + diffusion)
}
return(prices)
}
# Parameters
S0 <- sp500[1] # Giá cổ phiếu ban đầu
r <- 0.05 # Lãi suất phi rủi ro
sigma <- sd(diff(log(sp500))) # Độ biến động tỷ giá
N <- 10000 # Mô phỏng trong 10000 ngày
dt <- 1/N
set.seed(100)
SP500 <- simulate_stock_price(S0, r, sigma, N, dt)
plot(SP500, type = 'l', col = 'pink', main = "Chỉ số S&P", ylab = "SP500", xlab = "Ngày")
hist(SP500)
set.seed(100)
simulate_stock_price <- function(S0, r, sigma, N, dt) {
# Mô phỏng z theo phân phối chuẩn
Z <- rnorm(N, mean = 0, sd = 1)
# Tạo ra vecto rỗng chứa các giá trị của giá cổ phiếu
prices <- numeric(N)
prices[1] <- S0
for (i in 1:(N-1)) {
drift <- (r - 0.5 * sigma^2) * dt
diffusion <- sigma * sqrt(dt) * Z[i]
prices[i+1] <- prices[i] * exp(drift + diffusion)
}
return(prices)
}
# Parameters
S0 <- xau[1] # Giá cổ phiếu ban đầu
r <- 0.05 # Lãi suất phi rủi ro
sigma <- sd(diff(log(xau))) # Độ biến động tỷ giá
N <- 10000 # Mô phỏng trong 10000 ngày
dt <- 1/N
set.seed(100)
XAU <- simulate_stock_price(S0, r, sigma, N, dt)
plot(XAU, type = 'l', col = 'pink', main = "Tỷ giá vàng", ylab = "XAU", xlab = "Ngày")
hist(XAU)
set.seed(100)
simulate_stock_price <- function(S0, r, sigma, N, dt) {
# Mô phỏng z theo phân phối chuẩn
Z <- rnorm(N, mean = 0, sd = 1)
# Tạo ra vecto rỗng chứa các giá trị của giá cổ phiếu
prices <- numeric(N)
prices[1] <- S0
for (i in 1:(N-1)) {
drift <- (r - 0.5 * sigma^2) * dt
diffusion <- sigma * sqrt(dt) * Z[i]
prices[i+1] <- prices[i] * exp(drift + diffusion)
}
return(prices)
}
# Parameters
S0 <- wti[1] # Giá cổ phiếu ban đầu
r <- 0.05 # Lãi suất phi rủi ro
sigma <- sd(diff(log(wti))) # Độ biến động tỷ giá
N <- 10000 # Mô phỏng trong 10000 ngày
dt <- 1/N
set.seed(100)
WTI <- simulate_stock_price(S0, r, sigma, N, dt)
plot(WTI, type = 'l', col = 'pink', main = "Tỷ giá dầu", ylab = "WTI", xlab = "Ngày")
hist(WTI)
set.seed(100)
simulate_stock_price <- function(S0, r, sigma, N, dt) {
# Mô phỏng z theo phân phối chuẩn
Z <- rnorm(N, mean = 0, sd = 1)
# Tạo ra vecto rỗng chứa các giá trị của giá cổ phiếu
prices <- numeric(N)
prices[1] <- S0
for (i in 1:(N-1)) {
drift <- (r - 0.5 * sigma^2) * dt
diffusion <- sigma * sqrt(dt) * Z[i]
prices[i+1] <- prices[i] * exp(drift + diffusion)
}
return(prices)
}
# Parameters
S0 <- vcb[1] # Giá cổ phiếu ban đầu
r <- 0.05 # Lãi suất phi rủi ro
sigma <- sd(diff(log(vcb))) # Độ biến động tỷ giá
N <- 10000 # Mô phỏng trong 10000 ngày
dt <- 1/N
set.seed(100)
VCB <- simulate_stock_price(S0, r, sigma, N, dt)
plot(VCB, type = 'l', col = 'pink', main = "Giá CP VCB", ylab = "VCB", xlab = "Ngày")
hist(VCB)
set.seed(100)
simulate_stock_price <- function(S0, r, sigma, N, dt) {
# Mô phỏng z theo phân phối chuẩn
Z <- rnorm(N, mean = 0, sd = 1)
# Tạo ra vecto rỗng chứa các giá trị của giá cổ phiếu
prices <- numeric(N)
prices[1] <- S0
for (i in 1:(N-1)) {
drift <- (r - 0.5 * sigma^2) * dt
diffusion <- sigma * sqrt(dt) * Z[i]
prices[i+1] <- prices[i] * exp(drift + diffusion)
}
return(prices)
}
# Parameters
S0 <- ctg[1] # Giá cổ phiếu ban đầu
r <- 0.05 # Lãi suất phi rủi ro
sigma <- sd(diff(log(ctg))) # Độ biến động tỷ giá
N <- 10000 # Mô phỏng trong 10000 ngày
dt <- 1/N
set.seed(100)
CTG <- simulate_stock_price(S0, r, sigma, N, dt)
plot(CTG, type = 'l', col = 'pink', main = "Giá CP CTG", ylab = "CTG", xlab = "Ngày")
hist(CTG)
Mô hình đã được xây dựng:
\[EXR = 2,787e^{+04} - 4,600e^{+00} VNI + 2,135e^{+00} HNX + 3,222e^{-01} SP500 - 2,209e^{+00} XAU + 1,412e^{+01}WTI + 1,936e^{-02}VCB + 1,174e^{-02}CTG\]
# Mô phỏng mô hình
EXR <- 2.787e+04 - 4.600e+00*VNI + 2.135e+00*HNX + 3.222e-01*SP500 - 2.209e+00*XAU + 1.412e+01*WTI + 1.936e-02*VCB + 1.174e-02*CTG
hist(EXR)
summary(EXR)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 22872 22943 23008 23004 23065 23130
Sau khi mô phỏng các yếu tố có ảnh hưởng đến tỷ giá hối đoái trong vòng 10000 ngày, ta thấy tỷ giá hối đoái có giá trị trung bình là 23004 VND/USD và có giá trị trung vị là 23008 VND/USD. Trong 10000 ngày tới, tỷ giá hối đoái đạt giá trị lớn nhất là 23130 VND/USD và nhỏ nhất là 22872 VND/USD.
# Đặt quy ước nếu tỷ giá hối đoái được xem là cao nếu lớn hơn hoặc bằng 23000 và tỷ giá hối đoái được xem là thấp nếu nhỏ hơn 23000
EXRthap <- EXR[EXR < 23000]
EXRcao <- EXR[EXR >= 23000]
table(cut(EXR,breaks=2))
##
## (2.29e+04,2.3e+04] (2.3e+04,2.31e+04]
## 4787 5213
table(cut(EXR,2,labels = c('thap','cao')))
##
## thap cao
## 4787 5213
length(EXRthap)/length(EXR)
## [1] 0.4762
Từ kết quả trên ta thấy xác xuất tỷ giá hối đoái có giá dưới 23000 VND/USD là 47,62%, hay nói cách khác trong 10000 ngày nữa thì xác suất để giá của tỷ giá hối đoái dưới 23000 VND/USD là 47,62%.
length(EXRcao)/length(EXR)
## [1] 0.5238
Từ kết quả trên ta thấy xác xuất tỷ giá hối đoái có giá bằng hoặc cao hơn 23000 VND/USD là 52,38%, hay nói cách khác trong 10000 ngày nữa thì xác suất để giá của tỷ giá hối đoái bằng và cao hơn 23000VND/USD là 52,38%.
Từ kết quả trên thông qua việc mô phỏng ngẫu nhiên các nhân tố bao gồm chỉ cố VN-index, HNX-index, S&P-index, tỷ giá vàng (XAU), tỷ giá dầu (WTI), giá cổ phiếu ngân hàng Vietcombank và ngân hàng Vietinbank có ảnh hưởng đến tỷ giá hối đoái của Việt Nam. Kết quả cho thấy rằng trong 10000 ngày nữa xác suất để tỷ giá hối đoái của Việt Nam có giá cao hơn 23000VND/USD là 52,38%. Có thể thấy trong tương lai khi tỷ giá hối đoái tăng sẽ có lợi cho các doanh nghiệp trong hoạt động xuất nhập khẩu. Ngoài ra việc dự báo này có thể giúp cho các nhà hoạch định chính sách và ngân hàng trung ương đưa ra lựa chọn chính sách tỷ giá hối đoái phù hợp với nền kinh tế Việt Nam.