我使用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多个代码。因此,单独计算收益并不是解决方案。
答案 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
,该软件包可以满足您的需求。假设您已经下载了FB
和AMZN
,请使用以下行:
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
来检查可用的参数选项。