5

私はRにやや慣れていません。私のエラーは経験豊富な人にとっては些細なことだと思います。

多数の株式のベータを計算する R プログラムを作成しようとしています。銘柄記号は から読み込みInput.csv、データは yahoo からダウンロードします。次に、コードは各株式のベータ計算をループし、回帰を要約した csv を出力します。

すべての期間で 1 つのリスク フリー レートが想定されている場合にコードが機能するようになりましたが、超過リターンを正規化する際には、各月の実際のリスク フリー レートを使用する必要があると思います。このステップに問題があります。xts は FRED (GS20) から正常にダウンロードされますが、証券と市場のリターンからリターンを差し引くと、長さゼロの xts が生成されます。これにより、プログラムが強制終了されます。

これは、FRED と Yahoo で日付の形式が異なるためではないかと考えています。getSymbols コマンドが from-to の日付を無視していることに気付きました。どんな助けでも大歓迎です。

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

1 に答える 1

1

日付範囲で FRED をクエリする方法がないため、 には引数と引数getSymbols.FREDがないことに注意してください。問題は、FRED の日付が各月の初めに調整され、の出力が各月の終わりに調整されることです。これを回避する 1 つの方法は、ループの前にonを呼び出すことです。fromtoto.monthlyto.monthlyriskFree

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

riskFree <- Cl(to.monthly(riskFree))
mar.xsmonthly <- monthlyReturn(to.monthly(mar),type="log") - riskFree
于 2012-08-03T19:38:01.767 に答える