XTS data de diferentes fuentes. Usando R para calcular la beta

Soy algo nuevo en R. Me imagino que mi error será trivial para el experimentado.

Estoy intentando escribir un programa de R que calculará la beta para una cantidad de acciones. Los símbolos de valores se leen desdeInput.csv, y los datos se descargan de yahoo. El código luego pasa por un cálculo beta para cada acción y genera un csv que resume las regresiones.

Conseguí que el código funcionara cuando se asumía una tasa libre de riesgo única en todos los períodos, pero creo que debo usar la tasa libre de riesgo real en cada mes cuando se normaliza el exceso de rendimiento. Estoy teniendo problemas con este paso. El xts se descarga con éxito de FRED (GS20), pero cuando el rendimiento se resta del valor de seguridad y del mercado, produce un xts de longitud cero. Esto mata el programa.

Creo que esto puede ser porque las fechas están en formatos diferentes entre FRED y Yahoo. Noté que el comando getSymbols ignoró las fechas de origen. Cualquier ayuda sería apreciada.

require(PerformanceAnalytics)
require(quantmod)
require(car)

setwd("R Projects/Beta Test")

proxy <- read.csv("Input.csv",header=FALSE)[,1]
summary <- as.data.frame(matrix(0, ncol = 5, nrow = 0))

mar <- getSymbols("^GSPC", src = "yahoo", from = as.Date("2006-01-01"),
                  to = as.Date("2011-12-31"),auto.assign=FALSE)
riskFree <- getSymbols("GS20", src = "FRED", from = as.Date("2006-12-01"),
                       to = as.Date("2011-12-31"),auto.assign=FALSE)

for (n in proxy){

    sec <- getSymbols(n, src = "yahoo", from = as.Date("2006-01-01"),
                      to = as.Date("2011-12-31"),auto.assign=FALSE)

    #Monthly Returns
    #ERROR PRODUCED HERE
    sec.xsmonthly <- monthlyReturn(to.monthly(sec),type="log") - riskFree
    mar.xsmonthly <- monthlyReturn(to.monthly(mar),type="log") - riskFree

    sec.reg <- lm(sec.xsweekly ~ mar.xsmonthly + lag(mar.xsmonthly,-1))

    summary[n,1] <- coef(sec.reg)[1]
    summary[n,2] <- coef(sec.reg)[2]
    summary[n,3] <- coef(sec.reg)[3]
    summary[n,5]<-summary(sec.reg)$r.squared
}

summary[,4] <- summary[,2]+summary[,3]

colnames(summary) <- c("Alpha","Beta","Beta-Lag","Sum Beta","R-Squared")
write.csv(summary,file="output.csv")

Respuestas a la pregunta(1)

Su respuesta a la pregunta