Packages

library(quantmod)
library(tseries)
library(vars)
library(xts)
library(ggplot2)
library(fBasics)

Data Preparation

# Ambil Data 4 Bank
getSymbols(c("BRIS.JK", "BNGA.JK",
             "NISP.JK", "BNII.JK"),
           from="2022-01-01",
           to="2026-01-31",
           src="yahoo",
           adjust=TRUE)
## [1] "BRIS.JK" "BNGA.JK" "NISP.JK" "BNII.JK"
# Harga Penutupan (Close)
closeBRIS <- Cl(BRIS.JK)
closeBNGA <- Cl(BNGA.JK)
closeNISP <- Cl(NISP.JK)
closeBNII <- Cl(BNII.JK)

bank_close <- na.omit(cbind(closeBRIS,
                            closeBNGA,
                            closeNISP,
                            closeBNII))

colnames(bank_close) <- c("BRIS","BNGA","NISP","BNII")

# Plot harga
plot(bank_close,
     main="Harga Penutupan 4 Bank (2022-2026)",
     col=c("blue","red","green","purple"),
     lwd=2)

Grafik harga penutupan empat saham bank periode 2022–2026 menunjukkan bahwa secara umum terdapat kecenderungan tren meningkat, meskipun dengan tingkat fluktuasi yang berbeda pada masing-masing saham. Saham BRIS terlihat memiliki level harga paling tinggi serta pergerakan yang paling volatil dibandingkan bank lainnya, dengan kenaikan signifikan terutama pada periode 2023 hingga awal 2025 sebelum mengalami koreksi di akhir periode pengamatan. BNGA dan NISP menunjukkan pola kenaikan yang relatif lebih stabil dan bertahap, mencerminkan pertumbuhan yang konsisten dengan volatilitas yang lebih terkendali. Sementara itu, BNII memiliki level harga paling rendah dan cenderung bergerak lebih datar dibandingkan tiga saham lainnya, dengan perubahan yang tidak terlalu tajam sepanjang periode observasi. Secara keseluruhan, pergerakan harga keempat saham mencerminkan adanya tren jangka menengah yang meningkat, namun tetap dipengaruhi oleh dinamika pasar yang menyebabkan fluktuasi harga dari waktu ke waktu.

Data Transformation

# Return Log
bank_ret <- diff(log(bank_close))
bank_ret <- na.omit(bank_ret)

plot(bank_ret,
     main="Return Log 4 Bank",
     col=c("blue","red","green","purple"))

Grafik return log empat saham bank periode 2022–2026 menunjukkan bahwa seluruh return berfluktuasi di sekitar nilai nol tanpa membentuk tren tertentu. Pola ini berbeda dengan grafik harga sebelumnya yang memiliki kecenderungan meningkat, karena setelah dilakukan transformasi log-difference (return), pergerakan data menjadi lebih stabil dan berosilasi secara acak di sekitar rata-rata. Hal ini mengindikasikan bahwa return saham cenderung bersifat stasioner dalam mean.

Terlihat bahwa sebagian besar nilai return berada dalam rentang kecil (sekitar -0,05 hingga 0,05), namun pada beberapa periode muncul lonjakan ekstrem baik positif maupun negatif. BRIS tampak memiliki fluktuasi paling besar dibandingkan bank lainnya, ditandai dengan spike yang lebih tinggi dan lebih dalam, yang menunjukkan tingkat volatilitas yang lebih tinggi. Sementara itu, BNGA dan NISP menunjukkan pergerakan yang relatif lebih moderat, dan BNII meskipun sesekali mengalami lonjakan, secara umum memiliki rentang fluktuasi yang lebih sempit.

Secara keseluruhan, grafik ini mencerminkan karakteristik umum return saham, yaitu bergerak secara acak di sekitar nol dengan adanya volatilitas yang berubah-ubah dari waktu ke waktu. Tidak terlihat adanya tren naik atau turun jangka panjang pada return, tetapi terdapat periode-periode dengan peningkatan volatilitas yang mengindikasikan adanya guncangan pasar atau perubahan sentimen investor.

Statistik Deskriptif

basicStats(bank_ret)
##                   BRIS       BNGA       NISP       BNII
## nobs        977.000000 977.000000 977.000000 977.000000
## NAs           0.000000   0.000000   0.000000   0.000000
## Minimum      -0.117783  -0.057679  -0.045910  -0.065751
## Maximum       0.191575   0.067869   0.075153   0.138150
## 1. Quartile  -0.012270  -0.005747  -0.007018  -0.008299
## 3. Quartile   0.009950   0.005848   0.007463   0.007843
## Mean          0.000300   0.000964   0.001029  -0.000321
## Median        0.000000   0.000000   0.000000   0.000000
## Sum           0.293520   0.941984   1.004982  -0.313358
## SE Mean       0.000805   0.000414   0.000420   0.000478
## LCL Mean     -0.001279   0.000151   0.000204  -0.001260
## UCL Mean      0.001880   0.001777   0.001853   0.000618
## Variance      0.000633   0.000168   0.000173   0.000224
## Stdev         0.025153   0.012948   0.013135   0.014956
## Skewness      0.706050   0.709138   0.753363   1.100986
## Kurtosis      6.667916   3.315629   3.726998  11.504442
summary(bank_ret)
##      Index                 BRIS                 BNGA           
##  Min.   :2022-01-04   Min.   :-0.1177830   Min.   :-0.0576791  
##  1st Qu.:2022-12-30   1st Qu.:-0.0122701   1st Qu.:-0.0057471  
##  Median :2024-01-08   Median : 0.0000000   Median : 0.0000000  
##  Mean   :2024-01-14   Mean   : 0.0003004   Mean   : 0.0009642  
##  3rd Qu.:2025-01-17   3rd Qu.: 0.0099503   3rd Qu.: 0.0058480  
##  Max.   :2026-01-30   Max.   : 0.1915748   Max.   : 0.0678686  
##       NISP                BNII           
##  Min.   :-0.045910   Min.   :-0.0657514  
##  1st Qu.:-0.007018   1st Qu.:-0.0082988  
##  Median : 0.000000   Median : 0.0000000  
##  Mean   : 0.001029   Mean   :-0.0003207  
##  3rd Qu.: 0.007463   3rd Qu.: 0.0078432  
##  Max.   : 0.075153   Max.   : 0.1381503
  • Mean dan median semua return mendekati nol, menunjukkan return memiliki stasioner mean dan distribusi relatif simetris.
  • Volatilitas berdasarkan nilai minimum, maksimum, dan varians menunjukkan BRIS dan BNII paling fluktuatif, sedangkan BNGA dan NISP lebih stabil. Varians relatif konstan menandakan stasioneritas varians.
  • Skewness semua positif, sehingga distribusi return condong ke kanan, dengan BNII paling ekstrem.
  • Kurtosis lebih besar dari tiga, menunjukkan distribusi leptokurtic dan kemungkinan munculnya return ekstrem lebih sering. BRIS dan BNII memiliki kurtosis tertinggi, sedangkan BNGA dan NISP mendekati distribusi normal.

Daily Return Chart

BRIS

chartSeries(bank_ret$BRIS,
            theme="white",
            up.col="green",
            dn.col="red",
            subset="2022::2026")

Return harian BRIS selama 2022–awal 2026 terlihat paling volatil dibanding yang lain, dengan beberapa lonjakan ekstrem baik positif maupun negatif (mencapai di atas 15% dan turun mendekati -10%). Fluktuasi besar muncul terutama di awal 2022 dan sekitar 2025, menandakan sensitivitas tinggi terhadap sentimen pasar atau peristiwa tertentu. Meskipun mayoritas return bergerak di sekitar nol, besarnya spike menunjukkan risiko yang relatif tinggi.

BNGA

chartSeries(bank_ret$BNGA,
            theme="white",
            up.col="green",
            dn.col="red",
            subset="2022::2026")

Return BNGA relatif lebih stabil dengan rentang fluktuasi yang lebih sempit (sekitar -6% hingga +7%). Pergerakan harian umumnya terkonsentrasi di sekitar nol dengan beberapa lonjakan sesekali, terutama pada 2023–2024. Pola ini mencerminkan volatilitas moderat dan risiko yang lebih terkendali dibanding BRIS.

NISP

chartSeries(bank_ret$NISP,
            theme="white",
            up.col="green",
            dn.col="red",
            subset="2022::2026")

NISP menunjukkan volatilitas yang cukup terjaga, dengan sebagian besar return harian berada dalam kisaran -4% hingga +6%. Terdapat beberapa lonjakan positif yang menonjol pada 2022–2023, namun secara keseluruhan pergerakan tetap stabil di sekitar nol. Ini mengindikasikan profil risiko menengah dengan dinamika yang relatif konsisten.

BNII

chartSeries(bank_ret$BNII,
            theme="white",
            up.col="green",
            dn.col="red",
            subset="2022::2026")

Return BNII juga berfluktuasi di sekitar nol dengan beberapa spike signifikan, terutama lonjakan positif besar sekitar 2024 dan penurunan tajam di beberapa periode. Rentang pergerakan umumnya antara -6% hingga +12%, menunjukkan volatilitas yang lebih tinggi dibanding BNGA dan NISP, namun masih di bawah BRIS. Secara umum, BNII memiliki risiko menengah ke atas dengan beberapa kejutan return ekstrem.

Uji Normalitas (Jarque-Bera)

BRIS

normalTest(bank_ret$BRIS, method="jb")
## 
## Title:
##  Jarque-Bera Normality Test
## 
## Test Results:
##   STATISTIC:
##     X-squared: 1902.1375
##   P VALUE:
##     Asymptotic p Value: < 2.2e-16

Statistik X-squared: 1902.14, P-value: < 2.2e-16 Interpretasi: Hipotesis normalitas ditolak. Return log BRIS tidak berdistribusi normal, dengan skew positif dan ekor tebal. Hal ini menandakan ada kemungkinan munculnya return ekstrem yang cukup besar.

BNGA

normalTest(bank_ret$BNGA, method="jb")
## 
## Title:
##  Jarque-Bera Normality Test
## 
## Test Results:
##   STATISTIC:
##     X-squared: 533.162
##   P VALUE:
##     Asymptotic p Value: < 2.2e-16

Statistik X-squared: 533.16, P-value: < 2.2e-16 Interpretasi: Hipotesis normalitas ditolak. Return log BNGA tidak berdistribusi normal, meski ekstremnya lebih kecil dibanding BRIS dan BNII. Distribusi return condong ke kanan (skew positif), sehingga ada peluang return positif besar, tetapi frekuensi ekstrem relatif lebih rendah.

NISP

normalTest(bank_ret$NISP, method="jb")
## 
## Title:
##  Jarque-Bera Normality Test
## 
## Test Results:
##   STATISTIC:
##     X-squared: 662.3536
##   P VALUE:
##     Asymptotic p Value: < 2.2e-16

Statistik X-squared: 662.35, P-value: < 2.2e-16 Interpretasi: Hipotesis normalitas ditolak. Return log NISP tidak berdistribusi normal, dengan skew positif dan kemungkinan munculnya return ekstrem sedang. Volatilitas NISP lebih moderat dibanding BRIS dan BNII.

BNII

normalTest(bank_ret$BNII, method="jb")
## 
## Title:
##  Jarque-Bera Normality Test
## 
## Test Results:
##   STATISTIC:
##     X-squared: 5613.7156
##   P VALUE:
##     Asymptotic p Value: < 2.2e-16

Statistik X-squared: 5613.72, P-value: < 2.2e-16 Interpretasi: Hipotesis normalitas ditolak. Return log BNII tidak berdistribusi normal, dengan skew positif tinggi dan ekor distribusi sangat tebal. Artinya BNII memiliki potensi return ekstrem yang sangat besar dibanding bank lain.

Uji Stasioneritas (ADF Test)

BRIS

adf.test(bank_ret$BRIS)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  bank_ret$BRIS
## Dickey-Fuller = -10.062, Lag order = 9, p-value = 0.01
## alternative hypothesis: stationary

Hasil uji Augmented Dickey-Fuller menunjukkan bahwa return saham BRIS bersifat stasioner dalam mean (tidak memiliki unit root). Hal ini berarti rata-rata return relatif konstan sepanjang waktu, sehingga tidak terdapat tren jangka panjang yang signifikan pada pergerakan return harian.

BNGA

adf.test(bank_ret$BNGA)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  bank_ret$BNGA
## Dickey-Fuller = -9.5929, Lag order = 9, p-value = 0.01
## alternative hypothesis: stationary

Hasil uji Augmented Dickey-Fuller menunjukkan bahwa return saham BNGA bersifat stasioner dalam mean (tidak memiliki unit root). Hal ini berarti rata-rata return relatif konstan sepanjang waktu, sehingga tidak terdapat tren jangka panjang yang signifikan pada pergerakan return harian.

NISP

adf.test(bank_ret$NISP)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  bank_ret$NISP
## Dickey-Fuller = -8.9651, Lag order = 9, p-value = 0.01
## alternative hypothesis: stationary

Hasil uji Augmented Dickey-Fuller menunjukkan bahwa return saham NISP bersifat stasioner dalam mean (tidak memiliki unit root). Hal ini berarti rata-rata return relatif konstan sepanjang waktu, sehingga tidak terdapat tren jangka panjang yang signifikan pada pergerakan return harian.

BNII

adf.test(bank_ret$BNII)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  bank_ret$BNII
## Dickey-Fuller = -10.242, Lag order = 9, p-value = 0.01
## alternative hypothesis: stationary

Hasil uji Augmented Dickey-Fuller menunjukkan bahwa return saham BNII bersifat stasioner dalam mean (tidak memiliki unit root).Hal ini berarti rata-rata return relatif konstan sepanjang waktu, sehingga tidak terdapat tren jangka panjang yang signifikan pada pergerakan return harian.

Rolling Mean & Rolling Variance

window <- 30  # 30 hari rolling

par(mfrow=c(2,2))  # 2x2 plot

for(i in 1:4){
  ret <- bank_ret[,i]
  roll_mean <- rollmean(ret, k=window, align="right", fill=NA)
  roll_var <- rollapply(ret, width=window, FUN=var, align="right", fill=NA)
  
  plot(index(ret), roll_mean, type="l", col="blue",
       main=paste("Rolling Mean", colnames(bank_ret)[i]),
       ylab="Mean", xlab="Tahun")
  
  plot(index(ret), roll_var, type="l", col="red",
       main=paste("Rolling Variance", colnames(bank_ret)[i]),
       ylab="Variance", xlab="Tahun")
}

par(mfrow=c(1,1))

Berdasarkan grafik rolling mean dan rolling variance periode 2022–2026 pada saham BRIS, BNGA, NISP, dan BNII, terlihat bahwa rolling mean berfluktuasi di sekitar nol tanpa tren yang konsisten sehingga return cenderung stasioner dalam mean. Namun, rolling variance menunjukkan perubahan yang tidak konstan dengan beberapa lonjakan volatilitas, terutama sekitar 2023–2025, di mana BRIS dan NISP tampak lebih berfluktuasi dibanding BNGA dan BNII. Pola ini mengindikasikan adanya volatility clustering dan heteroskedastisitas, sehingga model seperti ARCH atau GARCH lebih sesuai digunakan.