Library dan setup
library(tidyquant) # untuk ambil data
library(psych) # stat deskriptif
library(dplyr)
Import Data
list_kode <- function(teks) {
kode <- strsplit(teks, "\\s+")[[1]]
return(kode)
}
ambil_data <- function(code, start_date, end_date) {
# code = kode saham (string)
# start_date = awal periode (string)
# end_date = akhir periode (string)
# Khusus IHSG tidak pakai .JK, selain IHSG pakai .JK
ticker <- ifelse(substr(code, 1, 1) == "^", code, paste0(code, ".JK"))
# Ambil data
price = tq_get(ticker,
from = start_date,
to = end_date)
# Hitung returns
returns = diff(log(price$close))
# Simpan di dalam data frame
df <- data.frame(
date = price$date, # tanggal
close = price$close, # harga penutupan saham
returns = c(NA, returns) # returns, baris pertama kosong (NA)
)
return(df)
}
saham <- "AKRA ANTM ASII ASSA AUTO BBCA BBNI BBRI BBTN BMRI BTPS CTRA DSNG EMTK ICBP INCO INDF INTP JPFA JSMR KLBF PWON SMGR SMSM SSMS UNTR UNVR"
kode_saham <- c("^JKSE", list_kode(saham))
#pb <- txtProgressBar(min=0, max=length(kode_saham), style=3)
# Inisialisasi list untuk menyimpan data returns
df_list <- list()
for (i in seq_along(kode_saham)) {
kode <- kode_saham[i]
data_saham <- ambil_data(kode, "2025-03-01", "2026-03-01")
df_temp <- data.frame(
tanggal = data_saham$date,
returns = data_saham$returns
)
colnames(df_temp)[2] <- kode
df_list[[kode]] <- df_temp
#setTxtProgressBar(pb, i)
}
# Mengecek apakah jumlah baris sama
#cat("\n\n")
sapply(df_list, nrow)
## ^JKSE AKRA ANTM ASII ASSA AUTO BBCA BBNI BBRI BBTN BMRI BTPS CTRA
## 235 235 235 235 235 235 235 235 235 235 235 235 235
## DSNG EMTK ICBP INCO INDF INTP JPFA JSMR KLBF PWON SMGR SMSM SSMS
## 235 235 235 235 235 235 235 235 235 235 235 235 235
## UNTR UNVR
## 235 235
# Merge berdasarkan tanggal
df <- Reduce(function(x,y) merge(x, y, by="tanggal", all=FALSE), df_list)
df <- na.omit(df) # hapus baris pertama yg NA
rownames(df) <- NULL # reset index
head(df)
Statistik Deskriptif
desk <- t(describe(df[-1], ranges=F, type=2, check=F, fast=T))
print(desk)
## ^JKSE AKRA ANTM ASII ASSA
## vars 1.000000e+00 2.000000e+00 3.000000000 4.000000000 5.000000e+00
## n 2.340000e+02 2.340000e+02 234.000000000 234.000000000 2.340000e+02
## mean 9.984203e-04 2.027339e-04 0.004314493 0.001517398 3.108284e-03
## sd 1.311948e-02 2.912218e-02 0.036400244 0.021949883 3.420484e-02
## skew -2.108953e+00 1.037754e+00 -0.318932201 -0.240304404 2.614129e-02
## kurtosis 1.251497e+01 1.082986e+01 1.805597678 5.070540024 2.180222e+00
## se 8.576471e-04 1.903776e-03 0.002379558 0.001434909 2.236041e-03
## AUTO BBCA BBNI BBRI BBTN
## vars 6.000000000 7.000000e+00 8.000000e+00 9.000000e+00 1.000000e+01
## n 234.000000000 2.340000e+02 2.340000e+02 2.340000e+02 2.340000e+02
## mean 0.001566564 -8.724315e-04 1.381854e-04 2.707082e-04 1.953577e-03
## sd 0.021433191 1.816760e-02 2.099444e-02 2.084474e-02 2.808556e-02
## skew -0.447846551 -2.152433e-01 6.388640e-01 -2.102410e-01 5.701446e-01
## kurtosis 2.224855586 3.847899e+00 2.843708e+00 3.506763e+00 2.057213e+00
## se 0.001401132 1.187653e-03 1.372449e-03 1.362663e-03 1.836010e-03
## BMRI BTPS CTRA DSNG EMTK
## vars 1.100000e+01 1.200000e+01 1.300000e+01 1.400000e+01 1.500000e+01
## n 2.340000e+02 2.340000e+02 2.340000e+02 2.340000e+02 2.340000e+02
## mean 3.151431e-04 9.768938e-04 -2.688625e-04 1.686556e-03 1.979849e-03
## sd 2.187774e-02 2.711974e-02 2.343298e-02 3.472867e-02 4.675986e-02
## skew -1.832154e-01 1.066099e+00 2.694265e-01 2.487998e-01 5.183018e-01
## kurtosis 3.650399e+00 5.686820e+00 1.596769e+00 2.197319e+00 3.425022e+00
## se 1.430193e-03 1.772873e-03 1.531862e-03 2.270284e-03 3.056788e-03
## ICBP INCO INDF INTP JPFA
## vars 16.000000000 1.700000e+01 1.800000e+01 19.000000000 2.000000e+01
## n 234.000000000 2.340000e+02 2.340000e+02 234.000000000 2.340000e+02
## mean -0.001273415 4.282701e-03 -5.582059e-04 0.001312934 7.008674e-04
## sd 0.017507830 3.960984e-02 1.883011e-02 0.027250303 3.056837e-02
## skew 0.252900900 1.285937e-01 4.657584e-02 -0.133592303 -1.072648e-02
## kurtosis 1.274201105 1.503917e+00 1.404684e+00 3.474349656 9.121626e-01
## se 0.001144523 2.589376e-03 1.230963e-03 0.001781408 1.998317e-03
## JSMR KLBF PWON SMGR SMSM
## vars 2.100000e+01 2.200000e+01 2.300000e+01 2.400000e+01 2.500000e+01
## n 2.340000e+02 2.340000e+02 2.340000e+02 2.340000e+02 2.340000e+02
## mean -1.153443e-05 -3.867451e-05 -1.604185e-04 9.462935e-04 2.532295e-04
## sd 2.001331e-02 2.725989e-02 2.072778e-02 3.381498e-02 1.361804e-02
## skew 1.059728e+00 3.460853e-01 3.888836e-01 6.787827e-01 -1.995876e-01
## kurtosis 7.557972e+00 4.361178e-01 3.273123e+00 5.121982e+00 1.432366e+00
## se 1.308311e-03 1.782035e-03 1.355018e-03 2.210554e-03 8.902391e-04
## SSMS UNTR UNVR
## vars 2.600000e+01 27.000000000 2.800000e+01
## n 2.340000e+02 234.000000000 2.340000e+02
## mean -1.075152e-04 0.001039446 3.202211e-03
## sd 3.128951e-02 0.025762395 3.239969e-02
## skew 1.335266e-01 -1.864799242 1.113668e+00
## kurtosis 3.984823e+00 12.665328121 3.128696e+00
## se 2.045459e-03 0.001684140 2.118034e-03