股票相关矩阵Quantmod

时间:2018-06-23 14:05:07

标签: r

我想在getSymbols(c("AAA","BBB","CCC", ...)($ AAA)中运行R中的相关矩阵。为QuantMod中的较大股票列表而关闭。关于如何将其设置为脚本或特定命令行的任何想法?非常有义务。

3 个答案:

答案 0 :(得分:0)

在以前的论坛中已正确解决了合并组件。因此,以下工作原理:

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

但是,由于与最近的交易品种相比,近期上市股票的收盘价缺失,我仍然得到大量的资产净值。我想使用该对中的最新数据起点作为开始日期对任何一对进行关联分析。

答案 1 :(得分:0)

解决了...

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

进行一些尽职调查将使您惊讶。感谢您的查看/回复。

答案 2 :(得分:0)

也许是这样。

return await

或者...这个...

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()