作業ディレクトリからインポートした大きな時系列ファイルがあり、次の方法でそれらをログ リターンに変換します。
read.csv("/Volumes/3TB/ALLsince1996.csv",header=T)-> ALL
all <- xts(ALL[,2:dim(ALL)[2]], order.by= as.POSIXct(ALL[,1], format="%m/%d/%y"))
RETS <- CalculateReturns(all, method= c("log"))
RETS<- na.locf(RETS)
RETS[is.na(RETS)] <- 0
次に、FRED を介して次の方法で 3 か月国債をダウンロードします。
# 3-Mo Treasury
data <- new.env()
FEDs <- c( "DGS3MO") # DGS3MO : 3-Mo Treasury Constant maturity
getSymbols( FEDs
, src = "FRED"
, env = data
)
data$DGS3MO -> TB3
TB3/100/365 -> TB3
na.locf(TB3["1996-01-01::"])-> TB3
cbind()
次に、以下を使用してログ リターン シリーズと 3 か月の財務省を結合しようとします。
both <- cbind(RETS[,1], TB3)
両方:
row.names ZX.Adjusted DGS3MO
1 1995-12-31 16:00:00 NA NA
2 1996-01-01 00:00:00 0 NA
3 1996-01-01 16:00:00 NA 0.0001424658
4 1996-01-02 00:00:00 0 NA
5 1996-01-02 16:00:00 NA 0.0001424658
6 1996-01-03 00:00:00 0 NA
7 1996-01-03 16:00:00 NA 0.0001421918
8 1996-01-04 00:00:00 0 NA
9 1996-01-04 16:00:00 NA 0.0001421918
しかし、これは 1 日 2 回のベクトルを返します。1996-01-01 00:00:00
やなど1996-01-01 16:00:00
。私が望むのは、時間ではなく日付で2つを結合することです。
再現可能なデータ:
#Pull Data from getSymbols()
library(quantmod)
dataset<- xts()
symbols <- c( "GLD", "IWM", "SPY", "GS")
system.time(
for(i in 1:length(symbols)) {
symbols[i]-> symbol
tryit <- try(getSymbols(symbol, from="1995-12-31", src='yahoo'))
if(inherits(tryit, "try-error")){
i <- i+1
} else {
data <- getSymbols(symbol, from="1995-12-31", src='yahoo')
dataset <- merge(dataset, Ad(get(symbols[i])))
rm(symbol)
}
}
)
データセットと一緒にインデックスを保存できなかったため、2 つの別々のファイルに保存dataset
した大きなファイルだったのでindex(dataset)
write.csv(dataset, "dataset.csv")
write.csv(index(dataset), "index.csv")
後でindex.csv
Excel でファイルを開き、インデックスを手動で貼り付けてファイルをdataset.csv
保存しました。後で.csv
、ワークスペースに再びアクセスして、ログの戻り値を計算しようとしました
read.csv("dataset.csv",header=T)-> ALL
all <- xts(ALL[,2:dim(ALL)[2]], order.by= as.POSIXct(ALL[,1], format="%m/%d/%y"))
RETS <- CalculateReturns(all, method= c("log"))
RETS<- na.locf(RETS)
RETS[is.na(RETS)] <- 0
次に、上記と同じコードの 3 か月物 T-Bill をダウンロードします...
# 3-Mo Treasury
data <- new.env()
FEDs <- c( "DGS3MO") # DGS3MO : 3-Mo Treasury Constant maturity
getSymbols( FEDs
, src = "FRED"
, env = data
)
data$DGS3MO -> TB3
TB3/100/365 -> TB3
na.locf(TB3["1996-01-01::"])-> TB3
RETS1
今、と組み合わせてみてくださいTB3
...
both <- cbind(RETS1, TB3)