Loeme sisse tarvilikud lisapaketid (ja installeerime nad, kui puudu)

if(!require(gsheet)){
  install.packages("gsheet")
  library(gsheet)
}

if(!require(tidyverse)){
  install.packages("tidyverse")
  library(tidyverse)
}
if(!require(lubridate)){
  install.packages("lubridate")
  library(lubridate)
}

Mis ajavahemikku me soovime vaadata:

algkuup <- "02.01.2018" #1 jaanuar oli pangapüha ilmselt
loppkuup <- "16.05.2019"

Tõmbame pensionikeskusest alla konkreetse fondi NAVid. Hetkel Swedbank K4 (fondi numbri saab pensionikeskuses linkide lõppu vaadates).

fondinumber = 52 
url1 <- paste("https://www.pensionikeskus.ee/statistika/ii-sammas/kogumispensioni-fondide-nav/?date_from=", algkuup, "&date_to=", loppkuup, "&f%5B%5D=", fondinumber, "&download=xls", sep="")
nav1 <- read.csv2(url1, fileEncoding ="UTF-16", header = TRUE, sep = "\t")%>%
  select(-ISIN, -Muutus.., -Fond)%>%
  mutate(Kuupäev=dmy(Kuupäev))

algv22rtus <- nav1$NAV[nav1$Kuupäev==dmy(algkuup)]
nav1$indekseeritud=nav1$NAV/algv22rtus*100

Tõmbame Google sheetsist [https://docs.google.com/spreadsheets/d/125aXusxnf-Mij-4D4W5Qnneb8H4chjebnIMpyrAfRkI/edit?fbclid=IwAR2_6Ak1vQWH9ZI3lcFo_CXsf7mI45RhPApdfwURoiT0DQHfke3JoNFLiV0#gid=619370394] alla võrdlusindeksi (aegajalt ei reageeri google API piisavalt kiiresti, siis tuleb seda uuesti jooksutada):

url <- "https://docs.google.com/spreadsheets/d/125aXusxnf-Mij-4D4W5Qnneb8H4chjebnIMpyrAfRkI/edit?fbclid=IwAR2_6Ak1vQWH9ZI3lcFo_CXsf7mI45RhPApdfwURoiT0DQHfke3JoNFLiV0#gid=619370394"
indeks <- read_csv(gsheet2text(url, format="csv"), skip=7)%>%
  mutate(Kuupäev=dmy(X1))%>%
  select(Kuupäev, `Index value`)%>%
  mutate(Lühinimi="Võrdlusindeks")%>%
  filter(Kuupäev >= dmy(algkuup), Kuupäev <=dmy(loppkuup))
## No encoding supplied: defaulting to UTF-8.
## Warning: Missing column names filled in: 'X1' [1], 'X8' [8]
## Warning: Duplicated column names deduplicated: 'Stock' => 'Stock_1' [4],
## 'Bond' => 'Bond_1' [5]
algv22rtus_indeks=indeks$`Index value`[indeks$Kuupäev==dmy(algkuup)]
indeks$indekseeritud <- indeks$`Index value`/algv22rtus_indeks*100

Paneme andmed kokku:

andmed_koos <- bind_rows(nav1, indeks)
## Warning in bind_rows_(x, .id): binding factor and character vector,
## coercing into character vector
## Warning in bind_rows_(x, .id): binding character and factor vector,
## coercing into character vector

Paneme graafikule:

ggplot(andmed_koos, aes(x=Kuupäev, y=indekseeritud))+
  geom_line(aes(color=Lühinimi))+
  theme_minimal()+
  ylab(paste("Indekseeritud väärtus (", algkuup, "=100)", sep=""))
## Warning: Removed 1 rows containing missing values (geom_path).

Lisame käsitsi mõned kommentaarid:

ggplot(andmed_koos, aes(x=Kuupäev, y=indekseeritud))+
  geom_line(aes(color=Lühinimi))+
  theme_minimal()+
  ylab(paste("Indekseeritud väärtus (", algkuup, "=100)", sep=""))+
  geom_label(aes(label="Jaanuar 2018:\nTaktikaliselt aga alustasime\naastat neutraalsest kõrgema\naktsiaosakaaluga, ent aktsia-\nturgude järsu languse tõttu\nei lisanud see positsioon\nväärtust. ", x=dmy("01.01.2018"), y=115), size=2.5, vjust=1)+
  scale_x_date(expand=c(0.2,0.2))+
  geom_label(aes(label="Märts 2018:\nMärtsi alguses\nviisime aktsiaosakaalu\nfondis neutraalsele\ntasemele", x=dmy("01.03.2018"), y=90), size=2.5, vjust=0)+
  geom_label(aes(label="Aprill 2018:\nAprilli algusest \n neutraalselt madalamale\ntasemele", x=dmy("01.04.2018"), y=107), size=2.5, vjust=1)+
  geom_label(aes(label="Mai 2018:\nMai alguses\nsuurendasime taas\nneutraalsele tasemele", x=dmy("01.05.2018"), y=95), size=2.5, vjust=0, alpha=0.7)
## Warning: Removed 1 rows containing missing values (geom_path).