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)

1 TUẦN 7. PHÂN TÍCH MÔ HÌNH BẰNG CÁCH PHƯƠNG PHÁP THỐNG KÊ

1.1 Thống kê Kết quả mô phỏng

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.

1.2 Thống kê phân loại chỉ số HSI

Ở đâ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.

1.3 Thống kê lời lỗ

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.

2 TUẦN 6. MÔ PHỎNG MÔ HÌNH

2.1 Mô hình mô phỏng

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)

2.2 Kết quả mô phỏng

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.

3 TUẦN 4.5. XÂY DỰNG MÔ HÌNH VÀ CHẠY MÔ HÌNH

3.1 Mô hình hồi quy

Để đá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\)

3.2 Kết quả mô hình hồi quy

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.

4 TUẦN 3.XÁC ĐỊNH PHÂN PHỐI CÁC BIẾN

4.1 Dữ liệu nghiên cứu

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.

4.2 Xác định phân phối các biến ngẫu nhiên

4.2.1 Chỉ số giá chứng khoán Hồng Kô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.

4.2.2 Chỉ số Standard & Poor’s 500 Stock

Đồ 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.

4.2.3 Giá tiền điện tử Bitcoin

Đồ 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.

4.2.4 Giá vàng

Đồ 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.

4.2.5 Giá dầu thô

Đồ 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ô.

5 TUẦN 2. GIẢI THÍCH VẤN ĐỀ CẦN MÔ PHỎNG

5.1 Vấn đề cần mô phỏng

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.

5.2 Mô hình đề xuất nghiên cứu

Để đá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),

5.3 Mô tả biến trong nghiên cứu

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.

6 TUẦN 1. MÔ PHỎNG CÁC BIẾN NGẪU NHIÊN

6.1 Phân phối Poisson

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") 

6.2 Phân phối nhị thức

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")

6.3 Phân phối chuẩn

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")

6.4 Phân phối Triangular

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 (%)")

6.5 Phân phối t

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()