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.*"
)
)