Рассчитать доходность для набора ценных бумаг, загруженных с помощью QuantMod - PullRequest
0 голосов
/ 13 мая 2019

Я скачал скорректированную цену закрытия, используя 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 ]

1 голос
/ 14 мая 2019

Сделайте это в цикле следующим образом:

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 и установить source='av' в вызове функции getSymbols ().

Затем объедините ваши данные после слов, как это:

returns <- do.call(cbind, returns)
0 голосов
/ 18 мая 2019

Вы можете использовать пакет надстройки quantmod qmao, который имеет встроенный 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, чтобы проверить доступные параметры аргумента.

...