Я использую этот код для загрузки данных из yahoo finance
и построения графика некоторых акций относительно S & P500 после нормализации цен adjusted
.
Следующий код возвращает;
Ra <- c("NFLX") %>%
tq_get(get = "stock.prices",
from = "2013-01-01",
to = "2016-12-31")
Rb <- "SPY" %>%
tq_get(get = "stock.prices",
from = "2013-01-01",
to = "2016-12-31")
stock_returns_daily <- Ra
benchmark_returns_daily <- Rb
RaRb <- left_join(stock_returns_daily, benchmark_returns_daily, by = c("date" = "date"))
normalise_series <- function(xdat) xdat / coredata(xdat)[1]
RaRb %>%
ggplot(aes(x = date)) +
geom_line(aes(y = normalise_series(adjusted.x)-1), linetype = "dashed") +
geom_line(aes(y = normalise_series(adjusted.y)-1), color = "red") +
labs(title = "Daily Stock Prices",
x = "", y = "Adjusted Prices", color = "") +
#facet_wrap(~ symbol, ncol = 2, scales = "free_y") +
scale_y_continuous(labels = scales::dollar) +
theme_tq() +
scale_color_tq()
Эта цифра (которая является нормализованной ценой акций Netflix по отношению к S & P500):
Мне это кажется интуитивно понятным и правильным, оба начинаются с начала 0
, однако, когда я пытаюсь добавить другие акции AMZN
, FB
, GOOG
и NFLX
, а также раскомментируя facet_wrap(~ symbol, ncol = 2, scales = "free_y") +
, я больше не получаю тот же сюжет. Я использую один и тот же код, и он дает мне два разных результата.
Ra <- c("AMZN","FB","GOOG", "NFLX") %>%
tq_get(get = "stock.prices",
from = "2013-01-01",
to = "2016-12-31")
Rb <- "SPY" %>%
tq_get(get = "stock.prices",
from = "2013-01-01",
to = "2016-12-31")
stock_returns_daily <- Ra
benchmark_returns_daily <- Rb
RaRb <- left_join(stock_returns_daily, benchmark_returns_daily, by = c("date" = "date"))
normalise_series <- function(xdat) xdat / coredata(xdat)[1]
RaRb %>%
ggplot(aes(x = date)) +
geom_line(aes(y = normalise_series(adjusted.x) -1), color = "red") +
geom_line(aes(y = normalise_series(adjusted.y) -1), linetype = "dashed") +
labs(title = "Daily Stock Prices",
x = "", y = "Adjusted Prices", color = "") +
facet_wrap(~ symbol, ncol = 2, scales = "free_y") +
scale_y_continuous(labels = scales::dollar) +
theme_tq() +
scale_color_tq()
Давая мне следующее:
Теперь NFLX
отрицательно и дает мне другой сюжет.
normalize series
, который может нормализовать комбинацию всех четырех акций вместе, а не по отдельности. Масштаб оси Y также намекает на это. Попробуйте ввести набор данных как данные, нормализованные для каждой акции, а не использовать функциюnormalize.series
в вызовеgpplot
. Это нормализует весь набор данных вместе, а не по переменным фасетирования. Вы должны сделать эту нормализацию внеggplot
. - person Noah   schedule 13.07.2018