library(readxl)
X50_CP_HNX=read_excel("D:/Term 5/ĐG1/50 CP HNX.xlsx")
returns = data.frame(X50_CP_HNX$`Ngày giao dịch`, matrix(rep(0,249*50), nrow = 249, ncol = 50))
colnames(returns) = colnames(X50_CP_HNX)
for(j in 2:ncol(X50_CP_HNX)) {
for(i in 2:nrow(X50_CP_HNX)) {
a = X50_CP_HNX[[i,j]]
b = X50_CP_HNX[[i-1,j]]
returns[[i,j]] = log(a/b)
}
}
returns = returns[-1,]
head(returns)
## Ngày giao dịch MAC KSF NSH IVS SCG
## 2 05/01/2022 0.06637507 0.03320867 0.007604599 -0.016620881 -0.00645580
## 3 06/01/2022 -0.01851905 0.09462470 0.093931820 -0.005602256 -0.01435119
## 4 07/01/2022 0.04567004 0.02817088 -0.035091320 0.005602256 -0.03885284
## 5 10/01/2022 -0.01801851 -0.10289442 0.000000000 -0.016901811 -0.01791916
## 6 11/01/2022 -0.02765153 -0.02115823 -0.014388737 -0.034685558 0.01518318
## 7 12/01/2022 -0.04785602 -0.02161559 -0.007272759 0.017493157 -0.02216157
## FID BNA NRC VGS AAV VFS
## 2 0.011049836 -0.014912219 -0.007068059 -0.01298696 -0.012127443 -0.011834458
## 3 0.053488685 -0.002528774 -0.014284002 -0.01315785 -0.004047223 -0.005970167
## 4 0.050772325 -0.005044188 -0.014494827 0.01750560 -0.024806678 0.000000000
## 5 0.009852296 -0.015253920 -0.037175839 -0.03307991 0.000000000 -0.018127385
## 6 -0.029852963 -0.025974615 -0.015269369 -0.04119504 -0.016901073 -0.012270093
## 7 -0.095310180 0.010484403 -0.075883675 -0.03084564 -0.056907140 -0.012422520
## EVS LIG API ITQ TTH IDJ
## 2 -0.012289846 0.005087030 -0.06803185 -0.01005034 -0.01227009 -0.03077266
## 3 0.000000000 0.010102355 -0.05798078 0.03960914 0.02439145 -0.05348792
## 4 -0.004910901 0.034567912 0.01628435 0.00000000 0.08096906 0.07410547
## 5 -0.022605504 -0.009752277 0.01022057 0.09265883 0.02197891 -0.02061756
## 6 -0.010204170 -0.040005019 -0.02204926 -0.04525659 -0.06744128 -0.01047041
## 7 0.015267472 -0.101969255 -0.05655288 -0.06701071 -0.03550669 -0.06299822
## HOM HAD MST CSC VNR L14
## 2 -0.01069529 -0.003470835 0.01591388 -0.003975876 -0.006268404 0.09530681
## 3 -0.01081092 -0.007112692 0.02597860 0.007936007 -0.009480731 0.09504478
## 4 -0.01092907 -0.021509133 0.00000000 0.003157713 0.000000000 0.09517759
## 5 0.09431068 -0.067450881 -0.04725389 0.046196546 -0.016001144 0.01550271
## 6 -0.04082199 0.041804877 -0.05526322 -0.014399496 -0.012984704 0.09531129
## 7 -0.02105341 -0.003748369 -0.01719067 -0.024730580 0.012984704 0.05921931
## AMV SRA LAS VC7 VCS IDV
## 2 0.006879349 -0.04115807 -0.028987537 -0.01972451 0.005965159 -0.007152851
## 3 0.013689517 0.00000000 0.004889985 -0.02419473 -0.005965159 -0.013052415
## 4 0.000000000 0.02489755 -0.009804000 0.09345317 -0.013771120 0.020205267
## 5 0.020224062 0.02429269 -0.087459305 0.08886839 -0.006084421 0.052878443
## 6 -0.047793103 -0.01612938 -0.027249642 0.00000000 -0.026495327 0.000000000
## 7 -0.057528658 -0.02469261 0.010989122 -0.07777770 -0.014429183 -0.027474421
## CMS PVB CTC DXP MBS DDG
## 2 0.085157808 -0.020101179 0.02150621 0.036534181 0.004889877 0.003262646
## 3 -0.088337461 0.010101096 0.06187540 -0.031893031 -0.019704633 0.006493529
## 4 0.003179653 0.005012542 -0.02020271 0.004619710 0.000000000 0.003231021
## 5 -0.032260862 0.000000000 0.06899287 -0.023309146 -0.045808484 0.003220615
## 6 -0.036732009 -0.030459207 -0.04879016 -0.009480297 -0.026386127 0.000000000
## 7 0.056213145 0.020408872 -0.04082199 -0.014391123 0.028986848 0.095017825
## THD TVD TNG TIG PVC PVS
## 2 0.005680259 0.007320881 0.02967568 0.003752002 -0.029483657 0.000000000
## 3 0.001889037 -0.029626580 0.00000000 0.025881594 0.005954569 0.003511985
## 4 0.001131712 0.044124691 0.05406742 -0.014704744 0.023529089 0.024458329
## 5 -0.017478389 -0.036639294 -0.05993178 -0.018694983 -0.041500232 -0.045866890
## 6 -0.003069864 -0.022642537 -0.02080419 -0.019046401 -0.030815991 -0.007264317
## 7 -0.008110448 0.007607287 -0.03670048 -0.059422644 0.060650813 0.035732588
## SHS NTP APS BVS BCC DL1
## 2 0.011568441 0.001659991 -0.06030661 -0.012209446 -0.016460403 0.00000000
## 3 -0.023272278 -0.004986304 -0.03297002 -0.007397868 -0.033756641 0.04000337
## 4 0.009750388 0.024692278 0.04639304 0.014741409 0.008546589 0.09352802
## 5 -0.047717137 -0.016394236 -0.04082199 -0.042347671 -0.004266370 -0.04256179
## 6 -0.041601069 0.003300807 -0.01680712 -0.028390056 -0.030367191 -0.07076790
## 7 0.045655990 0.000000000 -0.04625102 -0.005249053 0.013126305 -0.06187228
## HUT VC3 TAR
## 2 -0.019231362 0.008615013 0.03705306
## 3 0.042761859 -0.006884488 -0.02298719
## 4 0.009259325 0.003446861 -0.01877274
## 5 -0.052021185 -0.001721946 -0.05354025
## 6 0.000000000 0.010290068 -0.02277977
## 7 -0.054876610 -0.036492278 0.08338498
Tính quy mô vốn hóa của mỗi cổ phiếu (Stock - Size): Giá cuối tháng 6 \(\times\) Số cổ phiếu lưu hành
CS=read_excel("D:/Term 5/ĐG1/CS.xlsx")
head(CS)
## # A tibble: 6 × 6
## Stock `Khối lượng CP lưu hành` `Vốn CSH` `Tài sản vô hình` `Giá cuối tháng 6`
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 TTH 37374846 4.07e11 0 3100
## 2 FID 24715958 2.48e11 0 3200
## 3 SRA 43199974 6.30e11 0 6900
## 4 DL1 106236094 1.33e12 333801182 5000
## 5 ITQ 31843305 3.30e11 6660196800 4300
## 6 CTC 15799926 1.24e11 1101142284 4200
## # ℹ 1 more variable: Market <dbl>
CSVH<-CS$`Khối lượng CP lưu hành`*CS$`Giá cuối tháng 6`
CS1<-data.frame(CS,CSVH)
head(CS1)
## Stock Khối.lượng.CP.lưu.hành Vốn.CSH Tài.sản.vô.hình Giá.cuối.tháng.6
## 1 TTH 37374846 4.068710e+11 0 3100
## 2 FID 24715958 2.483844e+11 0 3200
## 3 SRA 43199974 6.299223e+11 0 6900
## 4 DL1 106236094 1.326969e+12 333801182 5000
## 5 ITQ 31843305 3.300238e+11 6660196800 4300
## 6 CTC 15799926 1.241249e+11 1101142284 4200
## Market CSVH
## 1 1800 115862022600
## 2 1700 79091065600
## 3 3000 298079820600
## 4 3000 531180470000
## 5 2600 136926211500
## 6 2000 66359689200
Chia 50 mã cổ phiếu thành hai nhóm, nhóm “Lớn” (Big Size) sẽ chứa các mã cổ phiếu có chỉ số vốn hoá thị trường lớn hơn trung vị (median) của dãy và nhóm “Nhỏ” (Small Size) chứa các mã cổ phiếu có chỉ số vốn hóa thị trường nhỏ hơn trung vị của dãy.
VHL = c() # tạo vector để lưu các mã chứng khoán
VHN = c()
for (i in 1:length(CSVH)){
if(CSVH[i]>median(CSVH)) {
VHL<-c(VHL,i)
}
if (CSVH[i]<median(CSVH)) {
VHN <-c(VHN,i)
}
}
Tính chỉ số của hai nhóm “Lớn”, “Nhỏ” và lợi suất của các chỉ số này: \(r_{big}\), \(r_{small}\)
por_Big = c()
por_Small = c()
for ( i in VHL){
por_Big<-c(por_Big,CS$Stock[i])
}
for ( i in VHN){
por_Small<-c(por_Small,CS$Stock[i])
}
cbind(por_Big,por_Small)
## por_Big por_Small
## [1,] "NRC" "TTH"
## [2,] "BCC" "FID"
## [3,] "TIG" "SRA"
## [4,] "LAS" "DL1"
## [5,] "EVS" "ITQ"
## [6,] "BVS" "CTC"
## [7,] "IDJ" "AMV"
## [8,] "SHS" "LIG"
## [9,] "API" "HAD"
## [10,] "TNG" "MST"
## [11,] "VNR" "HOM"
## [12,] "MBS" "DXP"
## [13,] "TAR" "AAV"
## [14,] "CSC" "NSH"
## [15,] "PVS" "IVS"
## [16,] "HUT" "CMS"
## [17,] "NTP" "TVD"
## [18,] "VCS" "VGS"
## [19,] "THD" "VC7"
## [20,] "VC3" "BNA"
## [21,] "VFS" "PVB"
## [22,] "DDG" "APS"
## [23,] "KSF" "PVC"
## [24,] "L14" "MAC"
## [25,] "SCG" "IDV"
Tính lợi suất của hai nhóm sau đó tính \(SMB = r_{small} - r_{big}\)
attach(returns)
dataB = data.frame(NRC,BCC,TIG,HUT,LAS,EVS,BVS,IDJ,SHS,API,TNG,VNR,MBS,TAR,CSC,PVS,NTP,VCS,THD,VC3,VFS,DDG,KSF,L14,SCG)
#head(dataB)
r_Big<-rowMeans(dataB)
dataS = data.frame(TTH,FID,SRA,DL1,ITQ,CTC,AMV,LIG,HAD,MST,HOM,DXP,AAV,NSH,IVS,CMS,VGS,VC7,BNA,PVB,APS,PVC,MAC,IDV,TVD)
r_Small<-rowMeans(dataS)
SMB=r_Small-r_Big
head(SMB)
## [1] -0.0009873598 0.0037899561 0.0088614668 0.0283514508 -0.0191950446
## [6] -0.0228536953
\(Giá \ trị \ sổ \ sách = \frac{Vốn \ chủ \ sở \ hữu - Tài \ sản \ vô \ hình}{Khối \ lượng \ cổ \ phiếu \ lưu \ hành}\)
Book = (CS$`Vốn CSH`-CS$`Tài sản vô hình`)/CS$`Khối lượng CP lưu hành`
BtM =Book/CS$Market
head(BtM)
## [1] 6.047903 5.911503 4.860514 4.162536 3.905707 3.893175
Sắp xếp toàn bộ các công ty có mặt trên thị trường theo thứ tự từ cao xuống thấp của chỉ số Book - to - Market.
BtM <- BtM[order(BtM,decreasing = TRUE)]
BtM
## [1] 6.0479031 5.9115032 4.8605142 4.1625361 3.9057074 3.8931750 3.7883268
## [8] 3.7384395 3.4103695 3.3660004 3.0714236 2.9943514 2.8964604 2.7257549
## [15] 2.7188822 2.0913181 1.9297522 1.8446815 1.8378748 1.7992619 1.7720356
## [22] 1.6215150 1.5873430 1.5500130 1.4984998 1.4717724 1.4636957 1.4340959
## [29] 1.3809078 1.3622458 1.3563329 1.3553092 1.2946851 1.2310490 1.0915296
## [36] 1.0595316 1.0518449 1.0395641 0.8944534 0.8194743 0.7582239 0.6809499
## [43] 0.5411027 0.4779424 0.4750028 0.4555115 0.3238457 0.3143654 0.2538102
## [50] 0.1985538
Chia thành hai nhóm, \(\frac13\) số công ty ở tốp đầu gọi là nhóm “Cao” (High - Ratio), \(\frac13\) số công ty ở nhóm cuối gọi là nhóm “Thấp” (Low - Ratio)
por_high = c()
por_low = c()
for ( i in 1:length(BtM)){
if ( i <18){
por_high= c(por_high,CS$Stock[i])
}
if(i>33){
por_low = c(por_low,CS$Stock[i])
}
}
cbind(por_high,por_low)
## por_high por_low
## [1,] "TTH" "VNR"
## [2,] "FID" "MBS"
## [3,] "SRA" "TAR"
## [4,] "DL1" "MAC"
## [5,] "ITQ" "CSC"
## [6,] "CTC" "IDV"
## [7,] "AMV" "PVS"
## [8,] "LIG" "HUT"
## [9,] "HAD" "NTP"
## [10,] "MST" "VCS"
## [11,] "NRC" "THD"
## [12,] "HOM" "VC3"
## [13,] "DXP" "VFS"
## [14,] "AAV" "DDG"
## [15,] "NSH" "KSF"
## [16,] "BCC" "L14"
## [17,] "IVS" "SCG"
dataH = data.frame(TTH,FID,SRA,DL1,ITQ,CTC,AMV,LIG,HAD,MST,NRC,HOM,DXP,AAV,NSH,BCC,IVS)
dataL = data.frame(VNR,MBS,TAR,MAC,CSC,IDV,PVS,HUT,NTP,VCS,THD,VC3,VFS,DDG,KSF,L14,SCG)
r_High = rowMeans(dataH)
r_Low = rowMeans(dataL)
HML=r_High-r_Low
head(HML)
## [1] -0.0136731846 0.0073648837 -0.0006314481 0.0222186140 -0.0288844024
## [6] -0.0409233582
Nhân tố thị trường tính bằng: \(r_{MarketIndex} - r_{f}\)
X50_CP_HNX_ff=read_excel("D:/Term 5/ĐG1/50-CP-HNX_ff.xlsx")
Market_Factor = X50_CP_HNX_ff$`r_HNX-Index`- X50_CP_HNX_ff$r_f
head(Market_Factor)
## [1] 0.013027275 0.009295961 0.018199239 -0.022512971 -0.002744504
## [6] -0.016777396
X50_CP_HNX_ff<-data.frame(X50_CP_HNX_ff,Market_Factor,SMB,HML)
head(X50_CP_HNX_ff)
## Date r_HNX.Index r_f Market_Factor SMB
## 1 05/01/2022 0.013117553 9.027778e-05 0.013027275 -0.0009873598
## 2 06/01/2022 0.009386238 9.027778e-05 0.009295961 0.0037899561
## 3 07/01/2022 0.018289517 9.027778e-05 0.018199239 0.0088614668
## 4 10/01/2022 -0.022422694 9.027778e-05 -0.022512971 0.0283514508
## 5 11/01/2022 -0.002654227 9.027778e-05 -0.002744504 -0.0191950446
## 6 12/01/2022 -0.016687118 9.027778e-05 -0.016777396 -0.0228536953
## HML
## 1 -0.0136731846
## 2 0.0073648837
## 3 -0.0006314481
## 4 0.0222186140
## 5 -0.0288844024
## 6 -0.0409233582
time=seq(1,248,length=248)
for(j in 2:ncol(returns)) {
if (j==2) {
plot(time,returns[,j],type="l",main="Đồ thị chuỗi lợi suất của 50 mã cổ phiếu trên sàn HNX",
xlab="",ylab="Lợi suất")
} else {
lines(time,returns[,j],type="l",col=j)
}
}
Như có thể thấy ở đồ thị trên, chuỗi lợi suất có xu hướng dao động quanh giá trị trung bình bằng \(0\) và có biên độ dao động nằm trong khoảng \((-0.1, 0.1)\).
Để thuận tiện hơn cho các phần phân tích dưới đây, ta vẽ đồ thị của 5 chuỗi lợi suất đầu tiên và cũng chính là 5 chuỗi lợi suất được dùng để tính ma trận hiệp phương sai và phân tích rủi ro danh mục
for(j in 2:6) {
if (j==2) {
plot(time,returns[,j],type="l",main="Đồ thị chuỗi lợi suất của 5 mã cổ phiếu trên sàn HNX",
xlab="",ylab="Lợi suất",
col=c("midnightblue","lightskyblue","dodgerblue","blue","slateblue"))
} else {
lines(time,returns[,j],type="l",col=j)
}
}
Ma trận tương quan giữa các nhân tố
cor(X50_CP_HNX_ff[,4:6])
## Market_Factor SMB HML
## Market_Factor 1.0000000 0.2316264 0.3936433
## SMB 0.2316264 1.0000000 0.7992975
## HML 0.3936433 0.7992975 1.0000000
Kết quả cho thấy hệ số tương quan giữa các nhân tố nằm trong khoảng \((0.2, 0.8)\). Tuy nhiên, theo các giả thiết của mô hình đa nhân tố thì các nhân tố không có tương quan với nhau. Vậy với dữ liệu của sàn giao dịch chứng khoán Hà Nội, các nhân tố có giải thích được cho tỷ suất sinh lời không?
Ước lượng mô hình với từng biến phụ thuộc
library(latex2exp)
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(lmtest)
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
library(ggplot2)
datanew<-data.frame(X50_CP_HNX_ff,returns[,-1]) #Xóa cột ngày giao dịch để dễ tính toán
coef_table=data.frame() #Tạo 1 bảng dữ liệu để lưu trữ các hệ số ước lượng
dependent=c(datanew[,7:56])
for (return in dependent){
model <- lm(return~Market_Factor+SMB+HML,data = datanew)
#print(summary(model))
#stargazer(model,type = "text")
coef_values<-coef(model)
coef_table<-rbind(coef_table,coef_values)
}
colnames(coef_table)=c("alpha_i","beta_MarketFactor","beta_SMB","beta_HML")
#Sử dụng tập dữ liệu "coef_table" để ước lượng phần bù rủi ro nhân tố và các phần sau
head(coef_table)
## alpha_i beta_MarketFactor beta_SMB beta_HML
## 1 0.0023837866 0.8890376 2.561450620 -1.2369677
## 2 -0.0002519259 0.2378145 -0.197886483 -0.1611583
## 3 0.0032167972 1.1374048 0.286267020 1.1095737
## 4 0.0007700349 0.9377463 0.001018681 0.7741092
## 5 0.0012399375 0.4534594 0.061792257 0.0482609
## 6 0.0010181358 1.1878662 0.660325590 0.8672210
Tập dữ liệu “coef_table” là các vector \(\hat{\beta}_{ik}\) sẽ được dùng để ước lượng phần bù rủi ro nhân tố và các phần sau
Vì khó để đánh giá tác động của các nhân tố tới từng tài sản nên ta phân tích thông qua 4 danh mục đại diện là SL, SH, BL và BH
# Nhập dữ liệu 4 danh mục đại diện
por=read_excel("D:/Term 5/ĐG1/por.xlsx")
datapor=data.frame(X50_CP_HNX_ff,por[5:8])
head(datapor)
## Date r_HNX.Index r_f Market_Factor SMB
## 1 05/01/2022 0.013117553 9.027778e-05 0.013027275 -0.0009873598
## 2 06/01/2022 0.009386238 9.027778e-05 0.009295961 0.0037899561
## 3 07/01/2022 0.018289517 9.027778e-05 0.018199239 0.0088614668
## 4 10/01/2022 -0.022422694 9.027778e-05 -0.022512971 0.0283514508
## 5 11/01/2022 -0.002654227 9.027778e-05 -0.002744504 -0.0191950446
## 6 12/01/2022 -0.016687118 9.027778e-05 -0.016777396 -0.0228536953
## HML r_porSH r_porSL r_porBL r_porBH
## 1 -0.0136731846 -0.0001211915 0.02961111 0.009858372 -0.011764231
## 2 0.0073648837 0.0202402821 -0.01578573 0.010795469 -0.024020322
## 3 -0.0006314481 0.0121611951 0.03293765 0.008088600 -0.002974119
## 4 0.0222186140 0.0083387033 0.01742997 -0.021929202 -0.020721105
## 5 -0.0288844024 -0.0330514934 -0.01382577 -0.001514839 -0.022818280
## 6 -0.0409233582 -0.0391855123 -0.03766522 0.008032499 -0.031378685
reg11=lm(data = datapor,r_porBH~Market_Factor)
reg21=lm(data = datapor,r_porBL~Market_Factor)
reg31=lm(data = datapor,r_porSH~Market_Factor)
reg41=lm(data = datapor,r_porSL~Market_Factor)
stargazer(reg11,reg21,reg31,reg41,type = "text")
##
## ===========================================================================
## Dependent variable:
## --------------------------------------------
## r_porBH r_porBL r_porSH r_porSL
## (1) (2) (3) (4)
## ---------------------------------------------------------------------------
## Market_Factor 1.161*** 0.996*** 1.334*** 0.700***
## (0.086) (0.029) (0.063) (0.079)
##
## Constant -0.002 0.001* -0.001 0.001
## (0.002) (0.001) (0.001) (0.002)
##
## ---------------------------------------------------------------------------
## Observations 248 248 248 248
## R2 0.426 0.831 0.642 0.241
## Adjusted R2 0.424 0.830 0.641 0.238
## Residual Std. Error (df = 246) 0.026 0.009 0.019 0.024
## F Statistic (df = 1; 246) 182.603*** 1,210.149*** 441.911*** 77.954***
## ===========================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
reg12=lm(data = datapor,r_porBH~Market_Factor+SMB)
reg22=lm(data = datapor,r_porBL~Market_Factor+SMB)
reg32=lm(data = datapor,r_porSH~Market_Factor+SMB)
reg42=lm(data = datapor,r_porSL~Market_Factor+SMB)
stargazer(reg12,reg22,reg32,reg42,type = "text")
##
## =========================================================================
## Dependent variable:
## ------------------------------------------
## r_porBH r_porBL r_porSH r_porSL
## (1) (2) (3) (4)
## -------------------------------------------------------------------------
## Market_Factor 1.085*** 0.998*** 1.154*** 0.578***
## (0.086) (0.029) (0.042) (0.074)
##
## SMB 0.526*** -0.012 1.247*** 0.849***
## (0.138) (0.047) (0.068) (0.119)
##
## Constant -0.001 0.001* 0.0003 0.002
## (0.002) (0.001) (0.001) (0.001)
##
## -------------------------------------------------------------------------
## Observations 248 248 248 248
## R2 0.458 0.831 0.850 0.371
## Adjusted R2 0.454 0.830 0.848 0.366
## Residual Std. Error (df = 245) 0.026 0.009 0.013 0.022
## F Statistic (df = 2; 245) 103.641*** 602.821*** 691.499*** 72.256***
## =========================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
reg13=lm(data = datapor,r_porBH~Market_Factor+HML)
reg23=lm(data = datapor,r_porBL~Market_Factor+HML)
reg33=lm(data = datapor,r_porSH~Market_Factor+HML)
reg43=lm(data = datapor,r_porSL~Market_Factor+HML)
stargazer(reg13,reg23,reg33,reg43,type = "text")
##
## ===========================================================================
## Dependent variable:
## --------------------------------------------
## r_porBH r_porBL r_porSH r_porSL
## (1) (2) (3) (4)
## ---------------------------------------------------------------------------
## Market_Factor 0.827*** 0.988*** 0.959*** 0.611***
## (0.076) (0.031) (0.033) (0.085)
##
## HML 0.947*** 0.023 1.064*** 0.254***
## (0.085) (0.035) (0.037) (0.095)
##
## Constant -0.00003 0.001* 0.001** 0.001
## (0.001) (0.001) (0.001) (0.002)
##
## ---------------------------------------------------------------------------
## Observations 248 248 248 248
## R2 0.618 0.831 0.919 0.262
## Adjusted R2 0.615 0.830 0.919 0.256
## Residual Std. Error (df = 245) 0.021 0.009 0.009 0.024
## F Statistic (df = 2; 245) 198.427*** 603.862*** 1,393.322*** 43.517***
## ===========================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
reg14=lm(data = datapor,r_porBH~SMB+HML)
reg24=lm(data = datapor,r_porBL~SMB+HML)
reg34=lm(data = datapor,r_porSH~SMB+HML)
reg44=lm(data = datapor,r_porSL~SMB+HML)
stargazer(reg14,reg24,reg34,reg44,type = "text")
##
## ========================================================================
## Dependent variable:
## -----------------------------------------
## r_porBH r_porBL r_porSH r_porSL
## (1) (2) (3) (4)
## ------------------------------------------------------------------------
## SMB -1.590*** -0.460*** -0.077 1.284***
## (0.204) (0.170) (0.170) (0.214)
##
## HML 2.197*** 0.713*** 1.528*** -0.193
## (0.142) (0.118) (0.119) (0.150)
##
## Constant -0.001 -0.001 -0.001 -0.0004
## (0.002) (0.001) (0.001) (0.002)
##
## ------------------------------------------------------------------------
## Observations 248 248 248 248
## R2 0.548 0.165 0.639 0.221
## Adjusted R2 0.544 0.158 0.636 0.215
## Residual Std. Error (df = 245) 0.023 0.019 0.020 0.025
## F Statistic (df = 2; 245) 148.626*** 24.244*** 216.757*** 34.835***
## ========================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
reg1=lm(data = datapor,r_porBH~Market_Factor+SMB+HML)
reg2=lm(data = datapor,r_porBL~Market_Factor+SMB+HML)
reg3=lm(data = datapor,r_porSH~Market_Factor+SMB+HML)
reg4=lm(data = datapor,r_porSL~Market_Factor+SMB+HML)
Kết quả tại bảng cho ta thấy sự tác động của từng nhân tố giải thích lên tỷ suất sinh lợi như sau:
- Nhóm ba yếu tố bao gồm yếu tố thị trường, yếu tố quy mô và yếu tố Book to Market (yếu tố giá trị) có ảnh hưởng đến tỷ suất sinh lợi của 50 mã cổ phiếu tại HNX. Kết quả chạy hồi quy mô hình gồm ba yếu tố trên cho hệ số xác định hiệu chỉnh \(\bar{R^2}\) có giá trị trung bình là \(0,715\). Đây là giá trị \(\bar{R^2}\) cao nhất khi so sánh với mô hình thiếu một trong các yếu tố này. Các hệ số hồi quy của mô hình ba nhân tố gần như là có ý nghĩa ở mức 5%. Như vậy, ta cũng có thể nói rằng tỷ suất sinh lợi của cổ phiếu tại HNX ngoài việc chịu tác động khách quan của nhân tố thị trường còn bị tác động bởi những yếu tố thuộc về đặc tính của doanh nghiệp niêm yết như quy mô và tỷ số B/M.
-Trong ba yếu tố tác động đến tỷ suất sinh lợi thì yếu tố thị trường giữ vai trò quan trọng hơn cả. Điều này được thể hiện qua việc kết quả chạy hồi quy mô hình chỉ gồm một biến thị trường cho giá trị R2 hiệu chỉnh là 0.534 cao hơn so với 0.388 là giá trị R2 hiệu chỉnh của mô hình hồi quy gồm hai biến SMB (thể hiện quy mô) và HML (thể hiện tỷ số B/M). Mặt khác, tất cả các hệ số hồi quy của biến thị trường cho bốn danh mục đầu tư đều có ý nghĩa về mặt thống kê ở mức 05%
-Khi kết hợp biến thị trường và biến SMB hoặc biến HML đã làm tăng đáng kể giá trị R2 hiệu chỉnh so với khi chỉ có một biến thị trường. Điều này được thể hiện qua việc giá trị R2 hiệu chỉnh từ 0.534 cho một biến thị trường đã tăng lên thành 0.623 và 0.655 cho trường hợp kết hợp cả hai biến thị trường và biến SMB hoặc HML. Như vậy, ta cũng có thể thấy rằng yếu tố quy mô và yếu tố giá trị đã giữ một vai trò không nhỏ trong việc giải thích sự thay đổi tỷ suất sinh lợi tại sàn HNX trong khoảng thời gian nghiên cứu từ tháng 1/2022 - 12/2022.
Ta có phương trình APT: \[\bar{r}_{i} = r_f + {\beta_{i1}}\lambda_1 + {\beta_{i2}}\lambda_2 + {\beta_{i3}}\lambda_3\] Với các ước lượng của hệ số \(\beta_{iK}\), và \(\bar{r}_{i} \ (i=1\div N)\) đối với các tài sản, để ước lượng phần bù rủi ro nhân tố \(\lambda_k \ (k=1\div K)\) ta lập và ước lượng hàm hồi quy sau: \[\bar{r}_{i} = \gamma + \lambda_1{\beta_{i1}} + \lambda_2{\beta_{i2}} + \lambda_3{\beta_{i2}} + v_i\] Trong đó:
\(\lambda_k \ (k=1\div K)\) là các hệ số hồi quy
\(\beta_k \ (k=1\div K)\) là các biến độc lập
\(i=1\div N\) là các quan sát
data1 = returns[-1,-1]
#head(data1)
r_tb = colMeans(data1)
View(data.frame(r_tb))
Ta gộp dữ liệu về trung bình từng cổ phiếu vừa tính được ở bước 1 với dữ liệu về ước lượng hệ số các nhân tố thành 1 bảng rồi hồi quy và ước lượng mô hình.
attach(coef_table)
datanew1 = as.data.frame(cbind(r_tb, coef_table))
head(datanew1)
## r_tb alpha_i beta_MarketFactor beta_SMB beta_HML
## MAC -0.0006427060 0.0023837866 0.8890376 2.561450620 -1.2369677
## KSF -0.0004344803 -0.0002519259 0.2378145 -0.197886483 -0.1611583
## NSH -0.0046361632 0.0032167972 1.1374048 0.286267020 1.1095737
## IVS -0.0048518290 0.0007700349 0.9377463 0.001018681 0.7741092
## SCG -0.0005436108 0.0012399375 0.4534594 0.061792257 0.0482609
## FID -0.0067920897 0.0010181358 1.1878662 0.660325590 0.8672210
attach(datanew1)
## The following object is masked _by_ .GlobalEnv:
##
## r_tb
## The following objects are masked from coef_table:
##
## alpha_i, beta_HML, beta_MarketFactor, beta_SMB
reg=lm(r_tb~beta_MarketFactor+beta_HML+beta_SMB, data=datanew1)
summary(reg)
##
## Call:
## lm(formula = r_tb ~ beta_MarketFactor + beta_HML + beta_SMB,
## data = datanew1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.0062482 -0.0004967 0.0000891 0.0008021 0.0026090
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.0012881 0.0005580 -2.309 0.02551 *
## beta_MarketFactor -0.0013482 0.0004465 -3.020 0.00412 **
## beta_HML -0.0027043 0.0004308 -6.277 1.11e-07 ***
## beta_SMB -0.0010386 0.0003860 -2.690 0.00991 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.001533 on 46 degrees of freedom
## Multiple R-squared: 0.5451, Adjusted R-squared: 0.5154
## F-statistic: 18.37 on 3 and 46 DF, p-value: 5.599e-08
Từ kết quả ước lượng trên, với mức ý nghĩa \(5\%\), ta thấy các hệ số nhân tố đều có ý nghĩa thống kê.
Mô hình ước lượng được: \[\bar{r} = -0.0012513 -0.0012513{\beta_{1}} -0.0027316{\beta_{2}} -0.001028{\beta_{3}} + v\]
Ta thấy, phần bù rủi ro của 3 nhân tố đều ước lượng được đều mang dấu âm. Vậy có thể đưa ra nhận xét trong trường hợp 50 cổ phiếu trên sàn HNX rằng: Đối với 3 nhân tố: nhân tố thị trường, nhân tố quy mô vốn hóa, nhân tố chỉ số giá thị trường/giá trị thị trường; các nhà đầu tư sẵn sàng bớt đi một phần trong lợi suất để hạn chế bớt tác động của nhân tố này.
Chọn 5 mã cổ phiếu đầu tiên trong bảng dữ liệu là MAC, KSF, NSH, IVS, SCG để lập ma trận hiệp phương sai dựa vào mô hình nhân tố.
Ta có công thức ước lượng ma trận hiệp phương sai như sau: \[ Cov(r_i,r_j)=\sum_{k=1}^{K} \beta_{ik}\beta_{jk}V(F_k)+Cov(\varepsilon_i,\varepsilon_j) \]
Trong đó:
\(Cov(r_i,r_j)\): Hiệp phương sai giữa lợi suất tài sản \(i\) và tài sản \(j\).
\(\beta_{ik}\): Hệ số nhân tố \(k\) trong phương trình APT của tài sản \(i\).
\(\beta_{jk}\): Hệ số nhân tố \(k\) trong phương trình APT của tài sản \(j\).
\(V(F_k)\): Phương sai của nhân tố \(k\).
\(Cov(\varepsilon_i,\varepsilon_j)\): Hiệp phương sai của sai số trong phương trình APT của tài sản \(i\) và tài sản \(j\).
Ta có thể viết gọn công thức trên lại dưới dạng ma trận như sau \[ V=\beta V_F \beta'+ V_{\varepsilon} \] Trong đó:
\(V\): Là ma trận hiệp phương sai lợi suất.
\(\beta\): Là ma trận hệ số của các nhân tố trong các phương trình APT.
\(V_F\): Là ma trận đường chéo, trong đó các phân tử nằm trên đường chéo chính là phương sai của các nhân tố.
\(V_{\varepsilon}\): Là ma trận hiệp phương sai sai số trong các phương trình APT. Do các giả thiết của mô hình đa nhân tố nên đây là một ma trận đường chéo.
Từ mô hình APT ở câu 2 rút ra được ma trận các hệ số \(\beta\) và đặt tên ma trận là beta1, tính được phương sai của các nhân tố và phương sai sai số của 5 phương trình APT của 5 mã cổ phiếu đã chọn.
beta=coef_table[1:5,2:4]
betamf=beta[,1]
betasmb=beta[,2]
betahml=beta[,3]
beta1=cbind(betamf,betasmb,betahml)
Tính phương sai các nhân tố
vmf=var(X50_CP_HNX_ff$Market_Factor)
vsmb=var(X50_CP_HNX_ff$SMB)
vhml=var(X50_CP_HNX_ff$HML)
Tạo vector phương sai nhân tố
vf1<-c(vmf,vsmb,vhml)
vf<-matrix(vf1, nrow=1)
resid_table=data.frame()
dependent1=c(datanew[,7:11])
for (rate in dependent1){
model1 <- lm(rate~Market_Factor+SMB+HML,data = datanew)
#print(summary(model))
#stargazer(model,type = "text")
resid_values<-resid(model1)
resid_table<-rbind(resid_table,resid_values)
}
#View(resid_table)
re=as.data.frame(t(resid_table))
ve=matrix(c(var(re$V1),var(re$V2),var(re$V3),var(re$V4),var(re$V5)),nrow=1)
varf<-matrix(c(c(vmf,0,0),c(0,vsmb,0),c(0,0,vhml)),nrow=3)
print(varf)
## [,1] [,2] [,3]
## [1,] 0.0003784597 0.0000000000 0.000000000
## [2,] 0.0000000000 0.0001475463 0.000000000
## [3,] 0.0000000000 0.0000000000 0.000303545
covei<-matrix(c(c(var(re$V1),0,0,0,0),c(0,var(re$V2),0,0,0),c(0,0,var(re$V3),0,0),c(0,0,0,var(re$V4),0),c(0,0,0,0,var(re$V5))),nrow=5)
print(covei)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.001301004 0.0000000000 0.000000000 0.000000000 0.000000000
## [2,] 0.000000000 0.0005463819 0.000000000 0.000000000 0.000000000
## [3,] 0.000000000 0.0000000000 0.001172745 0.000000000 0.000000000
## [4,] 0.000000000 0.0000000000 0.000000000 0.000696476 0.000000000
## [5,] 0.000000000 0.0000000000 0.000000000 0.000000000 0.000446555
Sau khi tạo được ba ma trận đầu vào, ta dừng công thức thứ hai (công thức có dạng ma trận) để tính ma trận hiệp hương sai của 5 mã cổ phiếu.
v=beta1%*%varf%*%t(beta1)+covei
print(v)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 3.032640e-03 6.573949e-05 7.426891e-05 2.524484e-05 1.578057e-04
## [2,] 6.573949e-05 5.814474e-04 3.973284e-05 4.650196e-05 3.664777e-05
## [3,] 7.426891e-05 3.973284e-05 2.048157e-03 6.644314e-04 2.140615e-04
## [4,] 2.524484e-05 4.650196e-05 6.644314e-04 1.211179e-03 1.722819e-04
## [5,] 1.578057e-04 3.664777e-05 2.140615e-04 1.722819e-04 5.256463e-04
Ta kiểm tra lại bằng cách tính trực tiếp ma trận covarian trên chuỗi lợi suất và được kết quả như sau:
datar=data.frame(
R1= returns[,2],
R2= returns[,3],
R3= returns[,4],
R4= returns[,5],
R5= returns[,6] )
# Tính ma trận hiệp phương sai
cov_matrix <- cov(datar)
# In ma trận hiệp phương sai
print(cov_matrix)
## R1 R2 R3 R4 R5
## R1 1.916567e-03 -2.719641e-05 6.523179e-04 5.969768e-04 2.469839e-04
## R2 -2.719641e-05 5.768579e-04 4.693972e-05 -6.609907e-05 3.547318e-05
## R3 6.523179e-04 4.693972e-05 2.528022e-03 1.086141e-03 3.898277e-04
## R4 5.969768e-04 -6.609907e-05 1.086141e-03 1.405256e-03 2.590896e-04
## R5 2.469839e-04 3.547318e-05 3.898277e-04 2.590896e-04 5.355623e-04
Danh mục \(P\) có 5 cổ phiếu như đã chọn ở câu 4 có trọng số đều bằng 0.2. Ta cần phân tích rủi ro cho danh mục \(P\) này.
#Xây dựng vector trọng số
w<-matrix(rep(0.2,5), nrow=1)
-Từ câu 4 ta có ma trận hiệp phương sai của 5 cổ phiếu là v.
-Tổng rủi ro tài sản được tính theo công thức sau:
Tổng rủi ro tài sản = Rủi ro nhân tố của tài sản + Rủi ro riêng \[\sigma_i=V(r_i)=\sum_{k=1}^{K}\beta_{ik}^2V(F_k)+V(\varepsilon_i) \]
Rủi ro nhân tố của tài sản = \(\sum_{k=1}^{K}\beta_{ik}^2V(F_k)\)
Rủi ro riêng của tài sản = \(V(\varepsilon_i)\)
#Rủi ro nhân tố của cổ phiếu 1 (MAC)
rrnt1=(beta[1,1])^2*vmf+(beta[1,2])^2*vsmb+(beta[1,3]^2*vhml)
#Rủi ro riêng của cổ phiếu 1 (MAC)
rrr1=var(re$V1)
#Tổng rủi ro cổ phiếu 1 (MAC)
trr1=rrnt1+rrr1
print(trr1)
## [1] 0.00303264
# Tổng rủi ro cổ phiếu 1 (MAC)
trr1_1=v[1,1]
print (trr1_1)
## [1] 0.00303264
Kiểm tra lại: Ta thấy tổng rủi ro của cổ phiếu MAC tính bằng công thức bằng với phần tử tương ứng trên hiệp phương sai ở câu 4.
Tổng rủi ro danh mục được tính theo công thức sau:
Tổng rủi ro danh mục = Rủi ro nhân tố của danh mục + Rủi ro riêng \[\sigma_P=V(r_P)=\sum_{k=1}^{K}\beta_{Pk}^2V(F_k)+\sum_{i=1}^{N}w_i^2V(\varepsilon_i) \] Rủi ro nhân tố của danh mục = \(\sum_{k=1}^{K}\beta_{Pk}^2V(F_k)\)
Rủi ro riêng của danh mục= \(\sum_{i=1}^{N}w_i^2V(\varepsilon_i)\)
#Tính vector beta_p
beta_p=w%*%beta1
print(beta_p)
## betamf betasmb betahml
## [1,] 0.7310925 0.5425284 0.1067636
#Rủi ro nhân tố của danh mục
rrnt=(beta_p)^2%*%t(vf)
print(rrnt)
## [,1]
## [1,] 0.0002491736
#Rủi ro riêng của danh mục
rrr=w^2%*%t(ve)
print(rrr)
## [,1]
## [1,] 0.0001665265
#Tổng rủi ro danh mục
trr=rrnt+rrr
print(trr)
## [,1]
## [1,] 0.0004157001
Từ kết quả trên ta có được rủi ro nhân tố của danh mục = 0.0002068686; rủi ro riêng của danh mục = 0.0001748551 và tổng rủi ro danh mục = 0.0003817237
Ta có phương trình APT như sau: \[r ̅_i= γ+λ_{MF}β_{i,MF}+λ_{HML}β_{i,HML}+λ_{SMB}β_{i,SMB}\]
Điều này có nghĩa là chúng ta cần phải thực hiện kiểm định T-test rằng \(\gamma=r_f\) hay là hệ số chặn ước lượng từ câu 3 có bằng \(r_f\) hay không? Tuy nhiên, để thực hiện được kiểm định T, hệ số chặn ước lượng này phải là hệ số góc ước lượng của một biến, do vậy, chúng ta sẽ tạo một biến a có giá trị bằng 1 để kết quả sau khi ước lượng lại mô hình vẫn sẽ được như ở câu 3.
library(car)
## Loading required package: carData
a=c(rep(1,50))
print(a)
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [39] 1 1 1 1 1 1 1 1 1 1 1 1
datanew2 = cbind(datanew1,a)
print(datanew2)
## r_tb alpha_i beta_MarketFactor beta_SMB beta_HML a
## MAC -0.0006427060 0.0023837866 0.8890376 2.561450620 -1.23696766 1
## KSF -0.0004344803 -0.0002519259 0.2378145 -0.197886483 -0.16115832 1
## NSH -0.0046361632 0.0032167972 1.1374048 0.286267020 1.10957372 1
## IVS -0.0048518290 0.0007700349 0.9377463 0.001018681 0.77410925 1
## SCG -0.0005436108 0.0012399375 0.4534594 0.061792257 0.04826090 1
## FID -0.0067920897 0.0010181358 1.1878662 0.660325590 0.86722102 1
## BNA -0.0041795262 -0.0012203880 0.6336904 0.845027005 -0.11565334 1
## NRC -0.0074166607 -0.0025047358 0.3048595 -1.649048557 1.96309367 1
## VGS -0.0053677968 0.0023137401 1.6513345 0.978961657 0.20397619 1
## AAV -0.0069219640 0.0008794202 1.1583480 0.132619404 1.16033366 1
## VFS 0.0002793234 0.0022766973 0.4563539 -0.151200583 0.21571992 1
## EVS -0.0047270664 -0.0015949293 0.5410575 -1.242785967 0.96202984 1
## LIG -0.0065728559 0.0015673865 1.3925633 0.603221612 0.77909178 1
## API -0.0053541246 0.0021497416 1.3208396 -0.558117925 1.26468759 1
## ITQ -0.0054130498 0.0026839229 1.1206533 0.265336501 1.23728594 1
## TTH -0.0060893822 0.0016458199 1.0351835 0.370580848 1.17171138 1
## IDJ -0.0050977164 0.0040080280 2.0327429 -0.135647946 0.75326193 1
## HOM -0.0029390162 0.0017131006 0.6581199 0.085327799 0.73134931 1
## HAD -0.0040500586 -0.0002597773 0.5577853 0.629804365 0.31514246 1
## MST -0.0063082309 -0.0011401867 0.6143793 0.241633911 0.83713428 1
## CSC -0.0045411580 0.0023643849 1.5045302 -0.555577525 0.78676080 1
## VNR -0.0017448270 0.0009347249 0.7956411 -0.502838242 0.20358310 1
## L14 -0.0066527783 0.0027920485 2.3812324 0.076608987 0.21671979 1
## AMV -0.0058091824 0.0010128781 0.9796951 0.024351482 1.06982354 1
## SRA -0.0055786482 0.0003673596 0.8441155 0.187535424 0.92988770 1
## LAS -0.0040511412 0.0009940508 1.3104956 0.022650552 0.18362367 1
## VC7 -0.0053472078 0.0020371395 1.2031890 0.629019633 0.76935840 1
## VCS -0.0026299467 0.0005776182 0.6911626 -0.331247755 0.39558439 1
## IDV -0.0027083377 -0.0003737913 0.5217549 0.526295305 -0.05852678 1
## CMS -0.0066723713 -0.0022121961 0.9075758 1.334993834 -0.28809639 1
## PVB -0.0022502668 0.0019633593 1.3702777 1.545013619 -0.83147191 1
## CTC -0.0062654353 0.0005829586 0.9404881 0.214169573 1.01828488 1
## DXP -0.0037645232 0.0010242183 0.8842160 0.464412753 0.29462554 1
## MBS -0.0038012619 0.0029473789 1.6328262 -0.791531037 0.68817925 1
## DDG 0.0010915156 0.0013070636 0.1036981 0.097430610 -0.09191386 1
## THD -0.0077531220 -0.0056440873 0.9580014 -0.124137678 -0.34976909 1
## TVD -0.0018560764 0.0028548564 1.1617822 1.075107936 -0.26809303 1
## TNG -0.0033109052 0.0018660395 1.4808869 -0.836233066 0.34207630 1
## TIG -0.0041764351 0.0023984067 1.0806185 -0.570173984 1.14795826 1
## PVC -0.0012668960 0.0033182062 1.8433303 2.302174443 -1.55876091 1
## PVS -0.0009838845 0.0021749785 1.4041410 1.056617692 -1.01482701 1
## SHS -0.0047976048 0.0022922226 1.6548986 -0.864376004 0.79522147 1
## NTP -0.0019113718 -0.0001474411 0.6698952 0.172207266 -0.25911430 1
## APS -0.0059548654 0.0031738325 2.1384429 0.151100287 0.55354108 1
## BVS -0.0025706569 0.0030233633 1.3248679 -0.516208158 0.56199462 1
## BCC -0.0042353216 0.0030605445 1.1875407 -0.982060061 1.46838510 1
## DL1 -0.0062366196 0.0017211294 1.1959815 0.075689207 1.17906603 1
## HUT -0.0015348837 0.0040005955 1.4755270 -0.273312438 0.27912829 1
## VC3 -0.0017144165 0.0000616807 0.4683619 -0.015086787 0.04240335 1
## TAR -0.0052636302 0.0007153573 1.4935091 0.001601341 0.20205649 1
reg1=lm(r_tb~a+beta_MarketFactor+beta_HML+beta_SMB+0, data=datanew2)
summary(reg1)
##
## Call:
## lm(formula = r_tb ~ a + beta_MarketFactor + beta_HML + beta_SMB +
## 0, data = datanew2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.0062482 -0.0004967 0.0000891 0.0008021 0.0026090
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## a -0.0012881 0.0005580 -2.309 0.02551 *
## beta_MarketFactor -0.0013482 0.0004465 -3.020 0.00412 **
## beta_HML -0.0027043 0.0004308 -6.277 1.11e-07 ***
## beta_SMB -0.0010386 0.0003860 -2.690 0.00991 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.001533 on 46 degrees of freedom
## Multiple R-squared: 0.8977, Adjusted R-squared: 0.8888
## F-statistic: 100.9 on 4 and 46 DF, p-value: < 2.2e-16
x=X50_CP_HNX_ff[1,3]
x1 = as.numeric(x)
print(x1)
## [1] 9.027778e-05
linearHypothesis(reg1,c("a=0.00009027778"))
## Linear hypothesis test
##
## Hypothesis:
## a = 9.027778e - 05
##
## Model 1: restricted model
## Model 2: r_tb ~ a + beta_MarketFactor + beta_HML + beta_SMB + 0
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 47 0.00012245
## 2 46 0.00010811 1 1.4343e-05 6.1029 0.01726 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Với cặp giả thuyết: \[ \begin{cases} H_0: E(r_i)=r_f \\ H_1: E(r_i )≠r_f \end{cases} \]
Từ kết quả chúng ta thấy: với mức ý nghĩa 5%, \(p-value = 0.01764 < 0.05\), do đó bác bỏ \(H_0\), hay là \(E(r_i )≠r_f\). Vậy, chúng ta có kết luận như sau: với mức ý nghĩa 5%, nếu tài sản \(i\) có các hệ số nhân tố bằng 0 thì lợi suất kỳ vọng của tài sản \(i\) khác với lợi suất phi rủi ro.
Để thực hiện kiểm định này, chúng ta sẽ dùng kiểm định Reset Test với cặp giả thuyết như sau:
library(lmtest)
resettest(reg1, type="regressor")
##
## RESET test
##
## data: reg1
## RESET = 1.7389, df1 = 8, df2 = 38, p-value = 0.1209
\[ \begin{cases} H_0: Dạng\ hàm \ đúng \\ H_1: Dạng\ hàm \ sai \end{cases} \] Từ kết quả chúng ta thấy, với mức ý nghĩa 5%, \(p-value = 0.1346 > 0.05\), do đó chưa có cơ sở bác bỏ \(H_0\), hay là dạng hàm đúng. Như vậy, chúng ta có kết luận như sau: với mức ý nghĩa 5%, dạng phương trình hồi quy là đúng, hay là lợi suất kỳ vọng của các tài sản có liên hệ tuyến tính với các hệ số nhân tố và chỉ có các hệ số nhân tố là biến giải thích trong phương trình APT.