Các gói thư viện sẽ dùng trong bài nghiên cứu
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ 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 conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(TeachingDemos)
library(dplyr)
library(nortest)
library(tseries)
## Warning: package 'tseries' was built under R version 4.3.1
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(extraDistr)
##
## Attaching package: 'extraDistr'
##
## The following object is masked from 'package:purrr':
##
## rdunif
library(fitdistrplus)
## Warning: package 'fitdistrplus' was built under R version 4.3.1
## Loading required package: MASS
##
## Attaching package: 'MASS'
##
## The following object is masked from 'package:dplyr':
##
## select
##
## Loading required package: survival
library(e1071)
library(exactci)
## Warning: package 'exactci' was built under R version 4.3.1
## Loading required package: ssanv
## Loading required package: testthat
## Warning: package 'testthat' was built under R version 4.3.1
##
## Attaching package: 'testthat'
##
## The following object is masked from 'package:dplyr':
##
## matches
##
## The following object is masked from 'package:purrr':
##
## is_null
##
## The following objects are masked from 'package:readr':
##
## edition_get, local_edition
##
## The following object is masked from 'package:tidyr':
##
## matches
library (DescTools)
library(epitools)
##
## Attaching package: 'epitools'
##
## The following object is masked from 'package:exactci':
##
## binom.exact
##
## The following object is masked from 'package:survival':
##
## ratetable
library(readxl)
library(summarytools)
## Warning: package 'summarytools' was built under R version 4.3.1
##
## Attaching package: 'summarytools'
##
## The following object is masked from 'package:tibble':
##
## view
DL <- read_excel("DL.xlsx")
model <- lm(DL$HSI ~ DL$SP500 + DL$BIT + DL$GOLD + DL$WTI)
n_bins <- 10
breaks <- quantile(DL$SP500, probs = seq(0, 1, length.out = n_bins + 1), type = 1, na.rm = TRUE)
set.seed(11)
SP500 <- sapply(2:length(breaks), function(i) sample(DL$SP500[DL$SP500 >= breaks[i - 1] & DL$SP500 <= breaks[i]], 10, replace = TRUE))
SP500S <- as.data.frame(table(SP500)) %>%
mutate(Tan_suat = Freq / sum(Freq))
prob1 <- SP500S$Tan_suat
set.seed(12)
SP5001 <- sample(SP500S$SP500, 10000, replace = TRUE , prob = prob1)
SP5002 <- as.character(SP5001)
SP500S <- as.numeric(SP5002)
n_bins <- 10
breaks <- quantile(DL$BIT, probs = seq(0, 1, length.out = n_bins + 1), type = 1, na.rm = TRUE)
set.seed(21)
BIT <- sapply(2:length(breaks), function(i) sample(DL$BIT[DL$BIT >= breaks[i - 1] & DL$BIT <= breaks[i]], 10, replace = TRUE))
BITS <- as.data.frame(table(BIT)) %>%
mutate(Tan_suat = Freq / sum(Freq))
prob2 <- BITS$Tan_suat
set.seed(22)
BIT1 <- sample(BITS$BIT, 10000, replace = TRUE , prob = prob2)
BIT2 <- as.character(BIT1)
BITS <- as.numeric(BIT2)
n_bins <- 10
breaks <- quantile(DL$GOLD, probs = seq(0, 1, length.out = n_bins + 1), type = 1, na.rm = TRUE)
set.seed(31)
GOLD <- sapply(2:length(breaks), function(i) sample(DL$GOLD[DL$GOLD >= breaks[i - 1] & DL$GOLD <= breaks[i]], 10, replace = TRUE))
GOLDS <- as.data.frame(table(GOLD)) %>%
mutate(Tan_suat = Freq / sum(Freq))
prob3 <- GOLDS$Tan_suat
set.seed(32)
GOLD1 <- sample(GOLDS$GOLD, 10000, replace = TRUE , prob = prob3)
GOLD2 <- as.character(GOLD1)
GOLDS <- as.numeric(GOLD2)
n_bins <- 10
breaks <- quantile(DL$WTI, probs = seq(0, 1, length.out = n_bins + 1), type = 1, na.rm = TRUE)
set.seed(41)
WTI <- sapply(2:length(breaks), function(i) sample(DL$WTI[DL$WTI >= breaks[i - 1] & DL$WTI <= breaks[i]], 10, replace = TRUE))
WTIS <- as.data.frame(table(WTI)) %>%
mutate(Tan_suat = Freq / sum(Freq))
prob4 <- WTIS$Tan_suat
set.seed(42)
WTI1 <- sample(WTIS$WTI, 10000, replace = TRUE , prob = prob4)
WTI2 <- as.character(WTI1)
WTIS <- as.numeric(WTI2)
HSI <- 30580 + 1.03*SP500S + 0.0478*BITS - 4.87*GOLDS - 33.62*WTIS
summary(HSI)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 19164 23461 24748 24701 25916 31230
Bảng tóm tắt kết quả mô phỏng 10000 quan sát HSI cho kết quả trung bình HSI rơi vào khoảng 24701 điểm, giá trị thấp nhất là 19164 điểm và giá trị cao nhất có thể đạt tới 31230 điểm. Trong 10000 quan sát thì có 25% (tương đương 2500 quan sát) có giá trị nhỏ hơn 23461 điểm và có khoảng 75% (7500 quan sát) có giá trị nhỏ hơn 25916 điểm.
Ở đây, tôi sẽ đưa ra một chuỗi quy tắc để phân loại các quan sát dựa trên giá trị của HSI. Cụ thể, nếu giá trị của một quan sát nhỏ hơn 22000 điểm, chúng sẽ được gán vào hạng “thấp”. Các quan sát có giá trị từ 22000 điểm đến 25000 điểm sẽ được xem xét ở hạng “vừa”, trong khi những giá trị lớn hơn 25000 điểm sẽ được phân loại vào hạng “cao”.
HSI thấp
HSIthap <- HSI[HSI < 22000]
length(HSIthap) #HSI thấp
## [1] 769
HSI vừa*
HSIvua <- HSI[HSI >= 22000 & HSI <= 25000]
length(HSIvua) # HSI vừa
## [1] 4795
HSI cao
HSIcao <- HSI[HSI > 25000]
length(HSIcao) # HSI cao
## [1] 4436
Dựa trên kết quả của mô phỏng với 10000 quan sát, chúng ta thấy rằng có tổng cộng 769 quan sát thuộc hạng “thấp” về chỉ số VNI (Chỉ số Chứng khoán Việt Nam), 4795 quan sát thuộc hạng “vừa”, và 4436 quan sát thuộc hạng “cao”. Những con số này mở ra một cái nhìn tích cực về tiềm năng tăng trưởng của thị trường chứng khoán Việt Nam, cho thấy xu hướng tích cực và khả năng phát triển đáng kể trong tương lai.
Xét ở thời điểm hiện tại (ngày 27/01/2023) thì chỉ số HSI có giá trị là 22668.9 điểm. Giả sử ta đầu tư vào chỉ số HSI, nếu HSI tăng lên hơn 10% (24935.79 điểm) thì được tính là lời, giảm hơn 10% (20402.01 điểm) thì tính là lỗ và nằm trong biên độ giao động \(\pm10%\) (từ 20402.01 điểm đến 24935.79 điểm) thì được tính là hoà vốn.
Đầu tư lỗ
lo <- HSI[HSI < 20402.01]
length(lo)
## [1] 71
Đầu tư hoà vốn*
hoavon <- HSI[HSI >= 20402.01 & HSI <= 24935.79]
length(hoavon)
## [1] 5349
Đầu tư lời
loi <- HSI[HSI > 24935.79]
length(loi)
## [1] 4580
Dựa vào kết quả phân tích, chúng ta thấy rằng tỷ lệ lỗ chiếm 0.71%, tỷ lệ hoà vốn là 53.49%, và tỷ lệ lời là 45.8% trong tổng số lần đầu tư. Tuy nhiên, trong thực tế, khi xem xét sự biến đổi lời/lỗ trong khoảng thời gian đầu tư, chúng ta thường coi các giá trị hoà vốn như là lỗ do sự mất giá của tài sản. Vì vậy, tôi quyết định kết hợp kết quả đầu tư gồm cả lỗ và hoà vốn lại với nhau.
Khi đó ta sẽ có kết quả khi đầu tư vào chỉ số HSI là 45.8% lời và 54.2% là lỗ. Rủi ro và lợi nhuận khi đầu tư vào HSI là gần như tương đương nhau.
Giả sử ta sẽ mô phỏng chỉ số giá chứng khoán Thượng Hải với các hệ số hồi quy như sau:
\(HSI = 30580 + 1.03SP500 + 0.0478BIT - 4.87GOLD - 33.62WTI\)
SP500
n_bins <- 10
breaks <- quantile(DL$SP500, probs = seq(0, 1, length.out = n_bins + 1), type = 1, na.rm = TRUE)
set.seed(11)
SP500 <- sapply(2:length(breaks), function(i) sample(DL$SP500[DL$SP500 >= breaks[i - 1] & DL$SP500 <= breaks[i]], 10, replace = TRUE))
SP500S <- as.data.frame(table(SP500)) %>%
mutate(Tan_suat = Freq / sum(Freq))
prob1 <- SP500S$Tan_suat
set.seed(12)
SP5001 <- sample(SP500S$SP500, 10000, replace = TRUE , prob = prob1)
SP5002 <- as.character(SP5001)
SP500S <- as.numeric(SP5002)
hist(SP500S)
BIT
n_bins <- 10
breaks <- quantile(DL$BIT, probs = seq(0, 1, length.out = n_bins + 1), type = 1, na.rm = TRUE)
set.seed(21)
BIT <- sapply(2:length(breaks), function(i) sample(DL$BIT[DL$BIT >= breaks[i - 1] & DL$BIT <= breaks[i]], 10, replace = TRUE))
BITS <- as.data.frame(table(BIT)) %>%
mutate(Tan_suat = Freq / sum(Freq))
prob2 <- BITS$Tan_suat
set.seed(22)
BIT1 <- sample(BITS$BIT, 10000, replace = TRUE , prob = prob2)
BIT2 <- as.character(BIT1)
BITS <- as.numeric(BIT2)
hist(BITS)
GOLD
n_bins <- 10
breaks <- quantile(DL$GOLD, probs = seq(0, 1, length.out = n_bins + 1), type = 1, na.rm = TRUE)
set.seed(31)
GOLD <- sapply(2:length(breaks), function(i) sample(DL$GOLD[DL$GOLD >= breaks[i - 1] & DL$GOLD <= breaks[i]], 10, replace = TRUE))
GOLDS <- as.data.frame(table(GOLD)) %>%
mutate(Tan_suat = Freq / sum(Freq))
prob3 <- GOLDS$Tan_suat
set.seed(32)
GOLD1 <- sample(GOLDS$GOLD, 10000, replace = TRUE , prob = prob3)
GOLD2 <- as.character(GOLD1)
GOLDS <- as.numeric(GOLD2)
hist(GOLDS)
WTI
n_bins <- 10
breaks <- quantile(DL$WTI, probs = seq(0, 1, length.out = n_bins + 1), type = 1, na.rm = TRUE)
set.seed(41)
WTI <- sapply(2:length(breaks), function(i) sample(DL$WTI[DL$WTI >= breaks[i - 1] & DL$WTI <= breaks[i]], 10, replace = TRUE))
WTIS <- as.data.frame(table(WTI)) %>%
mutate(Tan_suat = Freq / sum(Freq))
prob4 <- WTIS$Tan_suat
set.seed(42)
WTI1 <- sample(WTIS$WTI, 10000, replace = TRUE , prob = prob4)
WTI2 <- as.character(WTI1)
WTIS <- as.numeric(WTI2)
hist(WTIS)
HSI <- 30580 + 1.03*SP500S + 0.0478*BITS - 4.87*GOLDS - 33.62*WTIS
summary(HSI)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 19164 23461 24748 24701 25916 31230
hist(HSI)
Bảng tóm tắt kết quả mô phỏng 10000 quan sát HSI cho kết quả trung bình HSI rơi vào khoảng 24701 điểm, giá trị thấp nhất là 19164 điểm và giá trị cao nhất có thể đạt tới 31230 điểm. Trong 10000 quan sát thì có 25% (tương đương 2500 quan sát) có giá trị nhỏ hơn 23461 điểm và có khoảng 75% (7500 quan sát) có giá trị nhỏ hơn 25916 điểm.
Để đánh giá tác động của các nhân tố vĩ mô đến chỉ số giá chứng khoán Việt Nam, mô hình hồi quy được xây dựng như sau:
\(HSI=β_0+β_1 SP500 + β_2 BIT+β_3 GOLD + β_4 WTI\)
DL <- read_excel("DL.xlsx")
model <- lm(DL$HSI ~ DL$SP500 + DL$BIT + DL$GOLD + DL$WTI)
summary(model)
##
## Call:
## lm(formula = DL$HSI ~ DL$SP500 + DL$BIT + DL$GOLD + DL$WTI)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9934.2 -1699.2 141.7 1985.5 7928.1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.058e+04 5.337e+02 57.310 < 2e-16 ***
## DL$SP500 1.030e+00 1.812e-01 5.686 1.47e-08 ***
## DL$BIT 4.777e-02 9.129e-03 5.233 1.82e-07 ***
## DL$GOLD -4.870e+00 4.014e-01 -12.135 < 2e-16 ***
## DL$WTI -3.362e+01 2.911e+00 -11.552 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2914 on 2273 degrees of freedom
## Multiple R-squared: 0.1581, Adjusted R-squared: 0.1566
## F-statistic: 106.7 on 4 and 2273 DF, p-value: < 2.2e-16
Kết quả nghiên cứu có phương trình như sau:
\(HSI = 30580 + 1.03SP500 + 0.0478BIT - 4.87GOLD - 33.62WTI\)
Vì giá trị thống kê F có p_value =2.2e-16 < 0.05 nên ta có thể kết luận mô hình có ý nghĩa thống kê ở mức ý nghĩa 5% và các biến độc lập có ảnh hưởng đến biến phụ thuộc. Cụ thể:
Khi các yếu tố độc lập bằng 0 thì HSI có giá trị trung bình là 30580 điểm.
Khi các yếu tố khác không thay đổi, chỉ số S&P 500 tăng lên 1 điểm thì chỉ số HSI tăng lên 1.03 điểm.
Khi các yếu tố khác không đổi, giá Bitcoin tăng 1 USD thì chỉ số HSI tăng 0.0478 điểm.
Khi các yếu tố khác không đổi, giá Vàng tăng lên 1 USD/ounce thì chỉ số HSI giảm -4.87 điểm.
Khi các yếu tố khác không đổi, giá Dầu thô tăng lên 1 USD/thùng thì chỉ số HSI giảm 33.62 điểm.
DL <- read_excel("DL.xlsx")
View(DL)
summary(DL) #Thống kê mô tả các dữ liệu
## VNI SP500 N225 BIT
## Min. : 426.1 Min. :1457 Min. :10487 Min. : 13.5
## 1st Qu.: 589.3 1st Qu.:2052 1st Qu.:16932 1st Qu.: 443.8
## Median : 828.3 Median :2591 Median :20594 Median : 4204.2
## Mean : 849.3 Mean :2746 Mean :20833 Mean :10727.3
## 3rd Qu.:1007.9 3rd Qu.:3281 3rd Qu.:23429 3rd Qu.:11399.2
## Max. :1528.6 Max. :4794 Max. :30670 Max. :67526.0
## GOLD WTI EXR BOND
## Min. :1050 Min. :-37.63 Min. :20825 Min. :-0.0410
## 1st Qu.:1244 1st Qu.: 48.49 1st Qu.:21819 1st Qu.: 0.0350
## Median :1320 Median : 59.54 Median :22733 Median : 0.1770
## Mean :1440 Mean : 65.73 Mean :22514 Mean : 0.7119
## 3rd Qu.:1713 3rd Qu.: 85.28 3rd Qu.:23180 3rd Qu.: 1.3950
## Max. :2069 Max. :123.70 Max. :24871 Max. : 4.0700
## HSI
## Min. :14687
## 1st Qu.:22581
## Median :24388
## Mean :24701
## 3rd Qu.:27234
## Max. :33154
sd(DL$HSI)
## [1] 3173.355
Biến HSI có giá trị trung bình là 872.7 điểm và độ lệch chuẩn cao đến 278.54 điểm. Kết quả này cho thấy chỉ số giá chứng khoán Việt Nam trong khoảng thời gian nghiên cứu phân tán rộng và không đồng đều.
sd(DL$SP500)
## [1] 869.3622
Biến SP500 có giá trị trung bình là 2820 điểm và độ lệch chuẩn cao 844 điểm. Cũng tương tự như HSI, SP500 trong thời kì này cũng biến động nhiều.
sd(DL$N225)
## [1] 4747.572
Biến N225 có giá trị trung bình là 11413 điểm và độ lệch chuẩn 4428 điểm.
sd(DL$GOLD)
## [1] 257.8089
Biến GOLD có giá trị trung bình là 1438 USD/ounce và độ lệch chuẩn là 263 USD/ounce
sd(DL$WTI)
## [1] 22.57878
Biến WTI có giá trị trung bình là 63.75 USD/thùng và độ lệch chuẩn là 28.82 USD/thùng.
Đồ thị phân phối chỉ số HSI
hist(DL$HSI)
Kiểm định phân phối chuẩn
Giả thuyết:
\(H_0\): HSI tuân theo phân phối chuẩn
\(H_1\): HSI không tuân theo phân phối chuẩn
HSIG <- as.data.frame(DL$HSI)
shapiro.test(DL$HSI)
##
## Shapiro-Wilk normality test
##
## data: DL$HSI
## W = 0.99198, p-value = 6.884e-10
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là chỉ số HSI không có phân phối chuẩn.
Kiểm định phân phối Lognomal
Giả thuyết:
\(H_0\): HSI tuân theo phân phối Lognormal
\(H_1\): HSI không tuân theo phân phối Lognormal
ks.test(DL$HSI, "plnorm", meanlog = mean(log(DL$HSI)), sdlog = sd(log(DL$HSI)))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: DL$HSI
## D = 0.043665, p-value = 0.0003377
## alternative hypothesis: two-sided
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là chỉ số HSI không có phân phối Lognormal.
Phân phối t
Giả thuyết:
\(H_0\): HSI tuân theo phân phối t
\(H_1\): HSI không tuân theo phân phối t
t.test(DL$HSI)
##
## One Sample t-test
##
## data: DL$HSI
## t = 371.5, df = 2277, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 24570.11 24830.88
## sample estimates:
## mean of x
## 24700.5
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là chỉ số HSI không có phân phối t.
Sau khi kiểm định qua 3 phân phối chuẩn, Lognomal và phân phối t thì vẫn chưa thể xác định phân phối của chỉ số giá chứng khoán Hồng Kông.
Đồ thị phân phối chỉ số S&P 500
hist(DL$SP500)
Kiểm định phân phối chuẩn
Giả thuyết:
\(H_0\): S&P 500 tuân theo phân phối chuẩn
\(H_1\): S&P 500 không tuân theo phân phối chuẩn
SPG <- as.data.frame(DL$SP500)
shapiro.test(DL$SP500)
##
## Shapiro-Wilk normality test
##
## data: DL$SP500
## W = 0.92117, p-value < 2.2e-16
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là chỉ số S$P 500 không có phân phối chuẩn.
Kiểm định phân phối Lognomal
Giả thuyết:
\(H_0\): S&P 500 tuân theo phân phối Lognormal
\(H_1\): S&P 500 không tuân theo phân phối Lognormal
ks.test(DL$SP500, "plnorm", meanlog = mean(log(DL$SP500)), sdlog = sd(log(DL$SP500)))
## Warning in ks.test.default(DL$SP500, "plnorm", meanlog = mean(log(DL$SP500)), :
## ties should not be present for the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: DL$SP500
## D = 0.10715, p-value < 2.2e-16
## alternative hypothesis: two-sided
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là chỉ số S&P 500 không có phân phối Lognormal.
Phân phối t
Giả thuyết:
\(H_0\): S&P 500 tuân theo phân phối t
\(H_1\): S&P 500 không tuân theo phân phối t
t.test(DL$SP500)
##
## One Sample t-test
##
## data: DL$SP500
## t = 150.73, df = 2277, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 2709.822 2781.261
## sample estimates:
## mean of x
## 2745.541
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là chỉ số S&P 500 không có phân phối t.
Sau khi kiểm định qua 3 phân phối chuẩn, Lognomal và phân phối t thì vẫn chưa thể xác định phân phối của chỉ số S&P 500.
Đồ thị phân phối giá Bitcoin
hist(DL$BIT)
Kiểm định phân phối chuẩn
Giả thuyết:
\(H_0\): Giá Bitcoin tuân theo phân phối chuẩn
\(H_1\): Giá Bitcoin tuân theo phân phối chuẩn
BIG <- as.data.frame(DL$BIT)
shapiro.test(DL$BIT)
##
## Shapiro-Wilk normality test
##
## data: DL$BIT
## W = 0.70642, p-value < 2.2e-16
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là giá Bitcoin không có phân phối chuẩn.
Kiểm định phân phối Lognomal
Giả thuyết:
\(H_0\): Giá Bitcoin tuân theo phân phối Lognormal
\(H_1\): Giá Bitcoin không tuân theo phân phối Lognormal
ks.test(DL$BIT, "plnorm", meanlog = mean(log(DL$BIT)), sdlog = sd(log(DL$BIT)))
## Warning in ks.test.default(DL$BIT, "plnorm", meanlog = mean(log(DL$BIT)), :
## ties should not be present for the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: DL$BIT
## D = 0.13441, p-value < 2.2e-16
## alternative hypothesis: two-sided
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là Giá Bitcoin không có phân phối Lognormal.
Phân phối t
Giả thuyết:
\(H_0\): Giá Bitcoin tuân theo phân phối t
\(H_1\): Giá Bitcoin không tuân theo phân phối t
t.test(DL$BIT)
##
## One Sample t-test
##
## data: DL$BIT
## t = 33.133, df = 2277, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 10092.39 11362.21
## sample estimates:
## mean of x
## 10727.3
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là Giá Bitcoin không có phân phối t.
Sau khi kiểm định qua 3 phân phối chuẩn, Lognomal và phân phối t thì vẫn chưa thể xác định phân phối của giá Bitcoin.
Đồ thị phân phối giá vàng
hist(DL$GOLD)
Kiểm định phân phối chuẩn
Giả thuyết:
\(H_0\): Giá vàng tuân theo phân phối chuẩn
\(H_1\): Giá vàng không tuân theo phân phối chuẩn
GOG <- as.data.frame(DL$GOLD)
shapiro.test(DL$GOLD)
##
## Shapiro-Wilk normality test
##
## data: DL$GOLD
## W = 0.87486, p-value < 2.2e-16
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là giá vàng không có phân phối chuẩn.
Kiểm định phân phối Lognomal
Giả thuyết:
\(H_0\): Giá vàng tuân theo phân phối Lognormal
\(H_1\): Giá vàng không tuân theo phân phối Lognormal
ks.test(DL$GOLD, "plnorm", meanlog = mean(log(DL$GOLD)), sdlog = sd(log(DL$GOLD)))
## Warning in ks.test.default(DL$GOLD, "plnorm", meanlog = mean(log(DL$GOLD)), :
## ties should not be present for the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: DL$GOLD
## D = 0.18997, p-value < 2.2e-16
## alternative hypothesis: two-sided
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là Giá vàng không có phân phối Lognormal.
Phân phối t
Giả thuyết:
\(H_0\): Giá vàng tuân theo phân phối t
\(H_1\): Giá vàng không tuân theo phân phối t
t.test(DL$GOLD)
##
## One Sample t-test
##
## data: DL$GOLD
## t = 266.58, df = 2277, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 1429.350 1450.535
## sample estimates:
## mean of x
## 1439.942
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là Giá vàng không có phân phối t.
Sau khi kiểm định qua 3 phân phối chuẩn, Lognomal và phân phối t thì vẫn chưa thể xác định phân phối của giá Vàng.
Đồ thị phân phối giá dầu thô
hist(DL$WTI)
Kiểm định phân phối chuẩn
Giả thuyết:
\(H_0\): Giá dầu thô tuân theo phân phối chuẩn
\(H_1\): Giá dầu thô không tuân theo phân phối chuẩn
WG <- as.data.frame(DL$WTI)
shapiro.test(DL$WTI)
##
## Shapiro-Wilk normality test
##
## data: DL$WTI
## W = 0.94253, p-value < 2.2e-16
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là giá dầu thô không có phân phối chuẩn.
Kiểm định phân phối Lognomal
Giả thuyết:
\(H_0\): Giá dầu thô tuân theo phân phối Lognormal
\(H_1\): Giá dầu thô không tuân theo phân phối Lognormal
ks.test(DL$WTI, "plnorm", meanlog = mean(log(DL$WTI)), sdlog = sd(log(DL$WTI)))
## Warning in ks.test.default(DL$WTI, "plnorm", meanlog = mean(log(DL$WTI)), :
## ties should not be present for the Kolmogorov-Smirnov test
## Warning in log(DL$WTI): NaNs produced
## Warning in log(DL$WTI): NaNs produced
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: DL$WTI
## D = NA, p-value = NA
## alternative hypothesis: two-sided
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là Giá dầu thô không có phân phối Lognormal.
Phân phối t
Giả thuyết:
\(H_0\): Giá dầu thô tuân theo phân phối t
\(H_1\): Giá dầu thô không tuân theo phân phối t
t.test(DL$WTI)
##
## One Sample t-test
##
## data: DL$WTI
## t = 138.95, df = 2277, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 64.80719 66.66257
## sample estimates:
## mean of x
## 65.73488
Vì p_value = 2.2e-16 < 0.05 nên ta bác bỏ giả thuyết \(H_0\). Nghĩa là Giá dầu thô không có phân phối t.
Sau khi kiểm định qua 3 phân phối chuẩn, Lognomal và phân phối t thì vẫn chưa thể xác định phân phối của giá Dầu thô.
Thị trường chứng khoán Hồng Kông (Hong Kong Stock Exchange) là một trong những thị trường chứng khoán lớn và quan trọng tại khu vực Châu Á-Thái Bình Dương. Nó được quản lý và điều hành bởi Sở giao dịch chứng khoán Hồng Kông (Hong Kong Exchanges and Clearing Limited - HKEX).Bằng cách mô phỏng sự ảnh hưởng của các yếu tố vĩ mô đến thị trường chứng khoán, ta có thể tạo ra các mô hình và công cụ dự báo để đánh giá tiềm năng tăng trưởng, rủi ro và xu hướng của thị trường trong tương lai. Điều này có thể hỗ trợ các nhà đầu tư và doanh nghiệp trong việc ra quyết định đầu tư thông minh và hiệu quả.Vì những ký do đó, tôi quyết định chọn đề tài “Mô phỏng sự ảnh hưởng của các nhân tố vĩ mô đến thị trường chứng khoán Hồng Kông” để phục vụ cho việc học tập của mình.
Để đánh giá tác động của các nhân tố vĩ mô đến chỉ số giá chứng khoán Việt Nam, mô hình hồi quy được xây dựng như sau:
\(HSI=β_0+β_1 SP500+β_2 BIT+β_3 GOLD + β_4 WTI\)
Trong đó:
Biến phụ thuộc: HSI - Chỉ số chứng khoán Hồng Kông (Điểm).
Biến độc lập:
SP500 - Chỉ số S&P 500 (Điểm),
BIT - Giá Bitcoin (USD/đồng),
GOLD - Giá vàng (USD/ounce),
WTI - Giá dầu thô (USD/thùng),
HSI: là chỉ số chuẩn cho các cổ phiếu blue-chip được giao dịch trên thị trường chứng khoán Hồng Kông. Chỉ số này bao gồm bốn chỉ số tiểu ngành trong công nghiệp, tài chính, tiện ích và ủy thác đầu tư bất động sản.
SP500:là chỉ số đại diện cho thị trường chứng khoán Mỹ. đượ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ỹ. Tên đầy đủ của chỉ số này là Standard & Poor’s 500 Stock Index.
BIT: là giá Bitcoin được tính bằng USD
GOLD: là giá vàng (USD/ounce)
WTI: (USD/thùng) Là viết tắt của từ “West Texas Intermediate”, là một loại dầu thô được khai thác từ vùng đất khô cằn ở Tây Texas và Bắc Mỹ.
Dữ liệu nghiên cứu được thu nhập trên trang web investing.com.vn trong giai đoạn từ ngày 01/01/2013 đến ngày 31/12/2022 được sử dụng để phục vụ nghiên cứu.
Sử dụng phân phối Poisson để mô hình hóa số lượng lệnh MUA trong ngày của cổ phiếu công ty cổ phần Nam Việt. Dựa trên dữ liệu lịch sử 6 tháng gần nhất, trung bình có khoảng 19 lệnh MUA trong một ngày.
# Mô phỏng mẫu
ps <- rpois(n = 300,lambda = 19)
# Các đặc trưng đo lường
summary(ps)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.00 16.00 19.00 19.25 22.00 32.00
# Đồ thị
ps <- as.data.frame(table(ps))
ps <- ps |> mutate(prop = Freq/sum(Freq))
ps |> ggplot(aes(ps,prop)) + xlab("Số lệnh MUA trong ngày") +
geom_col(fill = "blue")
Trong lĩnh vực ngân hàng, phân phối nhị thức có thể được sử dụng để ước tính xác suất một khoản vay trở thành nợ xấu. Điều này giúp các ngân hàng đánh giá rủi ro và quản lý tốt hơn việc cho vay. Giả sử một khoản nợ vay trở thành nợ xấu của ngân hàng VCB xảy ra với xác suất 1%. Mô phỏng xác suất trở thành nợ xấu với 300 khoản nợ
# Mô phỏng mẫu
bn <- rbinom(n = 300, size = 1, prob = 0.01)
# Đếm số lần thành công và thất bại
n_success <- sum(bn)
n_failure <- 300 - n_success
# Tạo vector cho đồ thị
bar_data <- c(n_success, n_failure)
# Vẽ đồ thị cột
barplot(bar_data, names.arg = c("Nợ xấu", "Nợ không xấu"), xlab = "Kết quả", ylab = "Số khoản nợ", main = "Phân phối nhị thức")
Giá cổ phiếu SSI ngày 02/06/2023 đang được giao dịch ở mức 24,100 đồng, giá trị trung bình của cổ phiếu trong sáu tháng gần nhất \(\mu = 20800\) và độ lệch chuẩn \(\sigma = 489\). Với giả định rằng biến động hàng ngày của cổ phiếu SSI tuân theo phân phối chuẩn.Mô phỏng giá cổ phiếu trong 300 ngày tiếp theo.
# Mô phỏng mẫu
nm <- rnorm(n = 300, mean =20800, sd = 489 )
nm <- round(nm) #làm tròn
# Các đặc trưng đo lường
summary(nm)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 19410 20460 20815 20806 21129 22435
# Đồ thị
hist(nm, main = "Phân phối chuẩn", xlab = "Giá cổ phiếu SSI")
sử dụng phân phối Triangular, bạn có thể xác định một khoảng giá trị có thể xảy ra cho biên độ biến động hàng ngày của cổ phiếu. Giả sử giá cổ phiếu của SSI hiện tại là 19,800 đồng, giá trị thấp nhất là 18,200 đồng (8%), giá trị cao nhất là 24,100 đồng (21.7%).
# Mô phỏng mẫu
tg <- rtriang(n = 10000, a = 0.080, b = 0.217, c = (0.08+0.217)/2)
hist(tg, main = "Phân phối Triangular", xlab = "Biên độ biến động (%)")
Phân phối t thường được sử dụng trong các trường hợp khi dữ liệu không tuân theo phân phối chuẩn hoàn toàn. Ví dụ, khi mô hình hóa tỷ giá hối đoái giữa đồng USD và đồng JPY, có thể sử dụng phân phối t để mô hình hóa biến động và tính toán các giá trị xác suất tương ứng.
# Mô phỏng mẫu dữ liệu
sample_data<- rt(n = 1000, df = 10)
# Tạo dataframe
df <- data.frame(result = sample_data)
# Vẽ đồ thị
ggplot(data = df, aes(x = result)) +
geom_density(fill = "steelblue", alpha = 0.5) +
labs(x = "Giá trị", y = "Mật độ xác suất", title = "Phân phối t") +
theme_minimal()