XTS stammt aus verschiedenen Quellen. Mit R Beta berechnen

Ich bin ein bisschen neu in R. Ich kann mir vorstellen, dass mein Fehler für die Erfahrenen unbedeutend sein wird.

Ich versuche, ein R-Programm zu schreiben, das das Beta für eine Reihe von Aktien berechnet. Die Aktiensymbole werden von gelesenInput.csv, und die Daten werden von Yahoo heruntergeladen. Der Code durchläuft dann eine Beta-Berechnung für jede Aktie und gibt eine CSV aus, die die Regressionen zusammenfasst.

Ich habe den Code zum Laufen gebracht, als in allen Perioden ein einziger risikofreier Zinssatz angenommen wurde, aber ich glaube, ich muss möglicherweise den tatsächlichen risikofreien Zinssatz in jedem Monat verwenden, um die Überschussrenditen zu normalisieren. Ich habe Probleme mit diesem Schritt. Das xts wird erfolgreich von FRED (GS20) heruntergeladen, aber wenn die Rendite von der Wertpapier- und Marktrendite abgezogen wird, ergibt sich ein xts mit der Länge Null. Dadurch wird das Programm beendet.

Ich glaube, das kann daran liegen, dass die Daten zwischen FRED und Yahoo in unterschiedlichen Formaten vorliegen. Mir ist aufgefallen, dass der Befehl getSymbols die Von-Bis-Daten ignoriert hat. Jede Hilfe wäre dankbar.

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")

Antworten auf die Frage(1)

Ihre Antwort auf die Frage