计算使用Quantmod下载的一组证券的收益

时间:2019-05-13 02:00:05

标签: r quantmod portfolio

我使用Quantmod下载了一组证券的调整后收盘价。我想计算所有证券的每日/每周/每月回报。通常的每日退货,每周退货等无效。我需要做什么?这是我的代码。

tickers <- c('FB','MMM')
data_env <- new.env()
getSymbols(Symbols = tickers, env = data_env)
tempPort <- do.call(merge, eapply(data_env, Ad))

head(tempPort )
           MMM.Adjusted FB.Adjusted
2007-01-03     57.00983          NA
2007-01-04     56.78401          NA
2007-01-05     56.39790          NA
2007-01-08     56.52174          NA
2007-01-09     56.58731          NA
2007-01-10     56.71116          NA

head(weeklyReturn(tempPort,  type = 'log', leading=TRUE))
           weekly.returns
2012-05-18   -0.010791856
2012-05-25    0.015093078
2012-06-01   -0.023027534
2012-06-08    0.037315263
2012-06-15    0.016605617
2012-06-22   -0.007000966

我想要在两个不同的列中具有MMM和FB返回的数据。在我的实际问题中,我有50多个代码。因此,单独计算收益并不是解决方案。

2 个答案:

答案 0 :(得分:1)

像这样循环执行

library(PerformanceAnalytics)

prices <- list()
returns <- list()

for(i in 1:length(tickers)) {
  getSymbols(tickers[i], adjusted = TRUE, output.size = "full")

  prices[[i]] <- Ad(get(tickers[i])) # Gets the adjusted close column
  ret         <- Return.calculate(Ad(get(tickers[i])), method = "log")
  returns[[i]]   <- ret # Adds return calculation to the list

}

还可以考虑使用alpha vantage api。您需要访问他们的站点并获得api密钥,然后在getSymbols()函数调用中设置source='av'

然后,像这样合并您的数据后缀:

returns <- do.call(cbind, returns)

答案 1 :(得分:0)

您可以使用带有内置qmao(代表RF)的Quantmod附加软件包return frame,该软件包可以满足您的需求。假设您已经下载了FBAMZN,请使用以下行:

library(qmao)    
rets <- RF(c(‘FB’,’AMZN’), silent = TRUE, type = ‘discrete )

> tail(rets)
                  FB      AMZN
2019-05-10 -0.001643 -0.005206
2019-05-13 -0.036105 -0.035609
2019-05-14 -0.004462  0.009568
2019-05-15  0.030654  0.016863
2019-05-16  0.003865  0.019464
2019-05-17 -0.009038 -0.020219

看看?RF来检查可用的参数选项。