Actualmente estoy probando si tres factores propios - Valoración, tamaño e impulso - explicar los rendimientos transversales. Se analizó una muestra de 3.000 valores mediante regresiones de dos pasos de Fama-MacBeth a lo largo del periodo 1988-2013. Con el fin de mitigar cualquier problema de estimación espinoso debido a las pendientes de regresión que varían en el tiempo, he utilizado 50 carteras ordenadas por tamaño y libro/mercado (25), y tamaño e impulso (25), como activos de prueba (variables LHS).
Las regresiones incondicionales dieron como resultado insignificante primas para los tres factores. Dado que estos factores podrían comportarse de forma diferente en condiciones de mercado dispares, también he realizado regresiones condicionales basadas en regímenes. La hipótesis era que Valoración debe ser muy significativa en un Oso mercado, mientras que Momentum debe tener una prima estadísticamente significativa en Toro mercados. Sin embargo, los resultados mostraron insignificante primas para todos los factores en todos los regímenes de mercado.
Los resultados me han sorprendido un poco y me han hecho cuestionar la metodología real de las pruebas.
Para comprobar la validez de la metodología, he decidido probar los factores HML y SMB de Fama-French utilizando el mismo periodo de muestra empleado en el documento de Fama-French (1993). Los datos se descargaron del sitio web de Kenneth French. Sin embargo, incluso en este caso, el procedimiento Fama-MacBeth fue no puede descubrir ninguna prima significativa para los factores HML o SMB.
¿Alguien tiene alguna idea sobre esta cuestión?
Este es el código para el procedimiento Fama-MacBeth utilizando 50 carteras como activos de prueba . Las 50 carteras clasificadas, así como las carteras que imitan los factores -VAL, SIZE y MOM- se construyen utilizando una muestra de 3000 valores.
-
En la primera pasada de Fama-MacBeth (regresión de series temporales), las betas se estiman utilizando ventanas móviles de 60 meses cada una. Las betas se actualizan mensualmente.
-
Los valores se clasifican a finales de junio de cada año y los rendimientos de las carteras de prueba se calculan de julio a junio del año siguiente.
-
Los rendimientos de las carteras que imitan los factores (VAL, SIZE y MOM) se calculan como el diferencial superior-inferior de 5 cuantiles libro-mercado, 5 cuantiles de capitalización de mercado y 5 cuantiles de impulso, respectivamente.
-
En el segundo paso de Fama-MacBeth, las betas de las carteras previamente estimadas se utilizan como variables independientes en regresiones mensuales transversales, en un periodo de muestra posterior. Las primas de VAL, SIZE y MOM se estiman mensualmente. Cuando se han realizado todas las regresiones transversales mensuales, se estima la media de la serie temporal de primas para cada factor. Todo ello se realiza mediante la función pmg() . A continuación, se comprueba la diferencia estadísticamente significativa de las primas medias con respecto a cero mediante el estadístico t.
- La regresión condicional basada en los regímenes de mercado es no incluido en el código. La razón es que el régimen La definición también es propia. Todo lo que hay que saber es que cuando se evalúan las regresiones transversales, las series temporales de las primas de cada factor se promedian en un por régimen En otras palabras, se promedian las primas de los periodos de mercados alcistas y de los periodos de mercados bajistas, ... por separado. El toro y oso para cada factor se comprueban mediante el estadístico t.
Tenga en cuenta que esto es sólo una representación Instantánea (modificada) del código.
##########################################################################
### Time-Series Regressions ###
##########################################################################
portfolios = 50 ## Test assets
num.factors = 3 ## VAL, SIZE and MOM
rows = nrow(ret.ff.zoo) - 60 + 1 ### Number of time windows
beta.mat <- matrix(nc = num.factors + 1, nr = portfolios*rows)
portfolio.id = matrix(nc = 1, nr = portfolios*rows)
d = 1
for(i in seq(1:portfolios)) {
######### Dataset (merging test assets' returns and returns of factor-mimicking portfolios
data = merge(return = ret.zoo[,i], VAL = df$VAL, SIZE = df$SIZE, MOM = df$MOM, all = c(TRUE, rep("FALSE", num.factors))) ## "df" is the dataframe (zoo object) containing the returns of VAL, SIZE and MOM only
############ Coefficients of regression
reg = function (z) coef(lm(return ~., data = as.data.frame(z)))
beta = rollapply(data, width = 60, FUN = reg, by.column = FALSE, align = "right")
beta.mat[d:(d+rows-1),] = beta
portfolio.id[d:(d+rows-1),] = i
d = d + rows
}
beta.df = data.frame(port = portfolio.id, date = index(beta), beta.mat)
colnames(beta.df) <- c("portfolio", "date", "intercept", colnames(beta)[-1])
##########################################################################
### Cross-Sectional Regressions ###
##########################################################################
## requires library(plm)
return <- matrix(ret.zoo[which(index(ret.zoo) >= beta.df$date[1]),], ncol = 1)
dataset <- cbind(beta.df, return)
fpmg <- pmg(return ~ VAL + SIZE + MOM, data = dataset, index = c("date", "portfolio"), na.action = na.omit)
summary(fpmg)
Gracias,