Je me demandais si quelqu'un pouvait me guider à travers la fonction rollapply dans R. Je veux conduire une régression glissante d'un an avec des facteurs fama-français. L'ensemble de données est préparé dans Excel et contient des données hebdomadaires de 2011-2017. Par conséquent, la fenêtre de temps est définie sur 52 semaines. Je veux calculer des coefficients beta glissants de 1 an pour la période 2012-2017, donc la fenêtre de temps passera de [1:52] à [2:53] à partir de la première semaine de 2011. J'ai plusieurs facteurs de prix, ceci signifie que je dois exécuter une régression linéaire multiple.Calcul des coefficients bêta de Fama-French spécifiques d'une entreprise à partir d'une régression glissante d'un an
C'est ce que je l'ai essayé jusqu'à présent:
Rollingregression <- read_excel("C:/Users/neri_/Desktop/Fama French Regression.xlsx", col_names = TRUE, sheet = 1)
Rollingregression <- xts(Rollingregression[,2:7],order.by = Rollingregression[,1])
coeffs <- rollapply(Rollingregression, width=52, FUN = function(Z) coef(lm(Rollingregression$`Excess Return` ~ Rollingregression$OBX + Rollingregression$SMB + Rollingregression$HML + Rollingregression$PR1YR + Rollingregression$LIQ, data = as.data.frame(Z))), by.column=FALSE, align="right")
Cependant, je n'obtenir les 5 ans bêtas roulement hebdomadaire, mais au lieu de la régression sur toute la période:
(Intercept) Rollingregression$OBX Rollingregression$SMB
[1,] 0.0001511391 0.7529416 -0.007408397
[2,] 0.0001511391 0.7529416 -0.007408397
[3,] 0.0001511391 0.7529416 -0.007408397
[4,] 0.0001511391 0.7529416 -0.007408397
[5,] 0.0001511391 0.7529416 -0.007408397
La sortie me donne également les mêmes bêtas pour les autres facteurs fama-français tout au long de la période.
2011-01-04
2011-01-11
2011-01-18
2011-01-25
2011-02-01
Je pensais que le code XTS j'ai fait veilleraient à ce que R compris que tje ensemble de données est une série chronologique.
J'ai aussi essayé ceci:
coeffs <- (rollapply(zoo(Rollingregression), width=52, FUN = function(Z){t = lm(Rollingregression$`Excess Return` ~ Rollingregression$OBX + Rollingregression$SMB + Rollingregression$HML + Rollingregression$PR1YR + Rollingregression$LIQ, data = as.data.frame(Z), model = TRUE); return(t$coef)}, by.column = FALSE, align = "right"))
me donne toujours la même sortie. Je suis assez nouveau avec R, donc toute aide est très appréciée.
Merci!
Jetez un oeil à cette réponse: https://stackoverflow.com/a/23163104/7357438 – Lstat