Implementasi Bab 12 — Giudici, Applied Data Mining for Business and Industry (2009)
📖 Apa itu Risiko Operasional?
Definisi Basel II: "The risk of loss resulting from inadequate or failed internal processes, people and systems or from external events."
— Giudici (2009), Bab 12.1
Risiko operasional = risiko kerugian akibat proses internal yang gagal, kesalahan manusia, kegagalan sistem, atau kejadian eksternal (termasuk penipuan/fraud).
Contoh nyata: penipuan (fraud), kesalahan input data, sistem IT down, bencana alam, pencurian, pemalsuan dokumen.
💡 Intinya: Semakin tinggi risiko operasional suatu bank, semakin buruk sistem kontrolnya. Mengukur risiko = mengukur seberapa efektif kontrol yang ada (Giudici, 2009, hlm. 227).
🎯 Dua Tujuan Pengukuran (Bab 12.1)
🏛️ Tujuan Prudensial
Menentukan berapa cadangan modal (capital reserve) yang harus disiapkan bank untuk menutup kerugian tak terduga.
→ Model 2 & 3: VaR
📊 Tujuan Manajerial
Membuat peringkat risiko agar manajemen tahu mana yang harus ditangani lebih dulu.
→ Model 1: Scorecard
📥 Tiga Sumber Data (Bab 12.2)
📊 Data Internal
(Bab 12.2, hal. 221)
Buku mensyaratkan tabel riwayat kerugian bank sendiri: jumlah kerugian (amount), tanggal, unit organisasi, lini bisnis & jenis kejadian.
Backward-looking
Di proyek ini: Dataset PaySim (Kaggle) — data bank asli bersifat rahasia.
👥 Penilaian Ahli
(Bab 12.2, hal. 222–224)
Kepala cabang, kepala area, dan manajer menilai frekuensi, severity, dan kontrol tiap risiko dalam skala ordinal. 8 BL × 7 ET = 56 kategori.
Forward-looking
Di proyek ini: Data sintetis mengikuti struktur buku.
🏢 Data Eksternal
(Bab 12.2, hal. 221–222)
Data konsorsium bank (DIPO). Karena gabungan banyak bank, di-scaling agar setara ukuran bank kita.
Perspektif industri
Di proyek ini: Data sintetis dengan proses scaling sesuai buku.
🎯 Mengapa Dataset PaySim?
✅ Kenapa cocok sebagai data internal?
Syarat Buku
PaySim
Jumlah kerugian (amount)
✅ Kolom amount
Tanggal/waktu kejadian
✅ Kolom step (jam → hari)
Label kejadian (fraud/tidak)
✅ Kolom isFraud
Jenis transaksi
✅ Kolom type
Identitas pelaku/korban
✅ nameOrig, nameDest
Jumlah data besar
✅ 6,3 juta transaksi
📌 Untuk apa dataset ini dipakai?
Transaksi fraud (isFraud=1) → data kerugian internal bank, kolom amount = besarnya kerugian
Dari data ini dihitung frekuensi (berapa kali fraud per tahun) dan severity (distribusi besarnya kerugian)
Frekuensi & severity menjadi input utama model VaR Aktuaria dan VaR Integrasi Bayesian
💡 Mengapa bukan data bank asli? — Data kerugian operasional bank bersifat sangat rahasia. PaySim adalah alternatif terbaik karena sintetis tetapi realistis.
🔧 Tiga Model yang Dipakai (Bab 12.3–12.4)
📋 1. Scorecard
Apa: Sistem peringkat risiko berbasis warna 🟢🟡🔴
Untuk apa: Tujuan manajerial — prioritas risiko
Metode: Median + Indeks Gini → Rating huruf
Pendekatan: Bottom-up, kualitatif
📈 2. VaR Aktuaria
Apa: Estimasi cadangan modal dari simulasi
Untuk apa: Tujuan prudensial — cadangan modal
Metode: Poisson × Lognormal → Monte Carlo → VaR 99,9%
Pendekatan: Bottom-up, kuantitatif
🧮 3. VaR Integrasi & BIA
Apa: Gabungan 3 sumber data + pembanding BIA
Untuk apa: Validasi silang (cross-check)
Metode: Integrasi Bayesian + BIA (15% GI)
Pendekatan: Bottom-up + Top-down
🔄 Alur Keseluruhan Proyek (Animasi)
Step 1 Kumpulkan 3 Sumber Data
data_collection.py
# Bab 12.2 — Tiga aliran data
import pandas as pd
internal = pd.read_csv("paysim.csv")
fraud = internal[internal["isFraud"] == 1]
expert = generate_expert_opinions(8, 56)
external= generate_consortium_data()
📊 Data Terkumpul
Sumber
Jenis
Jumlah
① Internal
PaySim (fraud)
8.213 event
② Expert
8 ahli × 56 kat
448 penilaian
③ Eksternal
Konsorsium DIPO
200 kerugian
Step 2 Terapkan 3 Model Rumus
models.py
# Model 1: Scorecard
gini = 1 - sum(p_k**2) # kesepakatan ahli
loss = freq * severity * control
# Model 2: VaR Aktuaria
N ~ Poisson(λ); X ~ Lognormal(μ, σ)
# Model 3: Integrasi + BIA
BIA = 0.15 * gross_income
📐 Rumus yang Diterapkan
Model
Rumus Utama
Scorecard
G = 1 − Σpₖ² → Rating
VaR Aktuaria
L = Σ Xᵢ → VaR 99,9%
Integrasi
S₁ ∪ exp ∪ S₃/c
BIA
15% × Gross Income
Step 3 Proses & Simulasi
process.py
# Scorecard: rating 56 kategori
for cat in categories:
rating[cat] = median(votes[cat])
# Monte Carlo: 100.000 skenario
for s inrange(100_000):
n = poisson(λ)
L[s] = sum(lognorm(μ, σ, n))
⚙️ Proses Berjalan
Proses
Status
Rating 56 kategori
✅ 56/56 selesai
Monte Carlo simulasi
✅ 100K skenario
Integrasi 3 sumber
✅ Digabung
Hitung 7 metode VaR
✅ 7/7 selesai
Step 4 Hasil & Validasi Silang
results.py
# Output akhir
scorecard = traffic_light_ratings 🟢🟡🔴
var_99_9 = percentile(L, 99.9)
bia = 0.15 * gross_income
# Validasi: BIA ≈ Bayes VaR → konsisten!
assertabs(bia - bayes_var) < threshold
📊 Hasil Akhir
Output
Nilai
Risiko Tertinggi
🔴 Prioritas 1
VaR 99,9%
Modal cadangan
BIA vs Bayes
✅ Konsisten
7 metode VaR
✅ Tervalidasi
Langkah
Apa yang Dilakukan
Output
1. Kumpulkan Data
Ambil 3 sumber data (internal, ahli, eksternal)
Dataset siap pakai
2. Scorecard
Ahli menilai 56 kategori risiko → rating & prioritas
Peringkat risiko 🟢🟡🔴
3. VaR Aktuaria
Simulasi Monte Carlo dari data fraud → distribusi kerugian
Cadangan modal (VaR)
4. VaR Integrasi
Gabungkan 3 sumber + bandingkan dengan BIA
7 estimasi VaR (Gambar 12.2)
5. Kesimpulan
Bandingkan semua metode → validasi silang
Estimasi yang bisa dipercaya
📚 Referensi Buku
Bagian Buku
Model
Halaman
Bab 12.1 — Kerangka Basel II
Dasar semua model
225–227
Bab 12.2 — Sumber Data
Data internal, ahli, eksternal
228–231
Bab 12.3 — Model Aktuaria
VaR Aktuaria (Model 2)
231–234
Bab 12.4 — Self-Assessment
Scorecard (Model 1) + Integrasi (Model 3)
234–240
Bab 12.5 — Kesimpulan
Perbandingan 7 metrik VaR
240–241
📂 Data Lengkap — Semua Dataset
Seluruh data yang dipakai proyek, sesuai Bab 12.2 buku Giudici (2009)
📋 Model 1 — Scorecard (Self-Assessment)
Lis Indriani · Giudici (2009) Bab 12.4 · analog Gambar 12.1
📌 Halaman ini menjawab: Dari 56 kategori risiko bank,
mana yang paling berbahaya dan harus ditangani lebih dulu?
Model ini menggunakan pendapat ahli untuk membuat peringkat risiko
dengan sistem warna 🟢🟡🔴.
1️⃣ Rumusan Masalah
Dari banyak jenis risiko operasional yang bisa terjadi di sebuah bank, mana yang paling berbahaya dan harus ditangani lebih dulu?
Sebuah bank menghadapi puluhan jenis risiko. Tidak mungkin menangani semua sekaligus. Kita perlu cara untuk memberi peringkat risiko mana yang paling mendesak.
2️⃣ Metode (dari buku)
Scorecard / Self-Assessment — seperti membuat rapor untuk tiap risiko.
Para ahli menilai tiap risiko dari 3 sisi: frekuensi, severity, dan kontrol.
Penilaian digabung memakai median + indeks Gini (tingkat kesepakatan).
Hasilnya: rating huruf (A = paling aman) + lampu lalu lintas 🟢🟡🔴.
🧩 Perumpamaan: Seperti dokter UGD yang melakukan triase. Pasien paling kritis didahulukan. Scorecard melakukan hal sama untuk risiko.
G = 1 − Σ pk² → Gnorm = G × K/(K−1)
Perceived Loss = frekuensi/tahun × nilai severity × faktor kontrol
📖 Istilah, Rumus, & Kenapa Dipakai
Daftar Istilah
Median (nilai tengah)
Nilai yang persis di tengah setelah data diurutkan. Tahan terhadap nilai ekstrem.
Ordinal
Skala berjenjang (rendah/sedang/tinggi) tanpa jarak pasti antar tingkat.
Indeks Gini
Ukuran seberapa beragam jawaban para ahli: 0 = semua sama, 1 = sangat beragam.
Konsensus
Tingkat kesepakatan antar ahli.
Rating huruf (A/AA/AAA)
Seperti peringkat kredit. A = paling aman; makin banyak huruf = makin kuat keyakinannya.
Perceived loss
Perkiraan kerugian = seberapa sering × seberapa besar × faktor kontrol.
Rumus yang Dipakai
G = 1 − Σ pk² → Gnorm = G × K/(K−1)
Indeks Gini ternormalisasi — mengukur keberagaman jawaban ahli (pk = proporsi ahli yang memilih kelas ke-k, K = jumlah kelas).
Perceived Loss = frekuensi/tahun × nilai severity × faktor kontrol
Skor Prioritas = rfreq × rsev × rctrl
r = peringkat kelas median tiap dimensi (makin tinggi = makin berisiko).
Kenapa Rumus Ini Dipakai?
Median (bukan rata-rata) — penilaian ahli bersifat ordinal, dan median tahan terhadap 1 ahli yang menjawab ekstrem.
Indeks Gini — mengubah seberapa kompak pendapat ahli menjadi angka. Kalau ahli kompak (Gini kecil), kita lebih percaya → rating diperkuat (AAA). Inilah cara buku menilai kualitas konsensus.
Frekuensi × Severity × Kontrol — definisi baku risiko: Risiko = Peluang × Dampak, lalu disesuaikan oleh kualitas kontrol.
Tabel Scorecard (diurutkan: paling atas = paling prioritas)
📊 Grafik 15 Risiko Prioritas Tertinggi
🗺️ Peta Risiko (Heatmap)
💡 Kotak paling merah = area yang harus mendapat perhatian utama.
📈 Model 2 — VaR Aktuaria
Ana Sulistiana Alwi · Giudici (2009) Bab 12.3 · analog Gambar 12.2
📌 Halaman ini menjawab: Berapa cadangan modal minimum yang harus disiapkan bank untuk menutup kerugian fraud? Model ini mensimulasikan ribuan skenario lalu mencari batas kerugian terburuk (VaR 99,9%).
1️⃣ Rumusan Masalah
Seberapa besar total kerugian terburuk yang mungkin kita alami akibat penipuan (fraud), dan berapa "modal cadangan" yang harus disiapkan?
2️⃣ Metode (dari buku)
Model Aktuaria — menggabungkan:
Frekuensi → distribusi Poisson (berapa kali fraud terjadi)
Severity → distribusi Lognormal (berapa besar tiap kerugian)
Simulasi Monte Carlo — komputer mengarang ribuan skenario masa depan
VaR 99,9% = batas kerugian pada tingkat keyakinan sangat tinggi
🧩 Perumpamaan: Seperti perusahaan asuransi menghitung premi. Dengan ribuan simulasi, mereka tahu skenario terburuk. VaR 99,9% = "dana darurat" untuk 999 dari 1.000 kemungkinan.
L = Σi=1N Xi → N ~ Poisson(λ), X ~ Lognormal(μ, σ)
VaRq = persentil ke-q dari distribusi L
📖 Istilah, Rumus, & Kenapa Dipakai
Daftar Istilah
Frekuensi (N)
Berapa kali kejadian terjadi dalam satu periode.
Severity (X)
Besar kerugian setiap kejadian.
Distribusi Poisson
Model peluang untuk MENGHITUNG JUMLAH kejadian acak yang langka per periode (mis. jumlah klaim per hari).
Distribusi Lognormal
Model untuk BESARAN yang selalu positif & condong ke kanan: banyak kerugian kecil, sesekali sangat besar.
Monte Carlo
Teknik 'mengarang' ribuan skenario acak lalu meninjau hasil keseluruhannya.
VaR (Value at Risk)
Batas kerugian pada tingkat keyakinan tertentu.
Persentil
Nilai yang di bawahnya terdapat sekian persen data (P99,9 = 99,9% data di bawahnya).
μ dan σ
Rata-rata & simpangan dari logaritma kerugian (parameter lognormal).
Rumus yang Dipakai
L = Σi=1N Xi
Total kerugian = menjumlahkan N kerugian individual (N pun acak).
N ~ Poisson(λ) X ~ Lognormal(μ, σ)
VaRq = persentil ke-q dari distribusi L xq = eμ + σzq
zq = nilai-z normal baku untuk peluang q.
Kenapa Rumus Ini Dipakai?
Poisson untuk frekuensi — paling cocok menghitung jumlah kejadian langka & acak yang saling bebas per periode (standar di aktuaria/asuransi).
Lognormal untuk severity — kerugian tidak pernah negatif dan punya ekor panjang (sesekali kerugian sangat besar), persis pola data fraud.
Monte Carlo — menjumlahkan N (acak) kerugian (acak) sulit dihitung dengan satu rumus; menyimulasikan ribuan kali memberi gambaran utuh.
VaR 99,9% — regulator Basel mewajibkan modal yang cukup menutup kerugian pada tingkat keyakinan sangat tinggi (hanya 0,1% boleh meleset).
3️⃣ Proses Langkah demi Langkah
Dataset Ambil Data Fraud dari PaySim
actuarial.py — ambil data
import pandas as pd
import numpy as np
df = pd.read_csv("paysim.csv")
fraud = df[df["isFraud"] == 1]
losses = fraud["amount"].values
print(f"Total fraud: {len(fraud)}")
📊 Data Fraud (isFraud = 1)
No
type
amount
isFraud
1
TRANSFER
181.000
1
2
CASH_OUT
339.682
1
3
TRANSFER
4.205.533
1
4
CASH_OUT
1.325.012
1
…
…
…
8.213 total
Rumus Fit Distribusi Poisson & Lognormal
actuarial.py — fit distribusi
# Frekuensi: berapa kali fraud/hari?
lambda_ = fraud_per_day.mean() # → λ ≈ 27.3
# N ~ Poisson(λ=27.3)
# Severity: distribusi besarnya kerugian
log_losses = np.log(losses)
mu = log_losses.mean() # → μ ≈ 13.2
sigma = log_losses.std() # → σ ≈ 1.8
📐 Parameter Terhitung
Parameter
Distribusi
Nilai
λ (lambda)
Poisson — frekuensi
≈ 27,3 fraud/hari
μ (mu)
Lognormal — lokasi
≈ 13,2
σ (sigma)
Lognormal — skala
≈ 1,8
Proses Simulasi Monte Carlo (100.000×)
actuarial.py — simulasi
n_sim = 100_000
total_losses = []
for s inrange(n_sim):
n = np.random.poisson(lambda_) # acak: brp kejadian?
x = np.random.lognormal(mu, sigma, n) # acak: brp besar?
total_losses.append(sum(x)) # L = Σ Xᵢ
⚙️ Simulasi Berjalan...
Skenario
N (kejadian)
Total Loss (L)
#1
24
12.450.000
#2
31
89.200.000
#3
28
34.100.000
#4
19
245.000.000
…
…
100.000 skenario
Hasil Hitung VaR 99,9% → Cadangan Modal
actuarial.py — output
# Ambil persentil ke-99,9
var_999 = np.percentile(total_losses, 99.9)
expected = np.mean(total_losses)
print(f"VaR 99.9%: Rp {var_999:,.0f}")
print("→ Siapkan modal cadangan sebesar ini")
✅ Hasil Akhir
Metrik
Nilai
Rata-rata kerugian
E[L] = dari simulasi
VaR 99,9%
= cadangan modal
Keyakinan
99,9% aman
Skenario melebihi
Hanya 0,1% (100 dari 100K)
4️⃣ & 5️⃣ Hasil
Distribusi Total Kerugian (dari ribuan skenario Monte Carlo)
💡 Sebagian besar skenario ada di kiri (kerugian kecil). Garis merah menandai batas VaR — hanya 0,1% skenario melampaui garis ini.
🧮 Model 3 — VaR Integrasi & BIA
Andi Agung Dwi Arya B · Giudici (2009) Bab 12.4 · analog Gambar 12.2
📌 Halaman ini menjawab: Jika kita gabungkan semua sumber data (internal + ahli + bank lain), berapa estimasi VaR-nya? Dan apakah hasilnya konsisten dengan cara sederhana (BIA = 15% pendapatan)?
1️⃣ Rumusan Masalah
Kalau kerugian dihitung dengan beberapa metode berbeda, berapa hasilnya dan apakah saling konsisten?
Mengandalkan satu metode saja berisiko. Lebih aman bila kita menghitung dengan beberapa cara lalu membandingkannya.
2️⃣ Metode (dari buku)
Integrasi Bayesian (bottom-up) — menggabungkan 3 sumber data menjadi satu estimasi
c = Σ kerugian eksternal / Σ kerugian internal Sscaled = Seksternal / c
Konstanta scaling c menyetarakan ukuran data eksternal terhadap internal.
VaRq = persentil ke-q dari Sgabungan
BIA = α × Gross Income, α = 15%
Kenapa Rumus Ini Dipakai?
Menggabungkan 3 sumber — tiap sumber punya kelemahan: internal (terbatas pengalaman sendiri), expert (subjektif), eksternal (beda konteks). Gabungan lebih lengkap dan tahan.
Scaling — agar kerugian bank besar tidak 'membanjiri' estimasi bank kita; disesuaikan secara proporsional dulu.
BIA (15% gross income) — pembanding sederhana yang diakui regulator. Kalau metode canggih (Bayesian) hasilnya dekat dengan BIA, itu memberi keyakinan silang bahwa angkanya masuk akal.
📊 Perbandingan VaR antar-metode (analog Gambar 12.2 di buku)
💡 Jika batang-batang berdekatan, berarti metode-metode saling sepakat → hasil lebih dapat dipercaya.
📊 Ringkasan Eksekutif
Semua hasil dari 3 model dalam satu halaman — siap untuk presentasi
🎯 Angka Kunci
💡 Temuan Utama: Ketiga pendekatan (bottom-up via aktuaria, gabungan Bayesian, dan top-down BIA) menghasilkan estimasi yang saling berdekatan — menunjukkan bahwa model ini saling memvalidasi, sesuai Gambar 12.2 di buku Giudici.
📋 Model 1 — Hasil Scorecard
🗺️ Peta Risiko — Perceived Loss per Kategori Basel II