为使用 quantmod 下载的一组证券计算 return
Calculate return for a set of securities downloaded using quantmod
我使用 quantmod 下载一组证券的调整收盘价。我想计算所有证券的 daily/weekly/monthly return。通常的 dailyReturn、weeklyReturn 等不起作用。我需要做什么?这是我的代码。
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 提供 return 的数据。在我的实际问题中,我有 50 多个代码。因此单独计算 returns 不是解决方案。
这样循环执行:
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 优势 api。您需要访问他们的网站并获取 api 密钥,然后在 getSymbols() 函数调用中设置 source='av'
。
然后,像这样合并您的数据后记:
returns <- do.call(cbind, returns)
您可以使用 quantmod add-in 包 qmao
,它有一个 built-in RF
(代表 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
以检查可用的参数选项。
我使用 quantmod 下载一组证券的调整收盘价。我想计算所有证券的 daily/weekly/monthly return。通常的 dailyReturn、weeklyReturn 等不起作用。我需要做什么?这是我的代码。
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 提供 return 的数据。在我的实际问题中,我有 50 多个代码。因此单独计算 returns 不是解决方案。
这样循环执行:
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 优势 api。您需要访问他们的网站并获取 api 密钥,然后在 getSymbols() 函数调用中设置 source='av'
。
然后,像这样合并您的数据后记:
returns <- do.call(cbind, returns)
您可以使用 quantmod add-in 包 qmao
,它有一个 built-in RF
(代表 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
以检查可用的参数选项。