| NAME ↕ | SECTOR ↕ | COUNTRY ↕ | INSTRUMENT | RATING ↕ | PD ↕ | LGD ↕ | EAD ↕ | IRB RW% | IRB RWA ↕ | SA RW (BCBS) | SA RW (INDIA) |
|---|
Project Overview
This platform simulates an institutional credit risk portfolio and computes Basel III/IV capital requirements using a production-grade open-source library — creditriskengine. It was built to demonstrate end-to-end credit risk analytics: from raw trade inputs through EAD calculation, IRB risk weights, stress testing, and multi-jurisdiction SA comparison.
The project bridges finance domain expertise with Python-based quantitative implementation — showing how a risk professional with Basel/ICAAP background can leverage code to build analytical tools that would otherwise require expensive vendor platforms.
Methodology
Portfolio Construction
Multi-asset portfolio with Sovereigns, Banks, Corporates, SMEs, Mortgages, Retail pools, and Derivatives — reflecting a realistic institutional book.
EAD Calculation
For loans: EAD = Drawn + CCF × Undrawn. For derivatives: EAD = max(MTM, 0) + Notional × Add-on%. CCFs sourced from Basel supervisory tables.
IRB Risk Weights
Basel III IRB formula (CRE31.4–31.10): K = LGD × [N(G(PD)/√(1-R) + √(R/(1-R)) × G(0.999)) − PD], RW = K × 12.5 × MA. Asset correlations differ by class.
Stress Testing (ICAAP)
PD shocks applied: Baseline (1×), Adverse (1.5×), Severely Adverse (2.5×). Capital impact measured at 8% of RWA, reflecting Pillar 1 minimum.
Jurisdiction Comparison (SA)
Same portfolio run through BCBS, EU CRR3, UK PRA, and RBI frameworks. Key divergences include RBI's flat LTV-based mortgage RWs and EU SME supporting factor.
Tech Stack
Built entirely in Python using open-source libraries, with a vanilla JS frontend consuming JSON output.
Outputs
ICAAP_Dashboard.xlsx
4-sheet Excel: Portfolio Detail · IRB Stress Test · Jurisdiction Comparison · Summary
portfolio.json
Full exposure dataset with all computed fields — feeds this dashboard
index.html
This interactive dashboard — 4 pages, scenario controls, drill-down tables