Wczytywanie i obróbka danych

GOOGL_path <- "https://stooq.pl/q/d/l/?s=googl.us&d1=20140101&d2=20211231&i=d"
GOOGL <- read.csv(GOOGL_path)

GOOGL <- GOOGL%>%
  select(-c(Najwyzszy, Najnizszy, Wolumen))

head(GOOGL)
##         Data Otwarcie Zamkniecie
## 1 2014-01-02  27.8865    27.8280
## 2 2014-01-03  27.8750    27.6250
## 3 2014-01-06  27.8000    27.9330
## 4 2014-01-07  28.1250    28.4715
## 5 2014-01-08  28.6500    28.5310
## 6 2014-01-09  28.5860    28.2560


Obliczenie logarytmicznych stóp zwrotu

ror = function(value1, value2){
  log(value1/value2)
}

for (i in 1:nrow(GOOGL)){
  GOOGL[i, "Stopa_zwrotu"] = ror(GOOGL[i, "Zamkniecie"], GOOGL[i, "Otwarcie"])
}
head(GOOGL)
##         Data Otwarcie Zamkniecie Stopa_zwrotu
## 1 2014-01-02  27.8865    27.8280 -0.002099993
## 2 2014-01-03  27.8750    27.6250 -0.009009070
## 3 2014-01-06  27.8000    27.9330  0.004772765
## 4 2014-01-07  28.1250    28.4715  0.012244726
## 5 2014-01-08  28.6500    28.5310 -0.004162228
## 6 2014-01-09  28.5860    28.2560 -0.011611263


Podsumowanie

summary(GOOGL$Stopa_zwrotu*100)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -5.801924 -0.625686  0.027844  0.005705  0.727581  5.159005


Ustawianie parametrów dla VaR

az <- 10                                                # Liczba akcji
value1 <- GOOGL$Zamkniecie[length(GOOGL)]               # Aktualna cena
valuep <- value1*az                                     # Wartość naszego portfela
a  <- .95                                               # Poziom ufności (5%)


Wartość VaR dla naszych danych

var <- abs(quantile(GOOGL$Stopa_zwrotu, 1 - a) * valuep)
var; valuep
##       5% 
## 5.669209
## [1] 284.715

     Z tego wynika, że posiadając 10 akcji Alphabet (Google), na następnej sesji giełdowej przy prawdopodobieństwie ustalonym na poziomie 95% możemy maksymalnie stracić około 5,67$


hist(GOOGL$Stopa_zwrotu, breaks=100, main="Histogram dla stóp zwrotu", xlab = "", ylab = "")
abline(v=quantile(GOOGL$Stopa_zwrotu, 1-a), col="red", lwd=3, lty=2)


Wartość VaR obliczona wbudowaną funkcją

var_2 <- VaR(GOOGL$Stopa_zwrotu, p = 0.95, method = "historical")
abs(var_2*valuep)
##         [,1]
## VaR 5.669209