Em xin gửi lời cảm ơn chân thành đến thầy Trần Mạnh Tường đã hướng dẫn, hỗ trợ cho em trong suốt quá trình học tập và thực hiện bài tiểu luận này.
Vì kiến thức bản thân còn nhiều hạn chế nên không thể tránh khỏi những sai sót nên em rất mong nhận được những góp ý từ thầy cũng như các bạn để có thể hoàn thiện hơn kiến thức của mình.Một lần nữa, em xin chân thành cảm ơn!
Chỉ số VN30 là một chỉ số quan trọng của thị trường chứng khoán Việt Nam, đại diện cho 30 công ty có vốn hóa thị trường lớn nhất và thanh khoản cao nhất trên sàn giao dịch HOSE giúp nhà đầu tư đo lường hiệu suất thị trường, đồng thời cũng là một thước đo quan trọng để đánh giá tình hình kinh tế và tài chính của Việt Nam hỗ trợ các chuyên gia và nhà đầu tư trong việc xác định hướng đầu tư và lựa chọn các cổ phiếu tiềm năng nhằm mang lại lợi nhuận.
Chỉ số VN30 phản ánh biến động của thị trường và tác động của nhiều yếu tố khác nhau trong đó giá cổ phiếu của các công ty trong rỗ VN30 có tác động trực tiếp đến giá trị của chỉ số. Sự biến động giá cổ phiếu phụ thuộc vào nhiều yếu tố như tình hình doanh nghiệp liên quan đến doanh thu, lợi nhuận,cổ tức, chính sách kinh doanh của công t. Ngoài ra là sự ảnh hưởng của thị trường chung, tình hình kinh tế chính trị trong, ngoài nước và tâm lý nhà đầu tư cũng ảnh hưởng đáng kể đến chỉ số này.
Tuy nhiên trong khuôn khổ bài nghiên cứu, em chỉ xem xét mô phỏng tác động của giá cổ phiếu các công ty trong rỗ VN30 đến chỉ số VN30 dựa trên mô hình hồi quy tuyến tính đa biến.
Củng cố kiến thức lý thuyết được học.
Mô phỏng tác động của giá cổ phiếu các công ty trong rỗ VN30 đến chỉ số VN30.
Dữ liệu nghiên cứu: Thu thập giá trị chỉ số VN30 và giá đóng cửa theo ngày của các cổ phiếu từ 25/03/2021 đến 21/07/2023 của 30 công ty trong rỗ VN30. (Dựa vào danh mục VN30 kỳ tháng 7/2023 do Sở Giao dịch Chứng khoán TP.HCM đã công bố)
Link dữ liệu : https://docs.google.com/spreadsheets/d/1iZm-UhgufGoNpwA2d9a2iMF6FDGMQ5Gg/edit?usp=sharing&ouid=115122603206656803042&rtpof=true&sd=true
Bảng dữ liệu cụ thể:
library(readxl)
datampnn <- read_excel("D:/mpnn/datampnn.xlsx")
library(DT)
datampnn %>% DT::datatable(datampnn)
Mô phỏng tác động của giá cổ phiếu các công ty trong rỗ VN30 đến chỉ số VN30 trong 1000 ngày.
Mô hình hồi quy tuyến tính đa biến có dạng:
\[Y_t = \beta_0 + \beta_1X_{1t} + \beta_2X_{2t} + \dots + \beta_{kt}X_{kt} + u_t\]
Trong đó:
\(Y_t\) là biến phụ thuộc
\(k\) là biến giải thích \(X_{it}\), trong đó \(i=1,2,...,k\)
Trong mô hình hồi quy trên sai số \(\epsilon\) thường được giả định thỏa mãn:
\[ u_t ≈ niid(0,\sigma^2), t=1,2,...,n \]
Normally distributed (n): Phân phối chuẩn
Independently (i): Độc lập (đồng phương sai bằng không)
Identically (i): giống nhau (trung bình và phương sai giống nhau). Trung bình bằng 0 và phương sai bằng \(\sigma^2\)
Do vậy, sai số hồi quy được giả định là nhiễu trắng (white noise) có phân phối chuẩn.
=> Tham số ước lượng OLS \(\beta_{kt}\) là phân phối chuẩn và có thể sử dụng suy diễn thống kê (kiểm định giả thuyết và ước lượng khoảng tin cậy).
Mục tiêu của việc ước lượng hệ số hồi quy là tìm các giá trị \(\beta_0\),\(\beta_1t\), \(\beta_2t\), \(\dots\), \(\beta_kt\) 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ố \(u_t\).
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.
Phương pháp Monte Carlo được sử dụng để ước lượng giá trị trung bình \(\mu\) của một biến ngẫu nhiên \(X\). Giả sử quá trình mô phỏng sinh được biến ngẫu nhiên \(X\). Quá trình đó được lặp lại n lần độc lập, sinh ra n biến ngẫu nhiên độc lập, cùng phân phối \(X_1\),\(X_2\),\(\dots\) ,\(X_n\). Ước lượng \(\mu = EX\) thông qua: \[ \mu_n = (1/n) Σ_{i=1}^{n} X_i\]
Giá trị \(\mu_n\) được gọi là ước lượng thử lặp hay ước lượng thử thống kê đối với \(\mu\). Luật yếu các số lớn Khinchin khẳng định:
Nếu \(E|X_1| < \infty\), thì \(\mu_n → ^Pµ\). Như vậy, \(\mu_n\) là một ước lượng vững cho \(\mu\). Mặc khác ta cũng có \(E\mu_n=\mu\) nên \(\mu_n\) cũng là một ước lượng không chệch cho \(\mu\). Do đó nếu chúng ta tiến hành số n lần lặp lại mô phỏng khá lớn thì \(\mu_n\) sẽ rất gần \(\mu\). Điều này cho thấy Luật yếu các số lớn dạng Khinchin là cơ sở toán học cho phương pháp Monte Carlo.
Để đánh giá sai số và tốc độ hội tụ trong ước lượng bằng phương pháp Monte Carlo, xét các kết quả cổ điển trong Lý thuyết xác suất:
Giả sử \(\mu_n\) là ước lượng thử thống kê của \(\mu=E(X)\) sao cho \(Var(X) = {\sigma}^2 < \infty\). Khi đó, có một đánh giá sai số của ước lượng thử thống kê thông qua bất đẳng thức Chebyshev như sau: \[ P(|\mu_n - \mu| \leq {k\sigma}/\sqrt{n} ) \geq 1 - 1/k^2 \] với mọi k > 0
Như vậy, khi đánh giá sai số của ước lượng thử thống kê thông qua bất đẳng thức Chebyshev, ta thấy rằng với xác suất không bé hơn \(1- 1/k^2\), sai số của ước lượng thử thống kê là \(k\sigma/\sqrt{n}\) với k > 0 bất kỳ (chẳng hạn, với k=10, thì với xác suất không bé hơn 0,99, sai số ước lượng thử thống kê là \(10\sigma/\sqrt{n}\))
Giả sử \(Var(X) = {\sigma}^2 <
\infty\), Định lý giới hạn trung tâm cho thấy: \[ n^{−1/2}(\mu_n -\mu) → ^D\sigma
N(0,1)\]
khi n → \(\infty\).
Ở đây \(→ ^D\) chỉ sự hội tụ theo phân phối. Giới hạn trên có thể biểu diễn dưới dạng sau: \[ \mu_n ≈^D \mu + N(0,1) {\sigma/ \sqrt{n}} \] khi n lớn.
D ở đây ≈ là ký hiệu chỉ sự xấp xỉ theo phân phối. Do đó nếu số lần mô phỏng n là lớn, sai số trong phương pháp Monte Carlo sẽ:
Giảm theo tỷ lệ \(n^{-1/2}\) tức là sai số của ước lượng thử thống kê có dạng \(0(n^{-1/2})\).
Xấp xỉ phân phối chuẩn chính tắc.
Phụ thuộc dữ liệu bài toán chỉ qua phương sai \(\sigma^2 = Var(X)\).
Như vậy, với n đủ lớn sai số của ước lượng thử thống kê có thể được đánh giá qua kết quả sau:
Giả sử \(\mu_n\) là ước lượng thử thống kê của \(\mu=E(X)\), sao cho \(Var(X) = {\sigma}^2 < \infty\). Khi đó với n đủ lớn, ta có thể có một đánh giá sai số của ước lượng thử thống kê \(\mu_n\) đối với \(\mu\) theo quy tắc \(k - \sigma\) sau: \[ P(|\mu_n - \mu|) \leq k\sigma/\sqrt{n} ≈ \phi(k) - \phi(-k) \] trong đó \[ \phi(k) = 1/\sqrt{(2\pi)} \int_{-∞}^{x} e^{{-1/2} t^2}dt \]
Tốc độ hội tụ của phương pháp Monte Carlo dạng \(n^{-1/2}\). Điều này cho thấy nếu yêu cầu độ chính xác thêm 1 con số thì ta phải tăng n lên 100 lần. Vì vậy Phương pháp Monte Carlo thường chỉ được sử dụng khi nó thoả mãn yêu cầu chính xác đến ít nhất 2 hoặc 3 con số có ý nghĩa. Vì có tốc độ hội tụ chậm, nên sai số trong tính toán Monte Carlo cần được tính thông qua khoảng tin cậy. Để xây dựng khoảng tin cậy cho phương pháp Monte Carlo, ta chú ý rằng: với mỗi \(z\) > 0,
Do biến cố \[ lim_{n \to \infty} P(-z \leq {\mu_n - \mu}/ \sqrt{n}\sigma \leq z ) = P(-z \leq N(0,1) \leq z)\] Tương đương với biến cố \[ -z \leq {\mu_n - \mu}/ \sqrt{n}\sigma \leq z \] Nên \[ \mu_n - {\sigma z}/\sqrt{n}\leq \mu \leq \mu_n + {\sigma z}/\sqrt{n}\] Vì vậy nếu \(z\) được chọn: \[ lim_{n \to \infty} P(\mu \in [\mu_n - {\sigma z}/\sqrt{n} , \mu_n + {\sigma z}/\sqrt{n}]) = P(-z \leq N(0,1) \leq z)\] sao cho \(P(-z \leq N(0,1) \leq z) = 1-{\delta}\) (chẳng hạn cho 1 - \(\delta\) = 0.95 thì \(z\)= 1.96), ta có: \[ lim_{n \to \infty} P(\mu \in [\mu_n - {\sigma z}/\sqrt{n} , \mu_n + {\sigma z}/\sqrt{n}]) = 1-\delta\] Nói cách khác, khi n lớn, khoảng \[[\mu_n - {\sigma z}/\sqrt{n} , \mu_n + {\sigma z}/\sqrt{n}])\] là khoảng tin cậy 100%(1-\(\delta\)) cho \(\mu\).
Dĩ nhiên khoảng tin cậy trên không thể tính được trong thực tế vì \(\mu\) chưa biết. Rất may, \(\sigma\) có thể được ước lượng thông qua độ lệch tiêu chuẩn mẫu, được xác định như sau: \[\hat{s_n} = \sqrt{{1/{n-1}}\sum_{i=1}^{n} (X_i - \mu_n)^2} \] Vì vậy khoảng tin cậy cho phương pháp Monte Carlo sẽ là \[[\mu_n - {\hat{s_n} z}/\sqrt{n} , \mu_n + {\hat{s_n}z}/\sqrt{n}])\]
Các phương pháp sinh ra dãy các biến ngẫu nhiên độc lập \(X_1\),\(X_2\),\(\dots\) ,\(X_n\) với hàm phân phối xác suất chung \(F(x)\) hay hàm mật độ xác suất \(p(x)\) cho trước.
Giả sử rằng tồn tại một biến ngẫu nhiên \(U ∼ Unif(0, 1)\). Trên cơ sở của biến ngẫu nhiên \(U\) có phân phối đều, một số phương pháp sinh các biến ngẫu nhiên có phân phối không đều sau:
Phương pháp tra cứu bảng
Phương pháp biến đổi ngược
Phương pháp hợp thành
Phương pháp chập các phân phối
Phương pháp chấp nhận và bác bỏ
Mô hình xác suất cho phân phối tần suất của một biến số ngẫu nhiên liên tục có liên quan đến sự chọn lựa một đường cong, được gọi là phân phối xác suất hay hàm mật độ xác suất của biến số ngẫu nhiên đó. Nếu phương trình của phân phối xác suất liên tục này được ký hiệu là \(f(x)\), thì xác suất của \(x\) rơi vào khoảng \(a < x < b\) là diện tích bên dưới đường phân phối xác suất \(f(x)\) giữa hai điểm \(a\) và \(b\).
Khi đó, đồ thị của một phân phối xác suất chuẩn với trung bình \(\mu\) và độ lệch chuẩn \(\sigma\) với trung bình \(\mu\) nằm ở trung tâm của phân phối và phân phối này có tính đối xứng qua trung bình \(\mu\) của nó. Do tổng diện tích nằm dưới phân phối xác suất chuẩn này là bằng với 1, điều này hàm ý rằng diện tích nằm về phía bên phải của \(\mu\) là 0,5 và diện tích nằm ở phía bên trái của \(\mu\) cũng là 0,5. Hình dạng của phân phối này được quyết định bởi \(\sigma\), độ lệch chuẩn của tổng thể. Những giá trị lớn của \(\sigma\) làm giảm đi chiều cao của đường cong và làm tăng bề rộng; các giá trị nhỏ của \(\sigma\) làm tăng chiều cao của đường cong và làm giảm bề rộng.
Trong khuôn bài nghiên cứu, em chỉ xem xét mô phỏng tác động của giá cổ phiếu các công ty trong rỗ VN30 đến chỉ số VN30 dựa trên mô hình hồi quy tuyến tính đa biến. Khi đó mô hình hồi quy mẫu được xây dựng như sau:
\[\hat{VN30} = \hat\beta_0 + \hat\beta_1ACB + \hat\beta_2BCM +\hat\beta_3BID + \hat\beta_4BVH + \hat\beta_5CTG + \hat\beta_6FPT + \hat\beta_7GAS + \hat\beta_8GVR + \hat\beta_9HDB + \hat\beta_{10}HPG + \hat\beta_{11}MBB + \hat\beta_{12}MSN + \hat\beta_{13}MWG + \hat\beta_{14}PLX + \hat\beta_{15}POW + \hat\beta_{16}SAB +\hat\beta_{17}SHB + \hat\beta_{18}SSB + \hat\beta_{19}SSI + \hat\beta_{20}STB + \hat\beta_{21}TCB + \hat\beta_{22}TPB + \hat\beta_{23}VCB + \hat\beta_{24}VHM + \hat\beta_{25}VIB + \hat\beta_{26}VIC +\hat\beta_{27}VJC + \hat\beta_{28}VNM +\hat\beta_{29}VPB + \hat\beta_{30}VRE \]
Trong đó:
library(ggplot2)
library(readxl)
datampnn <- read_excel("D:/mpnn/datampnn.xlsx")
plot(datampnn$VN30 ~ datampnn$ACB,pch=16 )
abline(lm(datampnn$VN30~datampnn$ACB))
plot(datampnn$VN30 ~ datampnn$BCM,pch=16 )
abline(lm(datampnn$VN30~datampnn$BCM))
plot(datampnn$VN30 ~ datampnn$BID,pch=16 )
abline(lm(datampnn$VN30~datampnn$BID))
plot(datampnn$VN30 ~ datampnn$BVH,pch=16 )
abline(lm(datampnn$VN30~datampnn$BVH))
plot(datampnn$VN30 ~ datampnn$CTG,pch=16 )
abline(lm(datampnn$VN30~datampnn$CTG))
plot(datampnn$VN30 ~ datampnn$FPT,pch=16 )
abline(lm(datampnn$VN30~datampnn$FPT))
plot(datampnn$VN30 ~ datampnn$GAS,pch=16 )
abline(lm(datampnn$VN30~datampnn$GAS))
plot(datampnn$VN30 ~ datampnn$GVR,pch=16 )
abline(lm(datampnn$VN30~datampnn$GVR))
plot(datampnn$VN30 ~ datampnn$HDB,pch=16 )
abline(lm(datampnn$VN30~datampnn$HDB))
plot(datampnn$VN30 ~ datampnn$HPG,pch=16 )
abline(lm(datampnn$VN30~datampnn$HPG))
plot(datampnn$VN30 ~ datampnn$MBB,pch=16 )
abline(lm(datampnn$VN30~datampnn$MBB))
plot(datampnn$VN30 ~ datampnn$MSN,pch=16 )
abline(lm(datampnn$VN30~datampnn$MSN))
plot(datampnn$VN30 ~ datampnn$MWG,pch=16 )
abline(lm(datampnn$VN30~datampnn$MWG))
plot(datampnn$VN30 ~ datampnn$PLX,pch=16 )
abline(lm(datampnn$VN30~datampnn$PLX))
plot(datampnn$VN30 ~ datampnn$POW,pch=16 )
abline(lm(datampnn$VN30~datampnn$POW))
plot(datampnn$VN30 ~ datampnn$SAB,pch=16 )
abline(lm(datampnn$VN30~datampnn$SAB))
plot(datampnn$VN30 ~ datampnn$SHB,pch=16 )
abline(lm(datampnn$VN30~datampnn$SHB))
plot(datampnn$VN30 ~ datampnn$SSB,pch=16 )
abline(lm(datampnn$VN30~datampnn$SSB))
plot(datampnn$VN30 ~ datampnn$SSI,pch=16 )
abline(lm(datampnn$VN30~datampnn$SSI))
plot(datampnn$VN30 ~ datampnn$STB,pch=16 )
abline(lm(datampnn$VN30~datampnn$STB))
plot(datampnn$VN30 ~ datampnn$TCB,pch=16 )
abline(lm(datampnn$VN30~datampnn$TCB))
plot(datampnn$VN30 ~ datampnn$TPB,pch=16 )
abline(lm(datampnn$VN30~datampnn$TPB))
plot(datampnn$VN30 ~ datampnn$VCB,pch=16 )
abline(lm(datampnn$VN30~datampnn$VCB))
plot(datampnn$VN30 ~ datampnn$VHM,pch=16 )
abline(lm(datampnn$VN30~datampnn$VHM))
plot(datampnn$VN30 ~ datampnn$VIB,pch=16 )
abline(lm(datampnn$VN30~datampnn$VIB))
plot(datampnn$VN30 ~ datampnn$VIC,pch=16 )
abline(lm(datampnn$VN30~datampnn$VIC))
plot(datampnn$VN30 ~ datampnn$VJC,pch=16 )
abline(lm(datampnn$VN30~datampnn$VJC))
plot(datampnn$VN30 ~ datampnn$VNM,pch=16 )
abline(lm(datampnn$VN30~datampnn$VNM))
plot(datampnn$VN30 ~ datampnn$VPB,pch=16 )
abline(lm(datampnn$VN30~datampnn$VPB))
plot(datampnn$VN30 ~ datampnn$VRE,pch=16 )
abline(lm(datampnn$VN30~datampnn$VRE))
Dựa vào biểu đồ phân tán, ta thấy:
Biến ACB, BVH, CTG, GVR, HDB, HPG, MBB, MSN, MWG, PLX, POW, SHB, SSI, STB, TCB, TPB, VHM, VIB, VIC, VJC, VNM, VPB, VRE có mối quan hệ đồng biến với VN30. Khi đó dự đoán hệ số hồi quy của các biến độc lập nhận giá trị dương.
Biến BCM, BID, FPT, GAS, SAB, SSB, VCB có mối quan hệ nghịch biến với VN30.Khi đó dự đoán hệ số hồi quy của các biến độc lập nhận giá trị âm.
library(stats)
mohinh <- lm(VN30 ~ ACB + BCM + BID + BVH + CTG + FPT + GAS + GVR + HDB + HPG + MBB + MSN + MWG + PLX + POW + SAB + SHB + SSB + SSI + STB + TCB + TPB + VCB + VHM + VIB + VIC + VJC + VNM + VPB + VRE, data = datampnn)
summary(mohinh)
##
## Call:
## lm(formula = VN30 ~ ACB + BCM + BID + BVH + CTG + FPT + GAS +
## GVR + HDB + HPG + MBB + MSN + MWG + PLX + POW + SAB + SHB +
## SSB + SSI + STB + TCB + TPB + VCB + VHM + VIB + VIC + VJC +
## VNM + VPB + VRE, data = datampnn)
##
## Residuals:
## Min 1Q Median 3Q Max
## -25.6828 -3.2313 -0.1022 3.1162 22.2777
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.090e+02 1.387e+01 7.859 2.05e-14 ***
## ACB -4.032e-05 3.862e-04 -0.104 0.916886
## BCM -1.666e-04 7.383e-05 -2.256 0.024471 *
## BID -2.755e-04 2.641e-04 -1.043 0.297342
## BVH -5.615e-04 1.552e-04 -3.618 0.000324 ***
## CTG 1.664e-03 3.375e-04 4.929 1.10e-06 ***
## FPT 4.509e-04 9.934e-05 4.540 6.93e-06 ***
## GAS 3.207e-04 5.685e-05 5.642 2.69e-08 ***
## GVR 1.892e-03 2.549e-04 7.424 4.35e-13 ***
## HDB 2.418e-03 5.319e-04 4.546 6.74e-06 ***
## HPG 3.831e-03 1.923e-04 19.924 < 2e-16 ***
## MBB 4.421e-03 4.465e-04 9.901 < 2e-16 ***
## MSN 3.868e-04 5.133e-05 7.536 2.00e-13 ***
## MWG 2.674e-03 1.013e-04 26.393 < 2e-16 ***
## PLX -1.925e-04 1.645e-04 -1.170 0.242525
## POW 2.701e-03 4.194e-04 6.441 2.60e-10 ***
## SAB 1.394e-04 4.798e-05 2.905 0.003820 **
## SHB 1.863e-03 3.841e-04 4.850 1.61e-06 ***
## SSB 5.370e-04 2.233e-04 2.405 0.016524 *
## SSI -2.943e-04 1.639e-04 -1.795 0.073193 .
## STB 1.099e-03 3.312e-04 3.320 0.000961 ***
## TCB 2.581e-03 2.511e-04 10.280 < 2e-16 ***
## TPB 1.368e-04 2.041e-04 0.670 0.502871
## VCB 3.549e-04 9.691e-05 3.662 0.000274 ***
## VHM 1.243e-03 1.314e-04 9.459 < 2e-16 ***
## VIB 2.978e-03 2.288e-04 13.012 < 2e-16 ***
## VIC 1.310e-03 7.079e-05 18.497 < 2e-16 ***
## VJC 1.712e-04 6.210e-05 2.756 0.006046 **
## VNM 2.877e-04 1.291e-04 2.228 0.026312 *
## VPB 4.822e-03 3.244e-04 14.862 < 2e-16 ***
## VRE -1.067e-03 3.340e-04 -3.195 0.001479 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.903 on 550 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.9991, Adjusted R-squared: 0.9991
## F-statistic: 2.046e+04 on 30 and 550 DF, p-value: < 2.2e-16
Như vậy, mô hình hồi quy có dạng sau:
\[ VN30=109+(−0.00004032)×ACB+(−0.0001666)×BCM+(−0.0002755)×BID+(−0.0005615)×BVH+0.001664×CTG+0.0004509×FPT+0.0003207×GAS+0.001892×GVR+0.002418×HDB+0.003831×HPG+0.004421×MBB+0.0003868×MSN+0.002674×MWG+(−0.0001925)×PLX+0.002701×POW+0.0001394×SAB+0.001863×SHB+0.000537×SSB+(−0.0002943)×SSI+0.001099×STB+0.002581×TCB+0.0001368×TPB+0.0003549×VCB+0.001243×VHM+0.002978×VIB+0.001310×VIC+0.0001712×VJC+0.0002877×VNM+0.004822×VPB+(−0.001067)×VRE \]
Ý nghĩa mô hình:
Khi các yếu tố khác không thay đổi, giá cổ phiếu ACB tăng lên 1 đồng thì chỉ số VN30 giảm 0.0001666 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu BCM tăng lên 1 đồng thì chỉ số VN30 giảm 0.00004032 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu BID tăng lên 1 đồng thì chỉ số VN30 giảm 0.0002755 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu BVH tăng lên 1 đồng thì chỉ số VN30 giảm 0.0005615 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu CTG tăng lên 1 đồng thì chỉ số VN30 tăng 0.001664 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu FPT tăng lên 1 đồng thì chỉ số VN30 tăng 0.0004509 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu GAS tăng lên 1 đồng thì chỉ số VN30 tăng 0.0003207 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu GVR tăng lên 1 đồng thì chỉ số VN30 tăng 0.001892 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu HDB tăng lên 1 đồng thì chỉ số VN30 tăng 0.002418 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu HPG tăng lên 1 đồng thì chỉ số VN30 tăng 0.003831 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu MSN tăng lên 1 đồng thì chỉ số VN30 tăng 0.0003868 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu MWG tăng lên 1 đồng thì chỉ số VN30 tăng 0.002674 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu PLX tăng lên 1 đồng thì chỉ số VN30 giảm 0.0001925 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu POW tăng lên 1 đồng thì chỉ số VN30 tăng 0.002701 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu SAB tăng lên 1 đồng thì chỉ số VN30 tăng 0.0001394 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu SHB tăng lên 1 đồng thì chỉ số VN30 tăng 0.001863 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu SSB tăng lên 1 đồng thì chỉ số VN30 tăng 0.000537 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu SSI tăng lên 1 đồng thì chỉ số VN30 giảm 0.0002943 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu STB tăng lên 1 đồng thì chỉ số VN30 tăng 0.0001925 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu TCB tăng lên 1 đồng thì chỉ số VN30 tăng 0.002581 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu TPB tăng lên 1 đồng thì chỉ số VN30 tăng 0.0001368 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu VCB tăng lên 1 đồng thì chỉ số VN30 tăng 0.0003549 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu VHM tăng lên 1 đồng thì chỉ số VN30 tăng 0.001243 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu VIB tăng lên 1 đồng thì chỉ số VN30 tăng 0.002978 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu VIC tăng lên 1 đồng thì chỉ số VN30 tăng 0.001310 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu VJC tăng lên 1 đồng thì chỉ số VN30 tăng 0.0001712 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu VNM tăng lên 1 đồng thì chỉ số VN30 tăng 0.0002877 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu VPB tăng lên 1 đồng thì chỉ số VN30 tăng 0.004822 điểm.
Khi các yếu tố khác không thay đổi, giá cổ phiếu VRE tăng lên 1 đồng thì chỉ số VN30 giảm 0.001067 điểm.
Dựa vào kết quả ước lượng, ta thấy các biến BCM, BVH, CTG, FPT, GAS, GVR, HDB, HPG, MBB, MSN, MWG, POW, SHB, SSB, STB, TCB, VCB, VHM, VIB, VIC, VJC, VNM, VPB, VRE có hệ số ước lượng có ý nghĩa thống kê và có tác động đáng kể đến biến phụ thuộc VN30. Trong khi đó, các biến ACB, BID và PLX có hệ số không có ý nghĩa thống kê và có thể loại bỏ khỏi mô hình.
Như vậy có thể viết lại mô hình như sau:
\[VN30=109+(−0.0001666)×BCM+(−0.0005615)×BVH+0.001664×CTG+0.0004509×FPT+0.0003207×GAS+0.001892×GVR+0.002418×HDB+0.003831×HPG+0.004421×MBB+0.0003868×MSN+0.002674×MWG+0.002701×POW+0.0001394×SAB+0.001863×SHB+0.000537×SSB+(−0.0002943)×SSI+0.001099×STB+0.002581×TCB+0.0001368×TPB+0.0003549×VCB+0.001243×VHM+0.002978×VIB+0.001310×VIC+0.0001712×VJC+0.0002877×VNM+0.004822×VPB+(−0.001067)×VRE\]
Dựa vào kết quả mô hình hồi quy mẫu, ta thấy:
Hệ số xác định mô hình $R^2=0.9991 $. Điều này có nghĩa là 99,91% biến động của chỉ số VN30 được giải thích bởi giá các cổ phiếu trong rỗ VN30.
Trị thống kê F-statistic có p-value < 0.05 nên có thể kết luận hàm hồi quy mẫu phù hợp hay có ít nhất một biến độc lập có tác động đến biến phụ thuộc.
Dựa vào dữ liệu mẫu nghiên mẫu, ta tính được trung bình và độ lệch chuẩn của các biến như sau:
library(readxl)
library(psych)
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
datampnn <- read_excel("D:/mpnn/datampnn.xlsx")
describe(datampnn)
## vars n mean sd median trimmed mad min
## VN30 1 582 1287.97 192.05 1284.83 1292.21 293.53 904.77
## ACB 2 582 24751.89 2532.90 24900.00 24728.81 2283.20 17500.00
## BCM 3 582 69009.08 14815.36 74704.00 69858.51 13485.73 33438.00
## BID 4 582 38172.73 5236.50 36700.00 37994.85 6078.66 28500.00
## BVH 5 582 51174.74 4500.92 50500.00 50958.99 4518.96 29797.00
## CTG 6 582 30100.39 4054.69 29450.00 29931.57 3610.13 19800.00
## FPT 7 582 78002.27 7652.08 78737.00 78629.24 5095.70 53458.00
## GAS 8 582 100974.47 11510.43 103186.00 101443.11 12150.65 26882.00
## GVR 9 582 25340.80 8426.92 24422.50 25214.40 12598.39 10000.00
## HDB 10 582 19952.06 2452.92 19680.00 19904.93 2453.70 14000.00
## HPG 11 582 28557.55 8101.92 27185.00 28444.32 10430.09 12100.00
## MBB 12 582 21705.98 3817.48 21917.00 21523.77 3952.61 14150.00
## MSN 13 582 101156.37 18695.84 102000.00 100897.80 23695.65 42569.00
## MWG 14 582 55972.92 12120.44 56202.50 55783.68 15952.03 37700.00
## PLX 15 582 43760.57 8610.57 41680.00 44038.58 10736.99 12393.00
## POW 16 582 13454.41 6858.71 13000.00 12984.08 1482.60 9580.00
## SAB 17 582 163119.32 15755.56 160954.50 162681.97 15931.28 12277.00
## SHB 18 582 14932.63 4070.60 13500.00 14865.76 5189.10 7704.00
## SSB 19 582 29429.00 3540.22 30475.00 30000.82 2186.84 15545.00
## SSI 20 582 27812.48 9019.36 24850.00 27122.75 8599.08 13900.00
## STB 21 582 26140.72 4413.45 26350.00 26265.88 4484.86 14850.00
## TCB 22 582 39824.79 10211.80 38800.00 40033.69 15344.91 19926.00
## TPB 23 582 25411.31 6027.84 23926.00 24785.22 4897.03 17438.00
## VCB 24 582 81805.69 8262.29 79250.00 81012.08 6158.72 62000.00
## VHM 25 582 65178.29 13333.92 65499.50 65600.30 18132.94 22804.00
## VIB 26 582 26460.61 6473.06 26150.00 26058.42 7825.90 17000.00
## VIC 27 582 77346.58 20692.69 77900.00 76112.61 28317.66 50100.00
## VJC 28 582 117969.36 13529.79 120000.00 117922.75 14677.74 92069.00
## VNM 29 582 76448.17 6755.01 76500.00 76491.32 6665.77 16019.00
## VPB 30 582 21192.25 3036.25 20766.50 21224.78 3805.09 14650.00
## VRE 31 581 29299.66 2515.90 29000.00 29168.92 2446.29 22200.00
## max range skew kurtosis se
## VN30 1572.46 667.69 -0.14 -1.49 7.96
## ACB 54387.00 36887.00 2.57 30.75 104.99
## BCM 97229.00 63791.00 -0.45 -1.13 614.12
## BID 58566.00 30066.00 0.36 -0.97 217.06
## BVH 62649.00 32852.00 0.23 0.23 186.57
## CTG 53809.00 34009.00 0.64 1.95 168.07
## FPT 96050.00 42592.00 -0.88 1.53 317.19
## GAS 130442.00 103560.00 -0.67 1.94 477.12
## GVR 41004.00 31004.00 0.08 -1.37 349.31
## HDB 26800.00 12800.00 0.17 -0.41 101.68
## HPG 43896.00 31796.00 0.10 -1.30 335.84
## MBB 70536.00 56386.00 3.63 44.03 158.24
## MSN 142286.00 99717.00 0.02 -1.04 774.97
## MWG 79582.00 41882.00 0.04 -1.42 502.41
## PLX 60817.00 48424.00 -0.18 -0.82 356.92
## POW 171223.00 161643.00 20.93 478.07 284.30
## SAB 196176.00 183899.00 -1.16 12.85 653.09
## SHB 22859.00 15155.00 0.15 -1.54 168.73
## SSB 35537.00 19992.00 -1.77 3.27 146.75
## SSI 49669.00 35769.00 0.57 -0.93 373.86
## STB 39350.00 24500.00 -0.24 -0.11 182.94
## TCB 58000.00 38074.00 -0.08 -1.49 423.29
## TPB 73626.00 56188.00 1.52 6.09 249.86
## VCB 106500.00 44500.00 0.86 0.21 342.48
## VHM 88722.00 65918.00 -0.20 -1.27 552.71
## VIB 98133.00 81133.00 2.51 24.00 268.32
## VIC 128100.00 78000.00 0.31 -1.10 857.74
## VJC 149000.00 56931.00 -0.06 -0.88 560.83
## VNM 95995.00 79976.00 -1.02 10.22 280.00
## VPB 32850.00 18200.00 0.05 -0.82 125.86
## VRE 36000.00 13800.00 0.39 -0.10 104.38
Tiến hành mô phỏng các biến độc lập trong 1000 ngày theo phân phối chuẩn với trung bình và độ lệch chuẩn tính được từ mẫu:
BCM <- rnorm(n = 1000, mean =69009.08, sd = 14815.36 )
BVH <- rnorm(n = 1000, mean =51174.74, sd = 4500.92 )
CTG <- rnorm(n = 1000, mean =30100.39, sd = 4054.69 )
FPT <- rnorm(n = 1000, mean =78002.27, sd = 7652.08 )
GAS <- rnorm(n = 1000, mean =100974.47, sd = 11510.43 )
GVR <- rnorm(n = 1000, mean =25340.80, sd = 8426.92 )
HDB <- rnorm(n = 1000, mean =19952.06, sd = 2452.92 )
HPG <- rnorm(n = 1000, mean =28557.55, sd = 8101.92 )
MBB <- rnorm(n = 1000, mean =21705.98, sd = 3817.48 )
MSN <- rnorm(n = 1000, mean =101156.37, sd = 18695.84 )
MWG <- rnorm(n = 1000, mean =55972.92, sd = 12120.44 )
POW <- rnorm(n = 1000, mean =13454.41, sd = 6858.71 )
SAB <- rnorm(n = 1000, mean =163119.32, sd = 15755.56 )
SHB <- rnorm(n = 1000, mean =14932.63, sd = 4070.60 )
SSB <- rnorm(n = 1000, mean =29429.00, sd = 3540.22 )
SSI <- rnorm(n = 1000, mean =27812.48, sd = 9019.36 )
STB <- rnorm(n = 1000, mean =26140.72, sd = 4413.45 )
TCB <- rnorm(n = 1000, mean =39824.79, sd = 10211.80 )
TPB <- rnorm(n = 1000, mean =25411.31, sd = 6027.84 )
VCB <- rnorm(n = 1000, mean =81805.69, sd = 8262.29 )
VHM <- rnorm(n = 1000, mean =65178.29, sd = 13333.92 )
VIB <- rnorm(n = 1000, mean =26460.61, sd = 6473.06 )
VIC <- rnorm(n = 1000, mean =77346.58, sd = 20692.69 )
VJC <- rnorm(n = 1000, mean =117969.36, sd = 13529.79 )
VNM <- rnorm(n = 1000, mean =76448.17, sd = 6755.01 )
VPB <- rnorm(n = 1000, mean =21192.25, sd = 21192.25 )
VRE <- rnorm(n = 1000, mean =29299.66, sd = 2515.90 )
VN30 = 109-0.0001666*BCM-0.0005615*BVH+0.001664*CTG+0.0004509*FPT+0.0003207*GAS+0.001892*GVR+0.002418*HDB+0.003831*HPG+0.004421*MBB+0.0003868*MSN+0.002674*MWG+0.002701*POW+0.0001394*SAB+0.001863*SHB+0.000537*SSB-0.0002943*SSI+0.001099*STB+0.002581*TCB+0.0001368*TPB+0.0003549*VCB+0.001243*VHM+0.002978*VIB+0.001310*VIC+0.0001712*VJC+0.0002877*VNM+0.004822*VPB-0.001067*VRE
VN30 <- data.frame(VN30)
library(psych)
describe(VN30)
## vars n mean sd median trimmed mad min max range skew
## VN30 1 1000 1305.1 128.32 1312.06 1305.66 124.51 789.93 1682.5 892.57 -0.12
## kurtosis se
## VN30 0.17 4.06
Từ kết quả thống kê mô tả mô phỏng chỉ số VN30 cho thấy:
Giá trị chỉ số VN30 trung bình là 1314.29 điểm
Giá trị chỉ số VN30 nhỏ nhất là 956.06 điểm
Giá trị chỉ số VN30 lớn nhất là 1715.7 điểm
Độ lệch chuẩn thể hiện mức độ biến động và phân tán của dữ liệu. Độ lệch chuẩn của VN30 là 123.23
Độ lệch (Skewness)và độ nhọn (Kurtosis) có giá trị gần bằng 0 cho thấy dữ liệu có phân phối gần chuẩn.
Trực quan hóa dữ liệu bằng biểu đồ histogram
library(ggplot2)
library(scales)
##
## Attaching package: 'scales'
## The following objects are masked from 'package:psych':
##
## alpha, rescale
ggplot(data = VN30, aes(x = VN30)) +
geom_histogram ( fill = "blue", col = "white") +
labs(x = "Số điểm",
y = "Số ngày",
title = "Biểu đồ mô phỏng giá trị chỉ số VN30") +
scale_x_continuous(labels = comma)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Kết quả mô phỏng chỉ số VN30 trong 1000 ngày cho thấy chỉ số có xu hướng tăng trưởng trong dài hạn từ 1.200 điểm lên đến 1.800 điểm. Tuy nhiên, trong quá khứ ta thấy chỉ số VN30 từng dao động từ 1.100 điểm đến 2.000 điểm, và có những giai đoạn giảm sâu do ảnh hưởng của các yếu tố vĩ mô và thị trường. Điều này có thể giải thích do nghiên cứu chỉ dựa trên các biến số trong quá khứ, không xem xét được các yếu tố ngoại lai như chính sách, sự kiện, tin đồn… có ảnh hưởng đến giá trị của các cổ phiếu trong rổ VN30.
Danh mục VN30 kỳ tháng 7/2023 do Sở Giao dịch Chứng khoán TP.HCM đã công bố:
library(readxl)
danhsachcongty <- read_excel("D:/mpnn/congtyVN30.xlsx")
library(DT)
danhsachcongty %>% DT::datatable(danhsachcongty)
[1] Trần Lộc Hùng và Trần Mạnh Tường (2017). Giáo trình Mô phỏng ngẫu nhiên, NXB Trường Đại học Tài chính – Marketing, TP.HCM.