Может быть, это.
library(quantmod)
library(tidyverse)
library(lubridate)
symbols <- c("AAPL", "MSFT", "GOOG")
getSymbols(symbols)
stocks <- data.frame(as.xts(merge(AAPL, MSFT, GOOG)))
stocks$date <- row.names(stocks)
row.names(stocks) <- NULL
# head(stocks)
jan31 <- ymd("2016-01-31")
days_to_keep <- jan31 %m+% months(0:11)
# days_to_keep
res <- stocks %>%
select(ends_with("Close"), date) %>%
mutate(date = ymd(date)) %>%
filter(date %in% days_to_keep)
res %>% select(-date) %>% cor()
# AAPL.Close MSFT.Close GOOG.Close
# AAPL.Close 1.0000000 0.9198357 0.9313001
# MSFT.Close 0.9198357 1.0000000 0.9103830
# GOOG.Close 0.9313001 0.9103830 1.0000000
# Or more visually...
res %>% select(-date) %>% pairs()
Или ... это ...
require(quantmod)
require(PerformanceAnalytics)
symbols <- c("DBC", "EEM", "EFA", "GLD", "IWM", "IYR", "SPY", "TLT")
getSymbols(symbols, from="2016-01-01")
prices <- list()
for(i in 1:length(symbols))
{
prices[[i]] <- Ad(get(symbols[i]))
}
prices <- do.call(cbind, prices)
colnames(prices) <- gsub("\\.[A-z]*", "", colnames(prices))
returns <- Return.calculate(prices)
returns <- na.omit(returns)
result <- table.Correlation(returns, returns)
result <- result[,1]
corMatrix <- matrix(result, nrow=length(symbols), ncol=length(symbols), byrow=T)
corMatrix <- round(corMatrix, digits=2)
dimnames(corMatrix) = list(colnames(prices), colnames(prices))
write.csv(corMatrix, file="CorrelationTable.csv")
print(corMatrix)