使用 R 中的 quantmod 包检索每月调整后的股票报价

标签 r xts quantmod

我这学期正在学习 R,这是我的第一份作业。我想使用 for 循环在设定的日期范围内检索每月调整后的股票报价。一旦我能够做到这一点,我想将所有数据合并到一个数据框中。

到目前为止,我的代码在设定的日期范围内检索 5 个股票代码的每日股票报价,它将对象分配给指定的环境,并仅将 .Adjusted 列放入列表中。

有人可以为我指明获取月度报价的更好方向吗?我的代码是否走在正确的轨道上。

谢谢。

#Packages
library(quantmod)

#Data structure that contains stock quote objects
ETF_Data <- new.env()

#Assign dates to set range for stock quotes
sDate <- as.Date("2007-08-31")
eDate <- as.Date("2014-09-04")

#Assign a vector of ticker symbols.
ticker_symbol <- c("IVW","JKE","QQQ","SPYG","VUG")

#Assign number of ticker symbols.
total_ticker_symbols <- length(ticker_symbol)

#Assign empty list to for each object contained in my environment. 
Temp_ETF_Data <- list()

#Assign integer value to counter.
counter <- 1L

#Loop and retrieve each ticker symbols quotes from Yahoo's API 
for(i in ticker_symbol)  
{  

  getSymbols(
    i, 
    env = ETF_Data, 
    reload.Symbols = FALSE, 
    from = sDate, 
    to = eDate,
    verbose = FALSE,
    warnings = TRUE,
    src = "yahoo",
    symbol.lookup = TRUE) 

  #Add only Adjusted Closing Prices for each stock or object into list. 
  Temp_ETF_Data[[i]] <- Ad(ETF_Data[[i]])  

  if (counter == length(ticker_symbol))
  { 
     #Merge all the objects of the list into one object. 
     ETF_Adj_Daily_Quotes   <- do.call(merge, Temp_ETF_Data)
     ETF_Adj_Monthly_Quotes <- ETF_Adj_Daily_Quotes[endpoints(ETF_Adj_Daily_Quotes,'months')]
  }
  else
  {
    counter <- counter + 1
  }

}

最佳答案

不需要 for 循环。您可以使用 eapply 遍历环境中的所有对象:

getSymbols(ticker_symbol, env=ETF_Data, from=sDate, to=eDate)
# Extract the Adjusted column from all objects,
# then merge all columns into one object
ETF_Adj_Data <- do.call(merge, eapply(ETF_Data, Ad))
# then extract the monthly endpoints
Monthly_ETF_Adj_Data <- ETF_Adj_Data[endpoints(ETF_Adj_Data,'months')]

关于使用 R 中的 quantmod 包检索每月调整后的股票报价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26666254/

相关文章:

R - 通过 ssh 连接并执行命令

删除零并将它们添加回时间序列

r - 在 quantmod::chart_Series() 中使用 xlim/ylim 或 xrange/yrange 覆盖 y-scale 和 x-scale - 不可能?

r - 为什么在不附加zoo的情况下xts函数无法找到as.yearmon函数?

r - 时间为00时xts的显示格式 :00

R ChartSeries 添加带有点的额外图表

r - PortfolioAnalytics 包中 optimize.portfolio 中的索引错误中的重复条目

r - 我如何在 R 中的 mutate(across...) 上指定新变异的名称

r - R 中的 `qr.qy()` 函数

r - 数据框上的 If/else 函数以创建条件矩阵