РЕДАКТИРОВАТЬ:
Я попытался внести изменения и выбрал пакет tidyquant
, которым поделились в комментариях ниже.
На этот раз я установил диапазон с переменными, но, думаю, у меня возникли проблемы с превращением его в функцию или вектор. Это может быть результатом того, что я не написал плохое for loop
или ограничение с базовой библиотекой.
Идея этого цикла заключается в том, что он вытягивает скорректированные цены за период, а затем берет первое ипоследняя цена, чтобы рассчитать изменение (или возвращение цены акций)
Я не уверен, но хотелось бы некоторые мысли!
start_date = "2019-05-20"
end_date = "2019-05-30"
Symbol_list <- c("CTVA","IBM", "GOOG", "GE")
range_returns <- for (Symbol in Symbol_List) {
frame <- tq_get(Symbol, get = "stock.prices", from = start_date, to = end_date, complete_cases = FALSE)[,7]
(frame[nrow(frame),] - frame[1,]) / frame[1,]
}
Старые вещи
Допустим, у меня есть фрейм данных
symbol <- c("GOOG", "IBM","GE","F","BKR")
name <- c("Google", "IBM","General Electric","Ford","Berkshire Hathaway")
df <- cbind(symbol, name)
И я хочу создать третийстолбец - df $ custom_return, который определяется на основе моего личного периода времени.
Я пытался работать с пакетом quantmod, и у меня возникли некоторые проблемы с его ограничениями.
Где я нахожусьв:
Сначала мне нужно вытащить всю историю цен, которая запрещает возможность создавать новый столбец, например:
start_date <- "2003-01-05"
end_date <- "2019-01-05"
df$defined_period_return <- ROC(getSymbol(df$symbol, src = yahoo, from = start_date, to = end_date, periodicity = "monthly"))
Я знаю, что мне нужно только скорректированное закрытие, которое является 6-мколонка для источника Yahoo. Итак, я мог бы добавить следующее и просто перенести записи в среду.
price_history <- null
for (Symbol in sp_500$Symbol)
price_history <- cbind(price_history,
getSymbols(df$symbol, from = start_date,
to = end_date, periodicity = "daily",
auto.assign=FALSE)[,6])
Хорошо, это кажется выполнимым, но это не совсем гладко, и теперь я сталкиваюсь с проблемой, если один из моих символов (Tickers) выходит за пределы диапазона предоставленных дат. Например, CTVA является одним из них, и он начал торговать только после даты окончания. Весь скребок тут же останавливается. Как мне пропустить эту ошибку?
И, скажем, мы решили "загвоздку" отсутствия соответствующих записей ... как бы вы вычислили доходность для каждого символа за разные сроки? Например, Google не начал торговать до 2004 года. GetSymbol действительно тянет историю цен, как только начинает торговать, но эта временная шкала возврата отличается от GE, у которой были данные в начале моего диапазона.