Nazaj finance R

Donos investicije v daljšem časovnem obdobju ni odvisna zgolj od dolžine obdobja, ampak še bolj od dejanskega vstopa in izstopa iz naložbe. Trikotnik donosa je zelo dober način prikaza tega pojava.

izracunaj_trikotnik_donosa <- function(podatki, od = 2000, do = 2020) {
  podatki.po.letih <-
    podatki %>%
    filter(
      date >= paste0(od, "-01-01"),
      date <= paste0(do, "-12-31")
    ) %>%
    mutate(year = year(date)) %>%
    group_by(year) %>%
    summarise(
      date.min = min(date),
      date.max = max(date),
      .groups = "drop"
    ) %>%
    left_join(
      x = .,
      y = podatki %>% select(date, open),
      by = c("date.min" = "date")
    ) %>%
    left_join(
      x = .,
      y = podatki %>% select(date, close),
      by = c("date.max" = "date")
    ) %>%
    select(year, open, close)

  trikotnik.donosa <- c()
  for (kupi in 1:nrow(podatki.po.letih)) {
    for (prodaj in kupi:nrow(podatki.po.letih)) {
      trikotnik.donosa <- rbind(
        trikotnik.donosa, data.frame(
          kupi = as.numeric(podatki.po.letih[kupi, "year"]),
          prodaj = as.numeric(podatki.po.letih[prodaj, "year"]),
          donos = (
            as.numeric(podatki.po.letih[prodaj, "close"]) - as.numeric(podatki.po.letih[kupi, "open"])
          ) / as.numeric(podatki.po.letih[kupi, "open"])
        )
      )
    }
  }
  trikotnik.donosa %>%
    mutate(donos = round(100 * donos))
}

Če bi v letu \(2000\) začeli vlagati v indeks S&P 500, bi čakali kar \(14\) let, da bi dosegli pozitiven donos. Razlog je seveda v poku mehurčka IT podjetij, kjer so bila njihova vrednotenja takrat na vrhuncu in so kmalu zatem strmoglavila. Če bi vlaganje v isti indeks začeli v letu \(2003\), ne bi nikoli dosegli izgube vrednosti pod začetno investicijo in bi do konca leta \(2020\) dosegli \(327\ \%\) donosa.

od <- 2000
do <- 2020
izracunaj_trikotnik_donosa(SP500, od, do) %>%
  ggplot(aes(x = prodaj, y = kupi)) + 
  geom_raster(aes(fill = donos)) + 
  geom_text(aes(label = paste0(ifelse(donos > 0, "+", ""), donos, "%")), size = 3) +
  scale_fill_gradient2(midpoint = 0, low = "red", mid = "white", high = "green") +
  scale_x_continuous(
    breaks = seq(od, do, 1), 
    labels = ifelse(seq(od, do, 1) %% 5, "", seq(od, do, 1))
  ) +
  scale_y_continuous(
    trans = "reverse", breaks = seq(od, do, 1), 
    labels = ifelse(seq(od, do, 1) %% 5, "", seq(od, do, 1))
  ) +
  theme_classic() +
  theme(
    legend.position = "none",
    plot.title = element_markdown(),
    plot.subtitle = element_markdown(),
    axis.title.x = element_markdown(margin = margin(t = 10)),
    axis.title.y = element_markdown(margin = margin(r = 10)),
    panel.grid.major = element_line(colour = "gray", size = 0.2, linetype = "dotted")
  ) +  
  labs(
    x = "**Prodaja** ob koncu leta", y = "**Nakup** na začetku leta", 
    title = "**S&P 500** ($)", 
    subtitle = paste0(
      "*Trikotnik donosa od leta ", od, " do ", do, 
      ", kjer kupimo na začetku in prodamo na koncu leta.*"
    )
  )

Nekoliko drugače je s kriptovalutami, ki so na trgu sicer veliko manj časa (pojavile so se okrog leta \(2014\)). V nadaljevanju sta prikazani dve najbolj pogosto trgovani kriptovaluti, Bitcoin in Ethereum. Pri obeh lahko opazimo, da je bilo najbolj donosno vstopiti v investicijo čimprej. Če smo pri Bitcoinu to naredili leta \(2015\) bi v letu \(2020\) dosegli donos v višini \(8.862\ \%\), medtem ko bi pri Ethereum ob vstopu leta \(2016\) dosegli donos kar \(70.124\ \%\) ob koncu leta \(2020\). Najslabši trenutek začetka investicije je bilo pri obeh leto \(2018\), ko je prišlo do večje korekcije.

od <- 2015
do <- 2020
izracunaj_trikotnik_donosa(Bitcoin, od, do) %>%
  ggplot(aes(x = prodaj, y = kupi)) + 
  geom_raster(aes(fill = donos)) + 
  geom_text(size = 2.7, aes(label = paste0(
    ifelse(donos > 0, "+", ""), 
    format(donos, decimal.mark = ",", big.mark = "."), "%"
  ))) +
  scale_fill_gradient2(midpoint = 0, low = "red", mid = "white", high = "green") +
  scale_x_continuous(
    breaks = seq(od, do, 1), 
    labels = ifelse(seq(od, do, 1) %% 5, "", seq(od, do, 1))
  ) +
  scale_y_continuous(
    trans = "reverse", breaks = seq(od, do, 1), 
    labels = ifelse(seq(od, do, 1) %% 5, "", seq(od, do, 1))
  ) +
  theme_classic() +
  theme(
    legend.position = "none",
    plot.title = element_markdown(size = 12),
    plot.subtitle = element_markdown(size = 10),
    axis.title.x = element_markdown(margin = margin(t = 10), size = 10),
    axis.title.y = element_markdown(margin = margin(r = 10), size = 10),
    panel.grid.major = element_line(colour = "gray", size = 0.2, linetype = "dotted")
  ) +  
  labs(
    x = "**Prodaja** ob koncu leta", y = "**Nakup** na začetku leta", 
    title = "**Bitcoin** (€)", 
    subtitle = paste0(
      "*Trikotnik donosa od leta ", od, " do ", do, 
      ", kjer<br>kupimo na začetku in prodamo na koncu leta.*"
    )
  )

od <- 2016
do <- 2020
izracunaj_trikotnik_donosa(Ethereum, od, do) %>%
  ggplot(aes(x = prodaj, y = kupi)) + 
  geom_raster(aes(fill = donos)) + 
  geom_text(size = 2.7, aes(label = paste0(
    ifelse(donos > 0, "+", ""), 
    format(donos, decimal.mark = ",", big.mark = "."), "%"
  ))) +
  scale_fill_gradient2(midpoint = 0, low = "red", mid = "white", high = "green") +
  scale_x_continuous(
    breaks = seq(od, do, 1), 
    labels = ifelse(seq(od, do, 1) %% 5, "", seq(od, do, 1))
  ) +
  scale_y_continuous(
    trans = "reverse", breaks = seq(od, do, 1), 
    labels = ifelse(seq(od, do, 1) %% 5, "", seq(od, do, 1))
  ) +
  theme_classic() +
  theme(
    legend.position = "none",
    plot.title = element_markdown(size = 12),
    plot.subtitle = element_markdown(size = 10),
    axis.title.x = element_markdown(margin = margin(t = 10), size = 10),
    axis.title.y = element_markdown(margin = margin(r = 10), size = 10),
    panel.grid.major = element_line(colour = "gray", size = 0.2, linetype = "dotted")
  ) +  
  labs(
    x = "**Prodaja** ob koncu leta", y = "**Nakup** na začetku leta", 
    title = "**Ethereum** (€)", 
    subtitle = paste0(
      "*Trikotnik donosa od leta ", od, " do ", do, 
      ", kjer<br>kupimo na začetku in prodamo na koncu leta.*"
    )
  )