require(quantmod) require(PerformanceAnalytics) self_dataframe <- function(return_vector, lookback, forward){ return_vector <- return_vector[complete.cases(return_vector),] b_array <- c() f_array <- c() i <- 1 while (i <= length(return_vector)) { if ((i - lookback) > 0 && (i + forward)<= length(return_vector)) { b_return = sum(return_vector[(i-lookback):(i-1),]) f_return = sum(return_vector[i:(i+forward-1),]) b_array <- c(b_array, b_return) f_array <- c(f_array, f_return) } i <- i + lookback } df = data.frame(back = b_array, forward = f_array) return(df) } from <- "1900-01-01" to <- "2099-12-31" smbl <- "^GSPC" # smbl <- "^N225" gspc <- Return.calculate(Ad(getSymbols(smbl,auto.assign=FALSE,from=from,to=to))) names(gspc) <- "return" # 過去リターンを計算する日数(営業日) lookback_days <- 253 # 未来リターンを計算する日数(営業日) return_days <- 253 df <- self_dataframe(gspc,lookback_days,return_days) xlab = paste("return for past",lookback_days,"days") ylab = paste("return for future",return_days,"days") plot(df[,1],df[,2],xlab=xlab,ylab=ylab) print(cor(df[,1],df[,2])) print(cor.test(df[,1],df[,2],method="pearson"))