⚠️ Operational Risk Management

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 BukuPaySim
Jumlah kerugian (amount)✅ Kolom amount
Tanggal/waktu kejadian✅ Kolom step (jam → hari)
Label kejadian (fraud/tidak)✅ Kolom isFraud
Jenis transaksi✅ Kolom type
Identitas pelaku/korbannameOrig, nameDest
Jumlah data besar6,3 juta transaksi

📌 Untuk apa dataset ini dipakai?

  1. Transaksi fraud (isFraud=1) → data kerugian internal bank, kolom amount = besarnya kerugian
  2. Dari data ini dihitung frekuensi (berapa kali fraud per tahun) dan severity (distribusi besarnya kerugian)
  3. 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
SumberJenisJumlah
① InternalPaySim (fraud)8.213 event
② Expert8 ahli × 56 kat448 penilaian
③ EksternalKonsorsium DIPO200 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
ModelRumus Utama
ScorecardG = 1 − Σpₖ² → Rating
VaR AktuariaL = Σ Xᵢ → VaR 99,9%
IntegrasiS₁ ∪ exp ∪ S₃/c
BIA15% × 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 in range(100_000):
n = poisson(λ)
L[s] = sum(lognorm(μ, σ, n))
⚙️ Proses Berjalan
ProsesStatus
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!
assert abs(bia - bayes_var) < threshold
📊 Hasil Akhir
OutputNilai
Risiko Tertinggi🔴 Prioritas 1
VaR 99,9%Modal cadangan
BIA vs Bayes✅ Konsisten
7 metode VaR✅ Tervalidasi
LangkahApa yang DilakukanOutput
1. Kumpulkan DataAmbil 3 sumber data (internal, ahli, eksternal)Dataset siap pakai
2. ScorecardAhli menilai 56 kategori risiko → rating & prioritasPeringkat risiko 🟢🟡🔴
3. VaR AktuariaSimulasi Monte Carlo dari data fraud → distribusi kerugianCadangan modal (VaR)
4. VaR IntegrasiGabungkan 3 sumber + bandingkan dengan BIA7 estimasi VaR (Gambar 12.2)
5. KesimpulanBandingkan semua metode → validasi silangEstimasi yang bisa dipercaya
📚 Referensi Buku
Bagian BukuModelHalaman
Bab 12.1 — Kerangka Basel IIDasar semua model225–227
Bab 12.2 — Sumber DataData internal, ahli, eksternal228–231
Bab 12.3 — Model AktuariaVaR Aktuaria (Model 2)231–234
Bab 12.4 — Self-AssessmentScorecard (Model 1) + Integrasi (Model 3)234–240
Bab 12.5 — KesimpulanPerbandingan 7 metrik VaR240–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.

  1. Para ahli menilai tiap risiko dari 3 sisi: frekuensi, severity, dan kontrol.
  2. Penilaian digabung memakai median + indeks Gini (tingkat kesepakatan).
  3. 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.
OrdinalSkala berjenjang (rendah/sedang/tinggi) tanpa jarak pasti antar tingkat.
Indeks GiniUkuran seberapa beragam jawaban para ahli: 0 = semua sama, 1 = sangat beragam.
KonsensusTingkat kesepakatan antar ahli.
Rating huruf (A/AA/AAA)Seperti peringkat kredit. A = paling aman; makin banyak huruf = makin kuat keyakinannya.
Perceived lossPerkiraan 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.

3️⃣ & 4️⃣ Proses Langkah demi Langkah

Dataset Ambil Data Penilaian Ahli
scorecard.py — ambil data
# 8 ahli menilai 56 kategori risiko
business_lines = ["Corporate Finance", "Trading", ...] # 8 BL
event_types = ["Internal Fraud", "External Fraud", ...] # 7 ET
n_experts = 8
categories = 8 * 7 # = 56 kategori Basel II
# Tiap ahli beri nilai ordinal (1-5) untuk 3 dimensi
dims = ["frequency", "severity", "control"]
📊 Contoh Data Penilaian Ahli (mentah)
AhliLini BisnisJenisFreqSevCtrl
1Corporate FinanceInt. Fraud342
2Corporate FinanceInt. Fraud443
3Corporate FinanceInt. Fraud352
8Corporate FinanceInt. Fraud342
Rumus Hitung Median & Indeks Gini
scorecard.py — rumus
def gini_index(votes, K):
# Hitung proporsi tiap kelas
p = [votes.count(k) / len(votes) for k in range(K)]
G = 1 - sum(pk**2 for pk in p)
return G * K / (K - 1) # normalisasi
median_freq = np.median([3,4,3,3,4,3,3,3]) # = 3
gini_freq = gini_index([3,4,3,3,4,3,3,3], 5) # = 0.375
📐 Data Berubah → Median & Gini dihitung
Dimensi8 Votes→ Median→ Gini
Frequency3,4,3,3,4,3,3,330.375
Severity4,4,5,4,3,4,4,440.344
Control2,3,2,2,2,3,2,220.375
Proses Tentukan Rating & Perceived Loss
scorecard.py — proses
for cat in all_56_categories:
# Gini kecil → konsensus kuat → rating AAA
if gini < 0.3: rating = "AAA" # 🟢
elif gini < 0.5: rating = "AA" # 🟡
else: rating = "A" # 🔴
# Perceived Loss = Freq × Sev × Ctrl factor
loss = freq_per_year * sev_value * ctrl_factor
⚙️ Data Berubah → Rating & Loss muncul
KategoriRatingWarnaLoss
Corp.Fin × Int.FraudA🔴480.000
Trading × Ext.FraudAA🟡240.000
Retail × Sys.FailureAAA🟢60.000
56 kategori totalΣ total
Hasil Peringkat Risiko Final
scorecard.py — output
# Urutkan dari yang paling berisiko
ranked = sorted(scorecard, key="priority", reverse=True)
print("🔴 Risiko #1:", ranked[0].name)
print("🟡 Risiko #2:", ranked[1].name)
print("Total perceived loss:", sum(losses))
✅ Hasil Akhir — Peringkat Risiko
#Kategori RisikoLampuAksi
1Paling berbahaya🔴Segera mitigasi
2Risiko menengah🟡Pantau ketat
3Risiko rendah🟢Cukup monitor

5️⃣ Hasil & Kesimpulan

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:

  1. Frekuensi → distribusi Poisson (berapa kali fraud terjadi)
  2. Severity → distribusi Lognormal (berapa besar tiap kerugian)
  3. Simulasi Monte Carlo — komputer mengarang ribuan skenario masa depan
  4. 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 PoissonModel peluang untuk MENGHITUNG JUMLAH kejadian acak yang langka per periode (mis. jumlah klaim per hari).
Distribusi LognormalModel untuk BESARAN yang selalu positif & condong ke kanan: banyak kerugian kecil, sesekali sangat besar.
Monte CarloTeknik 'mengarang' ribuan skenario acak lalu meninjau hasil keseluruhannya.
VaR (Value at Risk)Batas kerugian pada tingkat keyakinan tertentu.
PersentilNilai 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)
NotypeamountisFraud
1TRANSFER181.0001
2CASH_OUT339.6821
3TRANSFER4.205.5331
4CASH_OUT1.325.0121
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
ParameterDistribusiNilai
λ (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 in range(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...
SkenarioN (kejadian)Total Loss (L)
#12412.450.000
#23189.200.000
#32834.100.000
#419245.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
MetrikNilai
Rata-rata kerugianE[L] = dari simulasi
VaR 99,9%= cadangan modal
Keyakinan99,9% aman
Skenario melebihiHanya 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)

  1. Integrasi Bayesian (bottom-up) — menggabungkan 3 sumber data menjadi satu estimasi
  2. Basic Indicator Approach / BIA (top-down) — cadangan = 15% dari pendapatan kotor
🧩 Perumpamaan: Seperti minta second opinion ke beberapa dokter. Kalau semua sepakat, kita jauh lebih yakin.
Sgabungan = Sinternal ∪ {pself-assessment} ∪ Seksternalscaled
BIA = α × Gross Income,   α = 15%
📖 Istilah, Rumus, & Kenapa Dipakai
Daftar Istilah
Integrasi / BayesianMenggabungkan beberapa sumber informasi menjadi satu estimasi yang lebih kuat.
Bottom-up vs Top-downDari data rinci ke atas (Bayesian) vs dari indikator besar ke bawah (BIA).
ScalingMenyetarakan skala data bank lain agar sebanding dengan data kita.
Gross incomePendapatan kotor bank — indikator ukuran bisnis.
BIABasic Indicator Approach (Basel II): cadangan = 15% pendapatan kotor.
Konsorsium / DIPOBasis data kerugian gabungan dari banyak bank.
Rumus yang Dipakai
Sgabungan = Sinternal ∪ {pself-assessment} ∪ Seksternalscaled
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.

3️⃣ Proses Langkah demi Langkah

Dataset Kumpulkan 3 Sumber Data
integration.py — load data
# Sumber 1: Data internal (PaySim fraud)
S_internal = paysim[paysim.isFraud==1]["amount"]
# Sumber 2: Penilaian ahli (expert)
S_expert = expert_assessment["perceived_loss"]
# Sumber 3: Data eksternal (konsorsium bank)
S_external = external_data["loss_amount"]
📂 3 Sumber Data Terkumpul
SumberTipeJumlah
① InternalPaySim fraud records8.213 kejadian
② ExpertSelf-assessment ahli7 kategori
③ EksternalKonsorsium bank lainScaled data
Rumus Scaling & Integrasi Bayesian
integration.py — rumus
# Scaling: samakan skala data eksternal
c = S_external.sum() / S_internal.sum()
S_ext_scaled = S_external / c
# Gabungkan semua sumber (Bayesian)
S_combined = concat([S_internal, S_expert, S_ext_scaled])
# BIA sebagai pembanding
BIA = 0.15 * gross_income
📐 Rumus Diterapkan
VariabelRumusHasil
c (scaling)Σ ext / Σ intfaktor penyesuaian
S_combinedS₁ ∪ S₂ ∪ S₃/cdata gabungan
BIA15% × Gross Incomepembanding top-down
Proses Hitung VaR dengan 7 Metode
integration.py — hitung
methods = {
"Internal_Hist": percentile(S_int, 99.9),
"Bayes_Hist": percentile(S_comb, 99.9),
"Bayes_MonteCar": mc_sim(S_comb),
"Self_Assess": var_expert(S_exp),
"External": percentile(S_ext, 99.9),
"Actuarial": actuarial_var,
"BIA": 0.15 * gross_income,
}
⚙️ 7 Estimasi VaR Terhitung
NoMetodeSumber
1Internal HistoricalInternal saja
2Bayes HistoricalGabungan
3Bayes Monte CarloGabungan
4Self AssessmentExpert
5External VaREksternal
6Actuarial VaRModel 2
7BIATop-down
Hasil Validasi Silang — 7 Metode Dibandingkan
integration.py — validasi
# Bandingkan semua metode (Gambar 12.2)
for name, val in methods.items():
print(f"{name}: Rp {val:,.0f}")
# Apakah BIA ≈ Bayes? → validasi!
ratio = methods["BIA"] / methods["Bayes_Hist"]
print(f"BIA/Bayes ratio: {ratio:.2f} ✅")
✅ Hasil Validasi Silang
CekHasil
7 metode dihitung✅ Selesai
BIA ≈ Bayes VaR?✅ Konsisten
Metode saling dekat?✅ Tervalidasi
Status ModelVALID ✅

Data yang Digunakan (3 sumber)

① Internal (PaySim)
② Expert (ahli)
③ Eksternal (bank lain)

4️⃣ & 5️⃣ Hasil

📊 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


📈 Model 2 & 3 — Perbandingan 7 Metode VaR

📝 Ringkasan per Model

📖 Detail Kesesuaian dengan Buku (11/12 aspek ✅)