Simulasi Monte Carlo VaR 90 dan VaR 95 pada return Bitcoin

1. Read Data

df <- readxl::read_excel("C:/Users/Acer/OneDrive - Institut Teknologi Sepuluh Nopember/Semester 6/Simulasi Aktuaria/Pertemuan 12 - 05.19/Data Bitcoin.xlsx")
head(df)
## # A tibble: 6 × 5
##   Date         Open   High    Low  Close
##   <chr>       <dbl>  <dbl>  <dbl>  <dbl>
## 1 2020-11-29 17720. 18284. 17559. 18177.
## 2 2020-11-30 18178. 19749. 18178. 19626.
## 3 2020-12-01 19634. 19846. 18322. 18803.
## 4 2020-12-02 18802. 19308. 18348. 19201.
## 5 2020-12-03 19206. 19566. 18926. 19445.
## 6 2020-12-04 19447. 19511. 18697. 18700.

2. Calculating Return

## # A tibble: 6 × 6
##   Date         Open   High    Low  Close  Return
##   <chr>       <dbl>  <dbl>  <dbl>  <dbl>   <dbl>
## 1 2020-11-29 17720. 18284. 17559. 18177. NA     
## 2 2020-11-30 18178. 19749. 18178. 19626.  0.0797
## 3 2020-12-01 19634. 19846. 18322. 18803. -0.0419
## 4 2020-12-02 18802. 19308. 18348. 19201.  0.0212
## 5 2020-12-03 19206. 19566. 18926. 19445.  0.0127
## 6 2020-12-04 19447. 19511. 18697. 18700. -0.0383

3. Calculating Mean and Standard Deviation of Return

expected_return <- mean(df$Return, na.rm = T)
std_return <- sd(df$Return, na.rm = T)
expected_return
## [1] 0.004034396
std_return
## [1] 0.04229799

4. Simulation Monte Carlo

4.1 Z-score Parameter

Z_90 <- qnorm(0.9)
Z_95 <- qnorm(0.95)

4.2 Running Monte Carlo Simulation

monte_var90 <- c()
monte_var95 <- c()
for(i in 1:1000){
    R_Star <- rnorm(365, expected_return, std_return)
    VAR_90 <- mean(R_Star) - sd(R_Star) * Z_90
    VAR_95 <- mean(R_Star) - sd(R_Star) * Z_95
    monte_var90[i] <- mean(VAR_90)
    monte_var95[i] <- mean(VAR_95)
}

4.3 Calculating Mean each Simulation

montecarlo <- data.frame(monte_var90, monte_var95)
colMeans(montecarlo)
## monte_var90 monte_var95 
## -0.05022426 -0.06560209