Накопленная доходность складских запасов - PullRequest
0 голосов
/ 09 ноября 2019

Мне нужно создать доходность холдинга на 100USD из 3 разных акций.

Я сделал фрейм данных, содержащий акции GE, IBM и индекс NYA, взятые у Yahoo:

stocks <- as.xts(data.frame(GE = GE[,6], IBM = IBM[,6], NYA = NYA[,6]))

Затем я нашел их возврат:

stocks_return <- diff(log(stocks))

Что теперьМне нужно создать график, который отображает доходность холдинга для всех трех временных рядов, если я инвестирую 100USD.

1 Ответ

0 голосов
/ 09 ноября 2019

Я решил подобную проблему раньше. Вот адаптированная версия этого:

library(PerformanceAnalytics)
library(quantmod)
library(purrr)
library(magrittr)
library(ggplot2)

date <- "2019-01-01"


stocks <- c("GE",
            "IBM",
            "^NYA")

#get the data
prices  <- stocks %>%
 map(~ getSymbols(., auto.assign = FALSE, from = date))

#get adjusted data
precios_ajustados <- prices %>%
 map(., Ad)

#calculate returns for each adjusted prices
returns <- precios_ajustados %>%
 map(~
      Return.calculate(.x)
 )

#insert 100 in the first observation (made NA by Return.calculate()) to simulate the investment
for (i in 1:length(stocks)) {

 names(returns[[i]]) <- stocks[i]
 returns[[i]][1, 1]  <- 100
 returns[[i]][-1, 1] <- returns[[i]][-1, 1] + 1 #adding a one so that the cumulative return reflects ups and downs.

}

returns <- returns %>% map(~ cumprod(.)) #for every stock return, calculate the cumulative product.
returns <- set_names(returns, stocks) #settings names for easy calling

plot(returns$IBM)
lines(returns$GE, col = "red")
lines(returns$`^NYA`, col = "blue")

Вы можете получить исходный код непосредственно перед загрузкой необходимых библиотек.

...