Матрица корреляции акций Quantmod - PullRequest
0 голосов
/ 23 июня 2018

Я хочу запустить корреляционную матрицу в R, исходя из getSymbols(c("AAA","BBB","CCC", ...), $ AAA. Закройте довольно большой список акций в QuantMod. Любые идеи о том, как настроить это в качестве сценария или конкретной командной строки? Очень благодарен.

Ответы [ 3 ]

0 голосов
/ 23 июня 2018

решено ...

cor(ClosePrices, use = "pairwise.complete.obs")

Удивительно, чего добьется небольшая проверка.Спасибо за просмотр / ответ.

0 голосов
/ 17 июля 2018

Может быть, это.

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)
0 голосов
/ 23 июня 2018

Компонент слияния был правильно рассмотрен на предыдущем форуме. Итак, следующие работы:

stocks <- c("AAA","BBB","CCC")
getSymbols(stocks, from="xxxx-xx-xx", to="xxxx-xx-xx")
ClosePrices <- do.call(merge, lapply(stocks, function(x) Cl(get(x))))
correlations <- cor(as.matrix(ClosePrices))

Однако я все еще получаю тонну NA из-за отсутствия цен закрытия для недавно перечисленных акций по сравнению со старыми символами. Я хотел бы выполнить корреляционный анализ для любой пары, используя самую последнюю отправную точку данных в качестве начальной даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...