Analisis ini bertujuan untuk menghitung nilai risiko (Value at Risk atau VaR) dari return harian Bitcoin menggunakan pendekatan simulasi Monte Carlo. Data yang digunakan berupa harga penutupan harian Bitcoin yang kemudian dikonversi menjadi return harian dalam bentuk persentase. Proses simulasi dilakukan dengan asumsi distribusi normal berdasarkan rata-rata dan standar deviasi dari return historis. Hasil simulasi akan digunakan untuk menghitung estimasi nilai VaR pada tingkat kepercayaan 90% dan 95%.

Input Data

     Software yang digunakan dalam analisis ini adalah software R Studio. Langkah pertama dalam analisis ini adalah mengimpor data harga Bitcoin dari file Excel. Berikut adalah syntax yang digunakan untuk menginput data yang tersedia dalam bentuk excel.

library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
# Import data bitcoin
bitcoin<-read_excel("C:/Users/NAUFAL ABDUL FARID/Downloads/bitcoin (1).xlsx")
## New names:
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
## • `` -> `...17`
## • `` -> `...18`
library(ggplot2)
library(readxl)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## 
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## 
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
ggplot(bitcoin, aes(x = as.Date(Date), y = Close)) +
  geom_line(color = "steelblue") +
  labs(title = "Harga Penutupan Harian Bitcoin",
       x = "Tanggal",
       y = "Harga Penutupan (USD)") +
  theme_minimal()
## Warning: Removed 636 rows containing missing values or values outside the scale range
## (`geom_line()`).

Perhitungan Return Harian

     Setelah data harga penutupan Bitcoin berhasil diimpor, langkah berikutnya adalah menghitung return harian, yaitu perubahan persentase harga dari hari ke hari. Return ini digunakan sebagai dasar untuk estimasi distribusi return dan perhitungan risiko keuangan.

Return harian dihitung dengan rumus:

\[ \text{return}_t = \frac{P_t - P_{t-1}}{P_{t-1}} \times 100 \]

     di mana \(P_t\) adalah harga penutupan pada hari ke-\(t\), dan \(P_{t-1}\) adalah harga pada hari sebelumnya. Nilai return akan dikonversi ke bentuk desimal agar sesuai dengan standar input dalam simulasi Monte Carlo.

# Hitung return harian dalam persen
bitcoin$Return <- c(NA, diff(bitcoin$Close) / head(bitcoin$Close, -1) * 100)

# Hapus nilai NA dan ubah return ke bentuk desimal
return <- na.omit(bitcoin$Return) / 100
return
##   [1]  7.967833e-02 -4.192626e-02  2.117182e-02  1.272358e-02 -3.834495e-02
##   [6]  2.430324e-02  9.965977e-03 -7.934312e-03 -4.535760e-02  1.270507e-02
##  [11] -1.557212e-02 -1.128322e-02  4.124015e-02  1.801387e-02  5.446643e-03
##  [16]  8.855135e-03  9.751836e-02  7.013245e-02  1.459314e-02  3.163075e-02
##  [21] -1.644490e-02 -2.871766e-02  4.297433e-02 -2.277606e-02  2.128119e-02
##  [26]  3.913228e-02  7.185328e-02 -6.231492e-03  3.092663e-02  1.025036e-02
##  [31]  5.403450e-02  5.574281e-03  1.284171e-02  9.372578e-02  2.038007e-02
##  [36] -2.471200e-02  6.319658e-02  8.331071e-02  6.915747e-02  3.623390e-02
##  [41] -1.331114e-02 -4.715257e-02 -7.273316e-02 -4.621450e-02  1.000325e-01
##  [46]  5.013803e-02 -6.027359e-02 -1.757556e-02 -1.069329e-02  2.343579e-02
##  [51] -1.529534e-02 -1.447345e-02 -1.328368e-01  7.072224e-02 -2.842289e-02
##  [56]  6.914644e-03  2.385108e-03  6.286058e-03 -6.562212e-02  3.999201e-02
##  [61]  8.425954e-02 -1.365624e-03 -3.370820e-02  1.276837e-02  5.883361e-02
##  [66]  5.524598e-02 -1.457147e-02  3.299139e-02  2.940683e-02 -9.233693e-03
##  [71]  1.874647e-01  6.161524e-03 -3.362489e-02  6.659104e-02 -8.442624e-03
##  [76] -8.406214e-03  3.421624e-02 -1.585126e-02  2.617188e-02  5.994196e-02
##  [81] -8.997505e-03  8.143097e-02  3.782318e-03  2.567626e-02 -5.791846e-02
##  [86] -9.930199e-02  1.804233e-02 -5.253924e-02 -1.601249e-02 -3.265200e-03
##  [91] -2.274775e-02  9.955017e-02 -2.523116e-02  4.463206e-02 -3.912036e-02
##  [96]  7.539702e-03 -3.049805e-04  4.690650e-02  2.030657e-02  4.933522e-02
## [101]  2.160424e-02  3.207671e-02 -8.183207e-03  6.821653e-02 -3.168961e-02
## [106] -5.725100e-02  1.605702e-02  3.636996e-02 -1.718969e-02  8.429650e-03
## [111] -5.657191e-04 -1.355125e-02 -5.205319e-02  3.847498e-03 -3.589181e-02
## [116] -2.027703e-02  6.639992e-02  1.516576e-02 -4.067214e-04  3.216138e-02
## [121]  2.021625e-02  1.935963e-05  3.003735e-03  4.881969e-03 -2.998135e-02
## [126]  2.004490e-02  5.094139e-03 -1.465545e-02 -3.683339e-02  4.058981e-02
## [131] -1.353633e-03  2.658134e-02  6.885904e-03 -5.174187e-03  6.027376e-02
## [136] -6.200634e-03  3.237480e-03 -2.750138e-02 -1.443769e-02 -7.362155e-02
## [141] -8.750469e-03  1.343698e-02 -4.545429e-02 -3.976947e-02 -1.291715e-02
## [146] -2.040929e-02 -2.091099e-02  1.023891e-01  1.872141e-02 -3.787066e-03
## [151] -2.315733e-02  7.833177e-02  1.348481e-03 -2.069882e-02  1.005128e-02
## [156] -6.760025e-02  7.669599e-02 -1.789308e-02  1.702032e-02  2.523476e-02
## [161] -9.718099e-03 -4.074232e-02  1.512317e-02 -1.332175e-01  1.150865e-02
## [166]  3.305638e-03 -6.255642e-02 -6.504014e-03 -6.282382e-02 -1.442686e-02
## [171] -1.376612e-01  1.021634e-01 -8.528233e-02  6.217486e-03 -7.368937e-02
## [176]  1.131818e-01 -7.847826e-03  2.322721e-02 -2.181570e-02 -7.126897e-02
## [181] -3.029724e-02  3.068120e-02  4.637930e-02 -1.735548e-02  2.426757e-02
## [186]  4.347513e-02 -5.902658e-02 -3.638625e-02  8.731499e-03 -6.418068e-02
## [191] -2.624325e-03  1.156912e-01 -1.720502e-02  1.721406e-02 -4.772764e-02
## [196]  9.972132e-02  2.866186e-02  4.669321e-03 -5.096256e-02 -7.655309e-03
## [201] -5.955451e-02 -4.788717e-03  2.314299e-03 -1.126553e-01  2.616961e-02
## [206]  3.745093e-02  2.785664e-02 -8.726040e-02  1.733681e-02  7.653470e-02
## [211] -6.213876e-03  4.162826e-02 -2.305527e-02 -4.191449e-02  9.678558e-03
## [216]  2.276009e-02  1.786156e-02 -4.369154e-02  1.449628e-02 -1.109581e-02
## [221] -2.888636e-02  2.800226e-02 -8.210311e-03  2.146948e-02 -3.166863e-02
## [226] -1.368755e-02  3.679352e-03 -3.173500e-02 -1.130218e-02  3.549454e-03
## [231]  8.363987e-03 -3.078858e-02 -3.278895e-02  7.727443e-02  6.303573e-03
## [236]  3.925483e-02  2.116920e-02  3.084476e-02  5.621887e-02  5.542429e-02
## [241]  1.494571e-02  3.129227e-04  5.566640e-02 -1.442746e-02 -3.966975e-02
## [246] -1.933587e-02 -2.675798e-02  4.179289e-02  2.822947e-02  4.763804e-02
## [251]  4.062221e-02 -1.700527e-02  5.861634e-02 -1.683089e-02  1.887784e-04
## [256] -2.555944e-02  7.574073e-02 -1.457055e-02 -1.060396e-03 -2.215911e-02
## [261] -2.845647e-02  2.367765e-03  4.277544e-02  5.611587e-02 -8.789843e-03
## [266]  8.509477e-03  4.551674e-03 -3.713773e-02  2.630002e-02 -4.122830e-02
## [271]  4.508626e-02 -3.185281e-03 -1.483983e-03 -3.634761e-02  2.373885e-03
## [276]  3.562556e-02  9.840830e-03  1.414321e-02 -1.614181e-03  3.621581e-02
## [281]  1.700613e-02 -1.106216e-01 -1.537537e-02  6.509486e-03 -3.249548e-02
## [286]  7.074849e-03  1.906603e-02 -2.388444e-02  4.735926e-02  2.301546e-02
## [291] -8.157287e-03 -1.079539e-02  2.138559e-02 -2.108904e-02 -9.344895e-02
## [296] -5.018521e-02  7.079311e-02  3.030648e-02 -4.578112e-02 -2.874813e-03
## [301]  1.151649e-02 -2.251427e-02 -2.844008e-02  1.291157e-02  5.356828e-02
## [306]  9.878873e-02 -8.426411e-03  1.023789e-02  1.894087e-02  4.890589e-02
## [311]  7.467050e-02 -2.809653e-02  3.008277e-03  1.853650e-02 -3.577422e-03
## [316]  4.953684e-02 -2.511500e-02  2.426862e-02 -1.386284e-03  7.453441e-02
## [321] -1.139348e-02  1.086244e-02  7.675600e-03  3.604797e-02  2.693418e-02
## [326] -5.731931e-02 -2.439965e-02  1.155586e-02 -7.537938e-03  3.461282e-02
## [331] -4.244985e-02 -3.116779e-02  3.658794e-02  2.648914e-02 -5.449846e-03
## [336] -9.208043e-03 -5.129748e-03  3.642353e-02 -4.054564e-03 -2.410378e-02
## [341] -5.313960e-03  6.573419e-03  2.924722e-02  6.695155e-02 -8.806096e-03
## [346] -2.951387e-02 -6.965054e-04 -1.222510e-02  4.887871e-03  1.546952e-02
## [351] -2.915932e-02 -5.344145e-02  3.436857e-03 -5.674984e-02  2.067786e-02
## [356]  2.714433e-02 -1.619370e-02 -4.156594e-02  2.273586e-02 -2.238439e-02
## [361]  1.766607e-02 -6.468677e-02  2.324655e-02  4.439251e-02 -1.104151e-03
## attr(,"na.action")
##   [1]    1  367  368  369  370  371  372  373  374  375  376  377  378  379  380
##  [16]  381  382  383  384  385  386  387  388  389  390  391  392  393  394  395
##  [31]  396  397  398  399  400  401  402  403  404  405  406  407  408  409  410
##  [46]  411  412  413  414  415  416  417  418  419  420  421  422  423  424  425
##  [61]  426  427  428  429  430  431  432  433  434  435  436  437  438  439  440
##  [76]  441  442  443  444  445  446  447  448  449  450  451  452  453  454  455
##  [91]  456  457  458  459  460  461  462  463  464  465  466  467  468  469  470
## [106]  471  472  473  474  475  476  477  478  479  480  481  482  483  484  485
## [121]  486  487  488  489  490  491  492  493  494  495  496  497  498  499  500
## [136]  501  502  503  504  505  506  507  508  509  510  511  512  513  514  515
## [151]  516  517  518  519  520  521  522  523  524  525  526  527  528  529  530
## [166]  531  532  533  534  535  536  537  538  539  540  541  542  543  544  545
## [181]  546  547  548  549  550  551  552  553  554  555  556  557  558  559  560
## [196]  561  562  563  564  565  566  567  568  569  570  571  572  573  574  575
## [211]  576  577  578  579  580  581  582  583  584  585  586  587  588  589  590
## [226]  591  592  593  594  595  596  597  598  599  600  601  602  603  604  605
## [241]  606  607  608  609  610  611  612  613  614  615  616  617  618  619  620
## [256]  621  622  623  624  625  626  627  628  629  630  631  632  633  634  635
## [271]  636  637  638  639  640  641  642  643  644  645  646  647  648  649  650
## [286]  651  652  653  654  655  656  657  658  659  660  661  662  663  664  665
## [301]  666  667  668  669  670  671  672  673  674  675  676  677  678  679  680
## [316]  681  682  683  684  685  686  687  688  689  690  691  692  693  694  695
## [331]  696  697  698  699  700  701  702  703  704  705  706  707  708  709  710
## [346]  711  712  713  714  715  716  717  718  719  720  721  722  723  724  725
## [361]  726  727  728  729  730  731  732  733  734  735  736  737  738  739  740
## [376]  741  742  743  744  745  746  747  748  749  750  751  752  753  754  755
## [391]  756  757  758  759  760  761  762  763  764  765  766  767  768  769  770
## [406]  771  772  773  774  775  776  777  778  779  780  781  782  783  784  785
## [421]  786  787  788  789  790  791  792  793  794  795  796  797  798  799  800
## [436]  801  802  803  804  805  806  807  808  809  810  811  812  813  814  815
## [451]  816  817  818  819  820  821  822  823  824  825  826  827  828  829  830
## [466]  831  832  833  834  835  836  837  838  839  840  841  842  843  844  845
## [481]  846  847  848  849  850  851  852  853  854  855  856  857  858  859  860
## [496]  861  862  863  864  865  866  867  868  869  870  871  872  873  874  875
## [511]  876  877  878  879  880  881  882  883  884  885  886  887  888  889  890
## [526]  891  892  893  894  895  896  897  898  899  900  901  902  903  904  905
## [541]  906  907  908  909  910  911  912  913  914  915  916  917  918  919  920
## [556]  921  922  923  924  925  926  927  928  929  930  931  932  933  934  935
## [571]  936  937  938  939  940  941  942  943  944  945  946  947  948  949  950
## [586]  951  952  953  954  955  956  957  958  959  960  961  962  963  964  965
## [601]  966  967  968  969  970  971  972  973  974  975  976  977  978  979  980
## [616]  981  982  983  984  985  986  987  988  989  990  991  992  993  994  995
## [631]  996  997  998  999 1000 1001 1002
## attr(,"class")
## [1] "omit"
# Hitung rata-rata dan standar deviasi return
mean <- mean(return)
std <- sd(return)

Simulasi Monte Carlo - 1 Iterasi

     Setelah mendapatkan distribusi return historis dari data Bitcoin, langkah selanjutnya adalah melakukan simulasi Monte Carlo.

     Pada tahap ini, dilakukan satu kali simulasi untuk menghasilkan 365 return harian acak menggunakan distribusi normal, berdasarkan rata-rata dan standar deviasi dari return historis. Simulasi ini bertujuan untuk memperkirakan potensi distribusi return di masa depan secara acak namun masih dalam kerangka statistik yang realistis.

     Dari hasil simulasi ini, kemudian dihitung nilai Value at Risk (VaR) pada tingkat kepercayaan 90% dan 95% menggunakan pendekatan parametrik, yaitu:

\[ \text{VaR}_\alpha = \mu - z_\alpha \cdot \sigma \]

di mana: - \(\mu\) adalah rata-rata return simulasi, - \(\sigma\) adalah standar deviasi return simulasi, - \(z_\alpha\) adalah kuantil dari distribusi normal standar pada tingkat kepercayaan tertentu (misalnya, \(z_{0.9} \approx 1.28\)).

     Langkah ini memberikan estimasi awal terhadap potensi kerugian maksimum pada horizon waktu tertentu.

set.seed(45)
sim_return <- rnorm(365, mean = mean, sd = std)
mean_bintang <- mean(sim_return)
std_bintang <- sd(sim_return)

# VaR 90% dan 95%
var90_1 <- mean_bintang - qnorm(0.9)*std_bintang
var95_1 <- mean_bintang - qnorm(0.95)*std_bintang

var90_1
## [1] -0.05359919
var95_1
## [1] -0.06926532

Simulasi Monte Carlo - 1000 Iterasi

     Setelah melakukan satu kali simulasi, langkah selanjutnya adalah melakukan simulasi Monte Carlo sebanyak 1000 iterasi untuk mendapatkan estimasi Value at Risk (VaR) yang lebih stabil dan representatif.

     Pada setiap iterasi, dilakukan proses generate 365 return acak berdasarkan distribusi normal dengan parameter rata-rata dan standar deviasi return historis. Kemudian, dihitung rata-rata dan standar deviasi dari hasil simulasi tersebut untuk digunakan dalam perhitungan VaR.

     Dengan melakukan simulasi sebanyak 1000 kali, kita dapat menghitung rata-rata dari hasil VaR pada tingkat kepercayaan 90% dan 95%, sehingga hasil analisis menjadi lebih reliabel dan tidak bergantung pada satu sampel acak saja.

n <- 1000
var90_vals <- numeric(n)
var95_vals <- numeric(n)

set.seed(45)
for (i in 1:n) {
  sim_sample <- rnorm(365, mean = mean, sd = std)
  sim_mean <- mean(sim_sample)
  sim_std <- sd(sim_sample)
  
  var90_vals[i] <- sim_mean - qnorm(0.90) * sim_std
  var95_vals[i] <- sim_mean - qnorm(0.95) * sim_std
}

# Hasil rata-rata VaR
cat("90% VaR:", mean(var90_vals) * 100, "%\n")
## 90% VaR: -5.016139 %
cat("95% VaR:", mean(var95_vals) * 100, "%\n")
## 95% VaR: -6.553646 %

Simulasi Monte Carlo (dengan Pendekatan Kuantil)

     Pada bagian ini, dilakukan simulasi Monte Carlo sebanyak 1000 iterasi menggunakan dua pendekatan berbeda untuk menghitung nilai Value at Risk (VaR), yaitu:

  1. Pendekatan parametrik: VaR dihitung dengan rumus \(\text{VaR}_\alpha = \mu - z_\alpha \cdot \sigma\), berdasarkan rata-rata dan standar deviasi dari return simulasi.
  2. Pendekatan kuantil empiris: VaR dihitung langsung dari kuantil ke-10 (persentil ke-10) data return hasil simulasi tanpa asumsi distribusi tertentu.

     Simulasi ini bertujuan untuk membandingkan hasil antara pendekatan parametrik dan pendekatan kuantil dalam mengestimasi VaR. Dengan menggunakan pendekatan kuantil, kita tidak bergantung pada asumsi distribusi normal, sehingga hasilnya dapat mencerminkan risiko yang lebih realistis terutama jika distribusi return bersifat asimetris atau memiliki ekor tebal (fat tails).

     Prosedur ini memberikan gambaran yang lebih menyeluruh mengenai potensi kerugian di masa depan dengan mempertimbangkan ketidakpastian data historis dan variasi dari simulasi.

exprtn <- mean(return)
stdrtn <- sd(return)

# Inisialisasi
N <- 1000
simreturn <- matrix(NA, 365, N)
exp_r_sim <- numeric(N)
stdev_r_sim <- numeric(N)
VaR <- numeric(N)
VaR1 <- numeric(N)

# Simulasi
for (i in 1:N) {
  simreturn[, i] <- rnorm(365, exprtn, stdrtn)
  exp_r_sim[i] <- mean(simreturn[, i])
  stdev_r_sim[i] <- sd(simreturn[, i])
  VaR[i] <- exp_r_sim[i] - qnorm(0.9) * stdev_r_sim[i]
  VaR1[i] <- quantile(simreturn[, i], 0.1)
}

# Rata-rata VaR
MeanVaR <- mean(VaR)
MeanVaR1 <- mean(VaR1)

MeanVaR
## [1] -0.05017102
MeanVaR1
## [1] -0.04978212

Interpretasi Hasil Simulasi Monte Carlo

     Berdasarkan hasil simulasi Monte Carlo sebanyak 1000 iterasi, diperoleh dua nilai estimasi Value at Risk (VaR) harian Bitcoin pada tingkat kepercayaan 90% dengan dua pendekatan:

  • Rata-rata VaR Parametrik (90%): -5.0171 %
  • Rata-rata VaR Kuantil Empiris (90%): -4.9782 %

     Nilai-nilai tersebut menunjukkan bahwa, dengan tingkat kepercayaan 90%, potensi kerugian maksimum harian dari investasi pada Bitcoin diperkirakan berada di kisaran -4.98% (menggunakan pendekatan kuantil), atau sekitar -5.02% (dengan pendekatan parametrik). Artinya, dalam kondisi pasar yang normal, ada kemungkinan 10% bahwa kerugian harian bisa lebih besar dari nilai tersebut.

     Perbedaan antara dua pendekatan terlihat cukup kecil, tetapi tetap signifikan dalam praktik manajemen risiko. Pendekatan parametrik cenderung sedikit menghaluskan risiko karena berasumsi distribusi normal. Sementara itu, pendekatan kuantil menangkap distribusi data secara lebih realistis, sehingga biasanya memberikan hasil yang sedikit lebih ekstrem bila distribusi data memiliki skewness atau fat tails.

     Dengan mempertimbangkan nilai VaR dari kedua pendekatan tersebut, investor atau manajer risiko dapat membuat keputusan yang lebih terinformasi mengenai batas toleransi risiko, penyusunan portofolio, atau kebutuhan buffer modal untuk mengantisipasi volatilitas pasar kripto seperti Bitcoin.