Multi-Factor Models and Performance Evaluation
![](/img/projects/pj4.jpg)
Instruction
Evaluating the performance of Goldman Sachs and DFA over the period from January 2000 through December 2004. The data for the Fama-French portfolios are taken from Ken French’s website
Load data
multi_factor_models <- read_excel(here::here("data","Problem_Set_4_data.xls"), # Excel filename
sheet="Question 5", # Sheet name
skip=4) # Number of rows to skip
#clean name
multi_factor_models = multi_factor_models %>%
rename("GOLDMAN"="GOLDMAN...11",
"DFA"="DFA...12",
"SMB"="SMB...15",
"mkt_rf"="Mkt - Rf...14",
"HML"="HML...16",
"MOM"="MOM...17",
"rf"="Rf...18") %>%
select("MONTH",
"GOLDMAN",
"DFA",
"SMB",
"mkt_rf",
"HML",
"MOM",
"rf")
Summarize the returns data for each of the funds
favstats(~GOLDMAN, data = multi_factor_models)
min | Q1 | median | Q3 | max | mean | sd | n | missing |
---|---|---|---|---|---|---|---|---|
-0.171 | -0.05 | -0.0015 | 0.0315 | 0.134 | -0.00722 | 0.0616 | 60 | 0 |
favstats(~DFA, data = multi_factor_models)
min | Q1 | median | Q3 | max | mean | sd | n | missing |
---|---|---|---|---|---|---|---|---|
-0.162 | -0.0203 | 0.0125 | 0.0517 | 0.116 | 0.014 | 0.0582 | 60 | 0 |
DFA performed better as it has higher mean and lower std
#CAPM model
#GOLDMAN
model_multi_factor_models_GOLDMAN=lm(I(GOLDMAN-rf)~ mkt_rf, data= multi_factor_models)
#DFA
model_multi_factor_models_DFA=lm(I(DFA-rf)~ mkt_rf, data= multi_factor_models)
#table together
huxreg(model_multi_factor_models_GOLDMAN, model_multi_factor_models_DFA,
statistics = c('#observations' = 'nobs',
'R squared' = 'r.squared',
'Adj. R Squared' = 'adj.r.squared',
'Residual SE' = 'sigma'),
bold_signif = 0.05,
stars = c(`***` = 0.001, `**` = 0.01, `*`=0.05)) %>%
set_caption('CAPM') %>%
set_contents(1,2,"GOLDMAN") %>%
set_contents(1,3,"DFA")
GOLDMAN | DFA | |
---|---|---|
(Intercept) | -0.007 * | 0.014 ** |
(0.003) | (0.004) | |
mkt_rf | 1.167 *** | 0.975 *** |
(0.059) | (0.086) | |
#observations | 60 | 60 |
R squared | 0.871 | 0.688 |
Adj. R Squared | 0.869 | 0.683 |
Residual SE | 0.022 | 0.033 |
*** p < 0.001; ** p < 0.01; * p < 0.05. |
Using CAPM, GOLDMAN’s alpha is higher
#3-factor model
#GOLDMAN
model_multi_factor_models_GOLDMAN_2=lm(I(GOLDMAN-rf)~ mkt_rf + SMB + HML, data= multi_factor_models)
#DFA
model_multi_factor_models_DFA_2=lm(I(DFA-rf)~ mkt_rf + SMB + HML, data= multi_factor_models)
#table together
huxreg(model_multi_factor_models_GOLDMAN_2, model_multi_factor_models_DFA_2,
statistics = c('#observations' = 'nobs',
'R squared' = 'r.squared',
'Adj. R Squared' = 'adj.r.squared',
'Residual SE' = 'sigma'),
bold_signif = 0.05,
stars = c(`***` = 0.001, `**` = 0.01, `*`=0.05)) %>%
set_caption('Fama-French 3-factor') %>%
set_contents(1,2,"GOLDMAN") %>%
set_contents(1,3,"DFA")
GOLDMAN | DFA | |
---|---|---|
(Intercept) | 0.001 | -0.001 |
(0.002) | (0.002) | |
mkt_rf | 0.994 *** | 1.181 *** |
(0.049) | (0.049) | |
SMB | -0.225 *** | 0.629 *** |
(0.051) | (0.051) | |
HML | -0.492 *** | 0.782 *** |
(0.065) | (0.065) | |
#observations | 60 | 60 |
R squared | 0.937 | 0.928 |
Adj. R Squared | 0.933 | 0.924 |
Residual SE | 0.016 | 0.016 |
*** p < 0.001; ** p < 0.01; * p < 0.05. |
#4-factor model
#GOLDMAN
model_multi_factor_models_GOLDMAN_3=lm(I(GOLDMAN-rf)~ mkt_rf + SMB + HML + MOM, data= multi_factor_models)
#DFA
model_multi_factor_models_DFA_3=lm(I(DFA-rf)~ mkt_rf + SMB + HML +MOM, data= multi_factor_models)
#table together
huxreg(model_multi_factor_models_GOLDMAN_3, model_multi_factor_models_DFA_3,
statistics = c('#observations' = 'nobs',
'R squared' = 'r.squared',
'Adj. R Squared' = 'adj.r.squared',
'Residual SE' = 'sigma'),
bold_signif = 0.05,
stars = c(`***` = 0.001, `**` = 0.01, `*`=0.05)) %>%
set_caption('Fama-French 4-factor') %>%
set_contents(1,2,"GOLDMAN") %>%
set_contents(1,3,"DFA")
GOLDMAN | DFA | |
---|---|---|
(Intercept) | 0.001 | -0.000 |
(0.002) | (0.002) | |
mkt_rf | 0.981 *** | 1.170 *** |
(0.051) | (0.052) | |
SMB | -0.201 ** | 0.649 *** |
(0.058) | (0.059) | |
HML | -0.490 *** | 0.783 *** |
(0.065) | (0.065) | |
MOM | -0.031 | -0.027 |
(0.036) | (0.036) | |
#observations | 60 | 60 |
R squared | 0.938 | 0.928 |
Adj. R Squared | 0.933 | 0.923 |
Residual SE | 0.016 | 0.016 |
*** p < 0.001; ** p < 0.01; * p < 0.05. |
#Conclusion Using CAPM, GOLDMAN’s alpha is higherBut when using Fama-French, their alphas are close to zero and GOLDMAN’s is higherThe adjusted R squared is high and the factors are significantThis means, compared to the same type of funds, both of them performed good