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

使用R中的quantmod包检索每月调整后的股票报价,r,xts,quantmod,R,Xts,Quantmod,这学期我在学R,这是我的第一个作业。我想使用for循环检索设置日期范围内的每月调整股票报价。一旦我能做到这一点,我想把所有的数据合并到一个数据框中 到目前为止,我的代码检索设置日期范围内5个股票符号的每日股票报价,它将对象分配给指定的环境,并仅将.Adjusted列放置在列表中 有没有人能为我指出一个更好的方向来获取每月报价,我的代码是否在正确的轨道上 谢谢 #Packages library(quantmod) #Data structure that contains stock quot

这学期我在学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
  }

}
#包
图书馆(quantmod)
#包含股票报价对象的数据结构

ETF_数据不需要
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')]
getSymbols(股票代码符号,环境=ETF数据,from=sDate,to=eDate)
#从所有对象中提取调整后的列,
#然后将所有列合并到一个对象中
ETF调整数据只需使用

to.monthly(your_ticker)

我知道这是一个老生常谈的问题,但这个答案可能会帮助潜在的未来用户寻求更好的答案

quantmod
现在为
getSymbols
函数增加了一个名为
periodity
的参数,该参数可以取
每日
每周
每月
的值

我测试了以下各项,它似乎按预期工作:

getSymbols("EURGBP=X", from = starting, src = 'yahoo', periodicity = 'monthly')

代码正是我所需要的。for循环的原因是我们的教授希望我们使用一个。尽管如此,还是很棒的东西。谢谢