XTS датируется из разных источников. Использование R для расчета бета
Я немного новичок в R. Я полагаю, что моя ошибка будет тривиальной для опытного.
Я пытаюсь написать R-программу, которая будет рассчитывать бета-версию для ряда акций. Биржевые символы читаются изInput.csv
и данные загружаются с Yahoo. Затем код перебирает бета-вычисления для каждой акции и выводит CSV, суммируя регрессии.
Я заставил код работать, когда во всех периодах была принята единая безрисковая ставка, но я считаю, что при нормализации избыточной доходности мне, возможно, придется использовать фактическую безрисковую ставку в каждом месяце. У меня проблемы с этим шагом. Xts успешно загружен из FRED (GS20), но когда вычитание возврата вычитается из безопасности и рыночного возврата, он создает xts нулевой длины. Это убивает программу.
Я полагаю, что это может быть потому, что даты в разных форматах между FRED и Yahoo. Я заметил, что команда getSymbols игнорировала промежуточные даты. Любая помощь будет оценена.
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")