## ----setup, include=FALSE------------------------------------------------ knitr::opts_chunk$set(echo = TRUE) ## ---- include=FALSE------------------------------------------------------ # loading the packages and datasets dataff <- read.table("data/ffdata.csv", stringsAsFactors = F, header = T, sep = ",") # packages used listofpackages <- c("plm", "foreign", "lmtest", "aod", "systemfit", "dygraphs","rugarch") for (j in listofpackages){ if(sum(installed.packages()[, 1] == j) == 0) { install.packages(j) } library(j, character.only = T) } ## ------------------------------------------------------------------------ # 1982:1 - 2014:6 regdata <- subset(dataff, select = c(date,exret_mkt, MOM, SMB, HML,RMW,CMA, PR33), date >= 1982 & date <2014) summary(regdata) regdata$P_PR33 <- array(data = NA, dim = nrow(regdata)) t0 <- which(regdata$date == 1982) regdata[t0, c("P_PR33")] <- 1 # don't need to repeat the value to make the array being assigned be of the same length. be careful though as it is one of the few cases of exception for (i in (t0+1):length(regdata$P_PR33)) { regdata$P_PR33[i] <- regdata$P_PR33[i-1] * (1 + regdata$PR33[i]) } tail(regdata$P_PR33) plot(regdata$PR33,x=regdata$date, type = "l", col="red") regdata$PR33sq=regdata$PR33^2 par(mfrow = c(1, 2)) acf(x = regdata$PR33, col = "red", main = "return autocorrelation") acf(regdata$PR33sq, col = "red", main = "squared returns autocorrelation") par(mfrow = c(1, 1)) Fstep <- lm(PR33 ~ exret_mkt, data = regdata) summary(Fstep) regdata$res_P33=Fstep$residuals mygarch <- ugarchspec(variance.model = list(garchOrder = c(1, 1)), mean.model = list(armaOrder = c(0, 0))) mygarchfit <- ugarchfit(mygarch, data = regdata$res_P33) mygarchfit capm <- lm(PR33 ~ exret_mkt, data = regdata) summary(capm) ffreg <- lm(PR33 ~ exret_mkt + HML + SMB+MOM+RMW+CMA, data = regdata) summary(ffreg) ssr1 <- sum(capm$residuals^2) ssr2 <- sum(ffreg$residuals^2) Fstat <- (dim(regdata)[1] - 4)/2 * (ssr1 - ssr2)/ssr2 cat("F-statistic value:", Fstat) # the semi-partial R2 R2_hml <- (coef(ffreg)[3]/vcov(ffreg)[3, 3]^0.5)^2 * (1 - summary(ffreg)$r.squared) / (377) R2_smb <- (coef(ffreg)[4]/vcov(ffreg)[4, 4]^0.5)^2 * (1 - summary(ffreg)$r.squared) / (377) R2_mkt<- (coef(ffreg)[2]/vcov(ffreg)[2, 2]^0.5)^2 * (1 - summary(ffreg)$r.squared) / (377) # restricted regression ## we now impose the restriction the regression with changed regressors regdata$newX <- regdata$HML + regdata$SMB ffreg2 <- lm(PR33 ~ exret_mkt + newX+RMW, data = regdata) summary(ffreg2)