Ujian Tengah Semester

Pemodelan dan Teori Risiko

Valensius Jimy

March 21, 2024

Kontak \(\downarrow\)
Email
Instagram https://www.instagram.com/valjimy_/
RPubs https://rpubs.com/valensiusjimy/

1 Pendahuluan

  Setelah melaksanakan 7 pertemuan dalam mata kuliah Pemodelan dan Teori Risiko, kemudian pada pertemuan ke-8 dilaksanakan Ujian Tengah Semester atau UTS sebagai tolak ukur proses pembelajaran mahasiswa Statistika angkatan 2021. Ucapan terima kasih dihaturkan kepada dosen pengajar dalam mata kuliah ini sekaligus ketua program studi Statistika Universitas Matana, yaitu bapak Bakti Siregar, S.Si., M.Sc. Pada bagian selanjutnya merupakan pelaporan tugas untuk memenuhi penilaian UTS, harapannya lewat tugas ini bukan hanya mendapatkan nilai terbaik oleh penulis, tetapi dapat menjadi manfaat bagi pembaca.


  Dalam mata kuliah ini berkaitan erat dengan proses analisis risiko dan bagaimana cara mitigasi risiko tersebut karena khususnya dalam aspek kehidupan terdapat sifat yang kompleks, misalnya dalam aspek ekonomi pemahaman tentang risiko menjadi sangat penting bagi para investor dan perusahaan. Risiko dapat memiliki dampak yang signifikan terhadap keputusan investasi, perencanaan keuangan, dan pengelolaan portofolio. Oleh karena itu, pemodelan dan teori risiko menjadi topik yang sangat relevan dalam konteks analisis keuangan.


  Pemodelan risiko memungkinkan kita untuk mengidentifikasi, mengukur, dan mengelola risiko dengan lebih efektif. Salah satu pendekatan yang umum digunakan dalam pemodelan risiko adalah analisis diversifikasi, yang bertujuan untuk mengurangi risiko portofolio dengan menggabungkan aset yang berbeda. Selain itu, optimisasi portofolio adalah proses yang penting dalam mencari kombinasi optimal dari aset-aset yang tersedia dengan tujuan memaksimalkan return yang diharapkan untuk tingkat risiko tertentu.


  Dalam konteks asuransi, risiko juga merupakan hal yang signifikan. Asuransi memberikan perlindungan finansial dari risiko yang tidak diinginkan, dan premi asuransi adalah biaya yang harus dibayar oleh pemegang polis untuk mendapatkan perlindungan tersebut. Oleh karena itu, pemahaman tentang klaim premi asuransi dan cara mengelolanya menjadi kunci dalam industri asuransi.


  Dalam tugas ini akan mengeksplorasi dua kasus yang berhubungan dengan analisis risiko, diversifikasi, dan optimisasi portofolio saham, serta klaim premi asuransi. Kami akan menggunakan pemrograman R untuk menganalisis data, menghitung metrik risiko, dan mengoptimalkan portofolio saham dengan mempertimbangkan berbagai faktor risiko. Harapannya adalah lewat hasil laporan tugas ini akan memberikan manfaat bagi penulis dan juga pembaca untuk menentukan langkah kedepannya dan menjadikan bahan referensi dalam berinvestasi dan berhubungan dengan asuransi. Selamat Menikmati!

2 Kasus Pertama

  Investasi dalam pasar saham adalah keputusan penting yang dihadapi oleh para investor. Salah satu strategi umum yang digunakan dalam membangun portofolio investasi adalah diversifikasi, yaitu dengan menggabungkan berbagai saham dari sektor-sektor yang berbeda. Diversifikasi bertujuan untuk mengurangi risiko portofolio dengan membagi investasi di antara aset-aset yang memiliki korelasi rendah atau negatif.


  Tujuan utama dari analisis ini adalah untuk mengkaji manfaat diversifikasi dalam mengurangi risiko portofolio. Dengan menggabungkan saham-saham dari sektor-sektor yang berbeda, kita dapat melihat bagaimana perubahan harga pada satu saham dapat dipengaruhi oleh perubahan pada saham lainnya. Analisis ini akan membantu investor untuk memahami apakah portofolio mereka terlalu terpapar terhadap risiko dari satu sektor tertentu atau tidak, serta sejauh mana diversifikasi dapat mengurangi risiko secara keseluruhan.

2.1 Memanggil Library

  Langkah awal dalam kasus pertama ini adalah menentukan dan memanggil library atau paket yang disediakan oleh Rstudio untuk digunakan sebagai penyelesaian kasus. Adapun untuk paket yang digunakan adalah sebagai berikut:

pacman::p_load(tidyverse,
               tidyquant,
               tidyr,
               DT,
               timetk,
               forcats,
               plotly,
               hrbrthemes,
               corrplot,
               tint,
               tufte,
               prettydoc,
               rmdformats,
               ggplot2,
               tseries,
               plotly)

2.2 Mengunduh Data Saham

  Selanjutnya adalah mengunduh data 5 saham Indonesia dari 5 sektor berbeda menggunakan paket quantmod, dimana pada kesempatan kali ini saya akan mengambil data yang dimulai pada 1 Januari 2021 hingga 20 Maret 2024. Berikut adalah langkahnya:

saham <- c("TLKM.JK", "BBCA.JK", "UNVR.JK", "PGAS.JK", "SIDO.JK")

getSymbols(saham, src = "yahoo", from = "2021-01-01", to = Sys.Date())
## [1] "TLKM.JK" "BBCA.JK" "UNVR.JK" "PGAS.JK" "SIDO.JK"

Catatan:
* Saham TLKM atau PT. Telkom Indonesia adalah saham yang bergerak di sektor Infrastruktur.
* Saham BBCA atau PT. Bank Central Asia Tbk adalah saham yang bergerak di sektor Keuangan.
* Saham UNVR atau Unilever Indonesia Tbk adalah saham yang bergerak di sektor Barang Konsumen Primer.
* Saham PGAS atau Perusahaan Gas Negara Tbk adalah saham yang bergerak di sektor Energi, Industri: Minyak dan Gas.
* Saham SIDO atau PT Industri Jamu dan Farmasi Sido Tbk adalah saham yang bergerak di sektor Kesehatan.

2.3 Return Saham

  Kemudian, dilakukan proses mendefinisikan fungsi calculate_returns() untuk menentukan besaran return atau keuntungan yang diterima dari 5 saham sebelumnya. Nilai return ini didapatkan berdasarkan harga penutupan di bursa saham, berikut adalah langkahnya:

calculate_returns <- function(saham) {
  returns <- dailyReturn(Ad(saham))
  colnames(returns) <- "Returns"
  returns <- na.omit(returns)
  return(returns)
}

return <- lapply(saham, function(stock) calculate_returns(get(stock)))

  Proses di atas adalah implementasi dari fungsi calculate_returns() yang telah didefinisikan sebelumnya. Fungsi ini menerima data harga saham sebagai input dan menghasilkan return harian dari harga penutupan saham.

2.4 Membuat DataFrame Nilai Return

  Setelah menghitung nilai return dari masing-masing saham yang ada, selanjutnya nilai return tersebut akan ditampilkan dalam bentuk dataframe seperti berikut:

return_saham <- do.call(cbind, return)

colnames(return_saham) <- saham

return_saham
##                 TLKM.JK      BBCA.JK      UNVR.JK      PGAS.JK      SIDO.JK
## 2021-01-04  0.000000000  0.000000000  0.000000000  0.000000000  0.000000000
## 2021-01-05 -0.005730633  0.037307956 -0.013377852  0.038961038  0.018867933
## 2021-01-06 -0.028818553 -0.020451328 -0.023728899 -0.024999939 -0.012345597
## 2021-01-07  0.005934774  0.002879626  0.000000000  0.006410194 -0.006250091
## 2021-01-08  0.053097436  0.012203922 -0.003472203  0.044586017 -0.012578533
## 2021-01-11  0.008403207  0.041844044  0.003484301 -0.009146385 -0.012738768
## 2021-01-12 -0.024999929 -0.025187273 -0.013888737 -0.009230814  0.000000000
## 2021-01-13 -0.008547010 -0.005586459 -0.010563548  0.003105605  0.000000000
## 2021-01-14  0.005747101 -0.014045045 -0.003558623  0.120743081 -0.012903412
## 2021-01-15 -0.005714260 -0.009259224 -0.007142817 -0.019337029 -0.026143618
##        ...                                                                 
## 2024-03-05 -0.017766497  0.005128205  0.000000000  0.000000000  0.000000000
## 2024-03-06  0.007751938  0.015306122  0.007490637 -0.004464286 -0.016129032
## 2024-03-07  0.000000000  0.017587940  0.014869888  0.000000000  0.016393443
## 2024-03-08 -0.010256410  0.002469136 -0.025641026  0.017937220  0.008064516
## 2024-03-13  0.010362694 -0.014778325  0.022556391  0.026431718 -0.008000000
## 2024-03-14  0.015384615  0.032500000 -0.011029412  0.025751073 -0.008064516
## 2024-03-15  0.002525253 -0.016949153 -0.018587361  0.033472803 -0.016260163
## 2024-03-18 -0.012594458  0.000000000  0.049242424  0.004048583 -0.008264463
## 2024-03-19  0.005102041  0.002463054 -0.010830325  0.032258065  0.008333333
## 2024-03-20 -0.002538071 -0.004914005  0.007299270  0.003906250  0.041322314

  Berdasarkan hasil di atas, diketahui nilai return harian untuk setiap saham yang ingin dianalisis pada kesempatan kali ini dan diketahui bahwa UNVR mengalami mines pada periode terakhirnya. Kemudian, nilai rata-rata return dari setiap saham adalah berikut ini:

mean_ret <- colMeans(return_saham)

mean_ret
##       TLKM.JK       BBCA.JK       UNVR.JK       PGAS.JK       SIDO.JK 
##  4.319757e-04  6.669813e-04 -9.356402e-04  2.312873e-04  3.602163e-05

2.5 Nilai dan Visualisasi Matriks Korelasi Berdasarkan Return Saham

  Pada proses ini, dilakukan perhitungan matriks korelasi dari return menggunakan fungsi cor(). Fungsi ini akan menghasilkan matriks korelasi yang menunjukkan seberapa erat hubungan antara return saham-saham dalam portofolio.


  Dimana, korelasi merupakan suatu ukuran statistik yang mengukur sejauh mana dua variabel bergerak bersama-sama. Dalam konteks ini, korelasi antara return saham-saham menggambarkan sejauh mana perubahan harga saham-saham tersebut bergerak bersama-sama. Korelasi yang tinggi antara dua saham menunjukkan bahwa perubahan harga keduanya cenderung bergerak ke arah yang sama, sedangkan korelasi yang rendah menunjukkan bahwa perubahan harga keduanya cenderung bergerak secara independen.


  Matriks korelasi ini sangat penting dalam analisis diversifikasi karena membantu investor memahami sejauh mana portofolio mereka telah terdiversifikasi. Dengan memperhatikan korelasi antara return saham-saham, investor dapat mengidentifikasi apakah portofolio mereka terlalu terpapar pada risiko dari satu sektor tertentu atau tidak, serta mengukur seberapa efektif diversifikasi mereka dalam mengurangi risiko secara keseluruhan.

korelasi <- cor(return_saham)

korelasi
##            TLKM.JK    BBCA.JK    UNVR.JK    PGAS.JK    SIDO.JK
## TLKM.JK 1.00000000 0.26218459 0.05626705 0.11769905 0.04052578
## BBCA.JK 0.26218459 1.00000000 0.14031663 0.14637843 0.02869236
## UNVR.JK 0.05626705 0.14031663 1.00000000 0.09366931 0.07133272
## PGAS.JK 0.11769905 0.14637843 0.09366931 1.00000000 0.08106708
## SIDO.JK 0.04052578 0.02869236 0.07133272 0.08106708 1.00000000

  Matriks korelasi di atas menunjukkan hubungan antara return harian dari lima saham dalam portofolio. Sebagai contoh, korelasi antara return saham TLKM.JK dan BBCA.JK adalah sekitar 0.26, menunjukkan adanya hubungan positif yang lemah antara kedua saham tersebut. Hal serupa juga terjadi pada saham TLKM.JK dan PGAS.JK, serta TLKM.JK dan UNVR.JK, dengan korelasi masing-masing sekitar 0.12 dan 0.06, menunjukkan hubungan positif yang lemah antara keduanya. Namun, korelasi antara TLKM.JK dan SIDO.JK hanya sekitar 0.04, menunjukkan hubungan yang sangat lemah antara kedua saham tersebut. Informasi tentang korelasi antara return saham-saham dalam portofolio memberikan gambaran tentang seberapa terdiversifikasi portofolio tersebut. Semakin rendah korelasi antara return saham-saham, semakin efektif diversifikasi dalam mengurangi risiko portofolio secara keseluruhan. Oleh karena itu, pemahaman terhadap matriks korelasi ini penting bagi investor dalam membuat keputusan investasi yang lebih cerdas dan efisien.


  Berdasarkan hasil di atas, mungkin akan membuat orang awam sangat sulit memahami dan membaca hasil tersebut. Oleh karena itu lebih mudah dan menarik, jikalau divisualisasikan dalam bentuk yang lebih menarik agar mudah dipahami. Berikut adalah langkah dalam menyajikan visualisasi yang menggunakan corrplot() dari nilai korelasi return saham tersebut:

col <- colorRampPalette(c("white", "black"))(10)
col <- colorRampPalette(c("#16FFCE", "#0726F4"))(100)

corrplot(korelasi, method = "color", col = col, col.text = "black", cl.cex = 0.8)
## Warning in text.default(pos.xlabel[, 1], pos.xlabel[, 2], newcolnames, srt =
## tl.srt, : "col.text" is not a graphical parameter
## Warning in text.default(pos.ylabel[, 1], pos.ylabel[, 2], newrownames, col =
## tl.col, : "col.text" is not a graphical parameter
## Warning in title(title, ...): "col.text" is not a graphical parameter

  Berdasarkan hasil visualisasi menggunakan corrplot() di atas didapatkan kesimpulan bahwa semakin gelap warna kotaknya, maka korelasi antara saham semakin kuat atau tinggi. Namun, menurut saya visualisasi ini kurang menarik, sehingga saya membuat tambahan heatmap dari paket plotly seperti berikut:

heatmap_plot <- plot_ly(z = korelasi,
                        colorscale = "YlGnBu",
                        type = "heatmap",
                        colorbar = list(title = "Nilai Korelasi"),
                        hoverinfo = "z",
                        x = colnames(korelasi),
                        y = colnames(korelasi)) %>%
               layout(title = "Heatmap Korelasi Saham")

heatmap_plot

  Hasilnya lebih menarik dan interaktif, selain itu untuk pembaca juga dapat langsung mengetahui nilai korelasi dari setiap hubungan antar saham. Pada visualisasi tersebut, untuk menentukan korelasi yang tinggi dapat dilihat dari warnanya yang semakin terang.

2.6 Perhitungan Return Portofolio dan Standar Deviasi

  Proses ini merupakan perhitungan return dan standar deviasi portofolio berdasarkan bobot yang sama untuk setiap saham. Bobot yang sama berarti bahwa setiap saham memiliki kontribusi yang sama terhadap nilai total portofolio.


  Langkah ini dilakukan untuk mengukur kinerja portofolio dan tingkat risiko yang terkait dengan portofolio tersebut. Dengan menghitung return portofolio, kita dapat mengetahui seberapa baik portofolio tersebut berperforma dalam mencapai return yang diharapkan. Sedangkan dengan menghitung standar deviasi portofolio, kita dapat mengukur tingkat volatilitas atau risiko portofolio. Standar deviasi yang lebih rendah menunjukkan bahwa portofolio memiliki risiko yang lebih rendah.

# Menentukan Matriks Kovariansi

covariance_mat <- cov(return_saham) * 252 # Nilai 252 dari total hari kerja di bursa Saham
covariance_mat
##             TLKM.JK     BBCA.JK     UNVR.JK     PGAS.JK     SIDO.JK
## TLKM.JK 0.060470448 0.013597690 0.004519945 0.010052114 0.002700737
## BBCA.JK 0.013597690 0.044480816 0.009667250 0.010722013 0.001639955
## UNVR.JK 0.004519945 0.009667250 0.106712395 0.010627169 0.006315032
## PGAS.JK 0.010052114 0.010722013 0.010627169 0.120621781 0.007630215
## SIDO.JK 0.002700737 0.001639955 0.006315032 0.007630215 0.073444403

  Nilai 240 hari saya ambil berdasarkan laman dari Bursa Efek Indonesia yang mengumumkan bahwa total hari aktif dalam perdagangan saham di Indonesia sebanyak 252 hari. Selanjutnya, dilakukan proses perhitungan untuk besaran pengembalian yang didapat dan besaran risiko dari portofolio yang ada.

set.seed(123)
wts <- runif(n = length(saham))
wts <- wts/sum(wts)

port_returns <- (sum(wts * mean_ret) + 1)^252 - 1
port_risk <- sqrt(t(wts) %*% (covariance_mat %*% wts))

diver_ratio <- port_returns/port_risk
port_returns
## [1] 0.03924944
port_risk
##           [,1]
## [1,] 0.1576703
diver_ratio
##           [,1]
## [1,] 0.2489336

  Berdasarkan hasil di atas dapat diketahui bahwa nilai return yang didapatkan dari seluruh saham yang dimiliki adalah sebesar 0.03924944, besaran return tersebut menurut saya sangatlah kecil jika berinvestasi mulai dari tahun 2021 hingga saat ini, bahkan diketahui nilai risiko lebih tinggi dibandingkan nilai besaran returnnya, yaitu sebesar 0.1576703 dan berdasarkan hasil tersebut juga diketahui bahwa secara keseluruhan kinerja dari portofolio ini dinilai sebesar 0.2489336 atau 24%.

2.7 Bobot Portofolio

  Pada tahap ini, saya akan membuat fungsi objektif untuk menentukan portofolio untuk memastikan lebih detail sejauh mana investasi ini dikatakan signifikan. Langkahnya seperti berikut:

num_port <- 5000


all_wts <- matrix(nrow = num_port, 
                  ncol = length(saham))
                  
port_returns <- vector('numeric', length = num_port)
port_risk <- vector('numeric', length = num_port)
sharpe_ratio <- vector('numeric', length = num_port)

for (i in seq_along(port_returns)) {
  
  wts <- runif(length(saham))
  wts <- wts/sum(wts)
  
  
  all_wts[i,] <- wts
  
 
  port_ret <- sum(wts * mean_ret)
  port_ret <- ((port_ret + 1)^252) - 1
  port_returns[i] <- port_ret
  
  port_sd <- sqrt(t(wts) %*% (covariance_mat  %*% wts))
  port_risk[i] <- port_sd
  
  sr <- port_ret/port_sd
  sharpe_ratio[i] <- sr
}
portfolio_values <- tibble(Return = port_returns,
                           Risk = port_risk,
                           SharpeRatio = sharpe_ratio)

all_wts <- tk_tbl(all_wts)
## Warning in tk_tbl.data.frame(as.data.frame(data), preserve_index, rename_index,
## : Warning: No index to preserve. Object otherwise converted to tibble
## successfully.
colnames(all_wts) <- colnames(return_saham)

portfolio_values <- tk_tbl(cbind(all_wts, portfolio_values))
## Warning in tk_tbl.data.frame(cbind(all_wts, portfolio_values)): Warning: No
## index to preserve. Object otherwise converted to tibble successfully.
datatable(portfolio_values)

2.8 Portofolio Optimal

min_var <- portfolio_values[which.min(portfolio_values$Risk),]

p <- min_var %>%
  gather(TLKM.JK:SIDO.JK, key = Asset,
         value = Weights) %>%
  mutate(Asset = as.factor(Asset)) %>%
  ggplot(aes(x = fct_reorder(Asset,Weights), y = Weights, fill = Asset)) +
  geom_bar(stat = 'identity') +
  theme_minimal() +
  labs(x = 'Aset', 
       y = 'Bobot', 
       title = "Bobot Portofolio dengan Variansi Minimum") +
  scale_y_continuous(labels = scales::percent) +
  theme(legend.position="none")

ggplotly(p)

  Berdasarkan hasil plot tersebut diketahui bahwa mayoritas portofolio diinvestasikan pada saham BBCA dan SIDO.

2.9 Visualisasi

max_sr <- portfolio_values[which.max(portfolio_values$SharpeRatio),]

p <- max_sr %>%
  gather(TLKM.JK:SIDO.JK, key = Asset,
         value = Weights) %>%
  mutate(Asset = as.factor(Asset)) %>%
  ggplot(aes(x = fct_reorder(Asset,Weights), y = Weights, fill = Asset)) +
  geom_bar(stat = 'identity') +
  theme_minimal() +
  labs(x = 'Aset', 
       y = 'Bobot', 
       title = "Bobot Portofolio Tangensi (Maksimum Sharpe Ratio)") +
  scale_y_continuous(labels = scales::percent)+
  theme(legend.position="none")

ggplotly(p)

  Terlihat bahwa untuk masing-masing saham, ternyata BBCA yang memiliki sharpe ratio tertinggi.

p <- portfolio_values %>%
  ggplot(aes(x = Risk, y = Return, color = SharpeRatio)) +
  geom_point() +
  theme_classic() +
  scale_y_continuous(labels = scales::percent) +
  scale_x_continuous(labels = scales::percent) +
  labs(x = 'Risiko Tahunan',
       y = 'Pengembalian Tahunan',
       title = "Optimasi Portofolio & Perbatasan yang Efisien") +
  geom_point(aes(x = Risk, y = Return), data = min_var, color = 'red') +
  geom_point(aes(x = Risk, y = Return), data = max_sr, color = 'red') +
  annotate('text', x = 0.31, y = 0.31, label = "Portofolio Tangensi") +
  annotate('text', x = 0.24, y = 0.11, label = "Portofolio Varians minimum") +
  annotate(geom = 'segment', x = 0.3023, xend = 0.3023,  y = 0.23, 
           yend = 0.29, color = 'red', arrow = arrow(type = "open")) +
  annotate(geom = 'segment', x = 0.25, xend = 0.25,  y = 0.015, 
           yend = 0.10, color = 'red', arrow = arrow(type = "open"))
  
ggplotly(p)

2.10 Nilai Harapan Return dan Voltalitas

optimal_weights <- as.vector(portfolio_values[which.max(portfolio_values$SharpeRatio), 1:length(saham)])

mean_ret <- as.numeric(mean_ret)
optimal_weights <- as.numeric(optimal_weights)

expected_return_optimal <- sum(optimal_weights * mean_ret)
volatility_optimal <- sqrt(t(optimal_weights) %*% covariance_mat %*% optimal_weights)
expected_return_optimal
## [1] 0.0005559059
volatility_optimal
##           [,1]
## [1,] 0.1718606

  Berdasarkan hasil tersebut diketahui bahwa nilai harapan untuk return yang diterima sangatlah kecil, yaitu hanya sebesar 0.0005559058 dan hal ini terjadi karena memang harga dari saham tersebut mengalami penurunan. Kemudian, untuk risiko sangatlah besar, yaitu 0.1718605 dan berdasarkan hasil tersebut dapat disimpulkan bahwa risiko menginvestasikan ke saham-saham tersebut sangatlah tinggi risiko.

3 Kasus Kedua

  Sebagai seorang Aktuaris di sebuah Perusahaan Asuransi, pemahaman mendalam tentang risiko yang terkait dengan portofolio asuransi sangat penting. Dalam kasus ini, tujuan utama adalah untuk menganalisis risiko asuransi dengan membuat simulasi data klaim dan premi untuk sekelompok kebijakan asuransi.


  Dalam industri asuransi, risiko diukur dengan berbagai metrik, termasuk loss ratio. Loss ratio adalah perbandingan antara total klaim yang diajukan oleh nasabah dengan total premi yang diterima oleh perusahaan. Rasio ini memberikan gambaran tentang seberapa besar perusahaan harus membayar klaim dibandingkan dengan jumlah premi yang diterima, sehingga memberikan petunjuk tentang profitabilitas portofolio asuransi.


Dalam konteks ini, langkah-langkah yang dilakukan adalah:


  • Simulasi Data: Membuat data simulasi untuk premi dan klaim asuransi. Ini dilakukan dengan menggunakan distribusi acak untuk mencerminkan variasi dalam premi dan klaim yang mungkin terjadi.


  • Analisis Frekuensi dan Jumlah Klaim: Dalam model ini, kita memperkirakan frekuensi dan jumlah klaim untuk setiap kebijakan asuransi. Ini membantu dalam memahami pola klaim dan seberapa sering klaim dapat diajukan.


*Perhitungan Loss Ratio: Loss ratio dihitung sebagai indikator utama dalam menilai risiko asuransi. Rasio ini memberikan pemahaman tentang seberapa besar klaim yang dibayarkan oleh perusahaan dibandingkan dengan premi yang diterima. Semakin tinggi rasio ini, semakin besar risiko yang terkait dengan portofolio asuransi.


  • Analisis dan Visualisasi: Data loss ratio dianalisis dan divisualisasikan menggunakan histogram untuk memahami distribusi risiko di antara kebijakan asuransi.

3.1 Mempersiapkan Data

  Pada bagian awal kali ini, saya akan mempersiapkan data untuk 10000 kebijakan selama 15 tahun yang kemudian juga membuat data random untuk jumlah klaim dati setiap tahun dengan mean = 5005, sd = 2005. Selanjutnya, digunakan distribusi poisson untuk menentukan frekuensi klaim dengan nilai lambda atau rata-rata sebesar 0.1

set.seed(123)

policies <- 10000
years <- 15

lambda <- 0.1

claims_data <- data.frame(
  PolicyID = integer(),
  Year = integer(),
  Claims = numeric(),
  ClaimAmount = numeric()
)

for (policy_id in 1:policies) {
  for (year in 1:years) {
    num_claims <- rpois(1, lambda)
    
    if (num_claims > 0) {
    claim_amounts <- rnorm(num_claims, 5005, 2005)
    
    claims_data <- rbind(claims_data, data.frame(
      PolicyID = rep(policy_id, num_claims),
      Year = rep(year, num_claims),
      Claims = num_claims,
      ClaimAmount = claim_amounts
    ))
  }
}
}

head(claims_data)
##   PolicyID Year Claims ClaimAmount
## 1        1    5      1    1617.441
## 2        1    9      1    4769.930
## 3        2    1      1    7459.284
## 4        2    3      1    5808.547
## 5        2    8      1    7601.000
## 6        6    2      1    7497.052

3.2 Menentukan Besaran Premi

  Selanjutnya akan ditentukan besara premi dengan nilai mean = 1005 dan sd = 2005

set.seed(123)
premiums <- abs(rnorm((nrow(claims_data)), mean = 1005, sd = 2005))

claims_data$Premiums = premiums

head(claims_data)
##   PolicyID Year Claims ClaimAmount  Premiums
## 1        1    5      1    1617.441  118.7537
## 2        1    9      1    4769.930  543.4941
## 3        2    1      1    7459.284 4130.2102
## 4        2    3      1    5808.547 1146.3693
## 5        2    8      1    7601.000 1264.2219
## 6        6    2      1    7497.052 4443.7053

  Berdasarkan hasil tersebut telah menjawab bagian pertanyaan untuk a, b, c dan d.

3.3 Menghitung Loss Ratio

  Selanjutnya, menghitung besaran loss ratio yang mana Loss ratio adalah ukuran yang digunakan dalam industri asuransi untuk mengevaluasi kinerja keuangan sebuah perusahaan asuransi. Loss ratio mengukur seberapa besar klaim yang diajukan oleh nasabah dibandingkan dengan premi yang diterima oleh perusahaan asuransi.


  Secara matematis, loss ratio dihitung dengan membagi total jumlah klaim yang diajukan oleh nasabah dengan total premi yang diterima oleh perusahaan. Umumnya, loss ratio dinyatakan dalam bentuk persentase.


  Loss ratio penting karena memberikan gambaran tentang seberapa efisien dan berkelanjutan operasi bisnis perusahaan asuransi. Semakin rendah loss ratio, semakin baik kinerja perusahaan asuransi karena menunjukkan bahwa perusahaan dapat menghasilkan premi yang cukup untuk menutupi klaim nasabahnya. Sebaliknya, loss ratio yang tinggi dapat menandakan adanya risiko keuangan yang besar bagi perusahaan asuransi.


  Dengan memantau loss ratio secara teratur, perusahaan asuransi dapat mengidentifikasi tren dan pola yang mungkin mempengaruhi kinerja keuangan mereka, serta mengambil tindakan yang tepat untuk mengelola risiko dan meningkatkan profitabilitas.

total_claim_amounts <- tapply(claims_data$ClaimAmount, claims_data$PolicyID, sum)

total_premiums <- tapply(claims_data$Premiums, claims_data$PolicyID, sum)

loss_ratios <- total_claim_amounts / total_premiums

# Display the first few loss ratios
ratio = data.frame(loss_ratios)
head(ratio)
##    loss_ratios
## 1     9.644986
## 2     3.190562
## 6     1.687117
## 7     3.178135
## 8     2.598449
## 11    9.887550

  Berdasarkan hasil loss ratio yang beragam antara kebijakan asuransi yang berbeda, dapat disimpulkan bahwa terdapat variasi signifikan dalam kinerja keuangan dan risiko di antara kebijakan tersebut. Loss ratio yang tinggi menunjukkan risiko yang lebih besar atau klaim yang lebih besar dibandingkan dengan premi yang diterima, sementara loss ratio yang rendah menunjukkan bahwa perusahaan menerima premi yang lebih tinggi dibandingkan dengan klaim yang diajukan oleh nasabah. Variasi ini mempengaruhi profitabilitas dan stabilitas keuangan perusahaan asuransi, dan perusahaan perlu memantau loss ratio secara teratur untuk mengidentifikasi tren, mengelola risiko, dan meningkatkan profitabilitasnya.

3.4 Visualisasi

3.4.1 Histogram Sebaran Loss Ratio

ggplot(ratio, aes(x = loss_ratios)) +
  geom_histogram(bins = 100, fill = "skyblue", color = "black") +  
  labs(title = "Distribution of Loss Ratios",
       x = "Loss Ratio",
       y = "Frequency") +
  theme_minimal()

3.4.2 Sebaran Plot

total_claim_amounts <- tapply(claims_data$ClaimAmount, claims_data$PolicyID, sum)

total_premiums <- tapply(claims_data$Premiums, claims_data$PolicyID, sum)

premium_claim_data <- data.frame(TotalClaims = total_claim_amounts,
                                 TotalPremiums = total_premiums)


ggplot(premium_claim_data, aes(x = TotalPremiums, y = TotalClaims)) +
  geom_point(color = "lightgreen") +
  labs(title = "Total Claims vs. Total Premiums",
       x = "Total Premiums",
       y = "Total Claims") +
  theme_minimal()

3.4.3 Box Plot

ggplot(ratio, aes(y = loss_ratios)) +
  geom_boxplot(fill = "skyblue", color = "black") +
  labs(title = "Box Plot of Loss Ratios",
       y = "Loss Ratio") +
  theme_minimal()

3.5 Ringkasan Statistik

mean_loss_ratio <- mean(loss_ratios)
median_loss_ratio <- median(loss_ratios)
p95_loss_ratio <- quantile(loss_ratios, probs = 0.95)
cat("Mean Loss Ratio:", mean_loss_ratio, "\n")
## Mean Loss Ratio: 7.595356
cat("Median Loss Ratio:", median_loss_ratio, "\n")
## Median Loss Ratio: 2.958643
cat("95th Percentile of Loss Ratios:", p95_loss_ratio, "\n")
## 95th Percentile of Loss Ratios: 17.81987

Dari hasil perhitungan statistik pada loss ratios, ditemukan bahwa rata-rata (mean) loss ratio adalah sekitar 7.595, sementara median loss ratio adalah sekitar 2.959. Hal ini menunjukkan adanya kemungkinan adanya pencilan (outliers) yang mempengaruhi rata-rata secara signifikan, sehingga nilai median lebih tepat merepresentasikan “nilai tengah” dari distribusi. Selain itu, nilai persentil ke-95 dari loss ratios adalah sekitar 17.81987 , yang menunjukkan bahwa sebagian kecil dari kebijakan memiliki loss ratio yang sangat tinggi. Informasi ini dapat memberikan wawasan yang berharga bagi perusahaan asuransi dalam mengevaluasi risiko dan mengelola portofolio polis asuransi mereka dengan lebih efektif.