У меня есть датафрейм с 3 столбцами: Даты, Тикеры (т.е. финансовые инструменты) и Цены. Я просто хочу рассчитать доходность для каждого тикера.
Некоторые данные для игры:
AsofDate = as.Date(c("2018-01-01","2018-01-02","2018-01-03","2018-01-04","2018-01-05",
"2018-01-01","2018-01-02","2018-01-03","2018-01-04","2018-01-05",
"2018-01-01","2018-01-02","2018-01-03","2018-01-04","2018-01-05"))
Tickers = c("Ticker1", "Ticker1", "Ticker1", "Ticker1", "Ticker1",
"Ticker2", "Ticker2", "Ticker2", "Ticker2", "Ticker2",
"Ticker3", "Ticker3", "Ticker3", "Ticker3", "Ticker3")
Prices =c(1,2,7,4,2,
6,5,7,9,12,
11,11,16,14,15)
df = data.frame(AsofDate, Tickers, Prices)
Моя первая идея состояла в том, чтобы просто упорядочить цены по (тикерским ценам), а затем рассчитать длявсе вектора и установить в NA в первый день ...
TTR::ROC(x=Prices)
Это работает в Excel, но я хочу что-то более красивое
Так что я попробовал что-то вроде этого:
require(dplyr)
ret = df %>%
select(Tickers,Prices) %>%
group_by(Tickers) %>%
do(data.frame(LogReturns=TTR::ROC(x=Prices)))
df$LogReturns = ret$LogReturns
Но здесь я получаю слишком много значений, кажется, что расчет не сделан Тикерсом.
Можете ли вы дать мне подсказку?
Спасибо !!