Multi-Factor Models and Performance Evaluation

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)
minQ1medianQ3maxmeansdnmissing
-0.171-0.05-0.00150.03150.134-0.007220.0616600
favstats(~DFA, data = multi_factor_models)
minQ1medianQ3maxmeansdnmissing
-0.162-0.02030.01250.05170.1160.0140.0582600

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")
CAPM
GOLDMANDFA
(Intercept)-0.007 *  0.014 ** 
(0.003)   (0.004)   
mkt_rf1.167 ***0.975 ***
(0.059)   (0.086)   
#observations60        60        
R squared0.871    0.688    
Adj. R Squared0.869    0.683    
Residual SE0.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")
Fama-French 3-factor
GOLDMANDFA
(Intercept)0.001    -0.001    
(0.002)   (0.002)   
mkt_rf0.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)   
#observations60        60        
R squared0.937    0.928    
Adj. R Squared0.933    0.924    
Residual SE0.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")
Fama-French 4-factor
GOLDMANDFA
(Intercept)0.001    -0.000    
(0.002)   (0.002)   
mkt_rf0.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)   
#observations60        60        
R squared0.938    0.928    
Adj. R Squared0.933    0.923    
Residual SE0.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