# Regulatory Mapping

This document maps CreditRiskEngine modules and functions to their
authoritative regulatory sources.

## Basel III / BCBS d424

| BCBS Reference | Topic | Module | Function(s) |
|---|---|---|---|
| CRE20.4-20.7 | Sovereign SA RW | `rwa/standardized/credit_risk_sa.py` | `get_sovereign_risk_weight()` |
| CRE20.15-20.18 | Bank ECRA RW | `rwa/standardized/credit_risk_sa.py` | `get_bank_risk_weight()` |
| CRE20.28-20.32 | Corporate SA RW | `rwa/standardized/credit_risk_sa.py` | `get_corporate_risk_weight()` |
| CRE20.54-20.62 | Retail SA RW | `rwa/standardized/credit_risk_sa.py` | `get_retail_risk_weight()` |
| CRE20.71-20.86 | RRE SA RW (LTV) | `rwa/standardized/credit_risk_sa.py` | `get_residential_re_risk_weight()` |
| CRE20.87-20.95 | CRE SA RW (LTV) | `rwa/standardized/credit_risk_sa.py` | `get_commercial_re_risk_weight()` |
| CRE31.4 | IRB capital K | `rwa/irb/formulas.py` | `irb_capital_requirement()` |
| CRE31.5 | Corporate/Sov/Bank ρ | `rwa/irb/formulas.py` | `correlation_corporate_sovereign_bank()` |
| CRE31.6 | SME firm-size adj | `rwa/irb/formulas.py` | `correlation_corporate_sovereign_bank()` |
| CRE31.7 | Maturity adjustment | `rwa/irb/formulas.py` | `maturity_adjustment()` |
| CRE31.8 | Residential mortgage ρ | `rwa/irb/formulas.py` | `correlation_residential_mortgage()` |
| CRE31.9 | QRRE ρ | `rwa/irb/formulas.py` | `correlation_qrre()` |
| CRE31.10 | Other retail ρ | `rwa/irb/formulas.py` | `correlation_other_retail()` |
| CRE32.13 | PD floor (3 bps) | `rwa/irb/formulas.py` | `PD_FLOOR = 0.0003` |
| CRE32.22-24 | Supervisory LGD (F-IRB) | `models/lgd/lgd_model.py` | `SUPERVISORY_LGD_*` constants |
| CRE32.25 | LGD floors (A-IRB) | `models/lgd/lgd_model.py` | `apply_lgd_floor()` |
| CRE32.29-32 | Supervisory CCF (F-IRB) | `models/ead/ead_model.py` | `SUPERVISORY_CCFS`, `get_supervisory_ccf()` |
| CRE32.33 | CCF floor (A-IRB) | `models/ead/ead_model.py` | `apply_ccf_floor()` |
| CRE20.19-20.21 | Bank SCRA RW | `rwa/standardized/credit_risk_sa.py` | `get_bank_risk_weight(scra_grade=)` |
| CRE22.35-22.39 | CRM simple approach | `rwa/crm.py` | `simple_approach()` |
| CRE22.40-22.56 | CRM supervisory haircuts | `rwa/crm.py` | `supervisory_haircut()` |
| CRE22.57-22.77 | CRM comprehensive approach | `rwa/crm.py` | `comprehensive_approach()` |
| CRE22.78-22.93 | CRM guarantees | `rwa/crm.py` | `guarantee_substitution()` |
| CRE22.33 | CRM maturity mismatch | `rwa/crm.py` | `maturity_mismatch_adjustment()` |
| CRE31.9 fn 15 | QRRE transactor scalar | `rwa/irb/formulas.py` | `irb_risk_weight(is_qrre_transactor=)` |
| OPE25.8-25.13 | Operational risk SMA | `rwa/operational_risk.py` | `sma_capital()`, `calculate_bic()` |
| MAR (FRTB) | Market risk SbM/DRC | `rwa/market_risk.py` | `calculate_sa_market_risk()` |
| RBC25.2-25.4 | Output floor | `rwa/output_floor.py` | `OutputFloorCalculator` |

## IFRS 9

| IFRS Reference | Topic | Module | Function(s) |
|---|---|---|---|
| IFRS 9.5.5.1-9.5.5.5 | Stage assignment | `ecl/ifrs9/staging.py` | `assign_stage()` |
| IFRS 9.5.5.9-9.5.5.12 | SICR assessment | `ecl/ifrs9/sicr.py` | `assess_sicr()` |
| IFRS 9.5.5.15-9.5.5.16 | 12-month ECL (Stage 1) | `ecl/ifrs9/ecl_calc.py` | `ecl_12_month()` |
| IFRS 9.5.5.3 | Lifetime ECL (Stage 2/3) | `ecl/ifrs9/ecl_calc.py` | `ecl_lifetime()` |
| IFRS 9.5.5.17(c) | Forward-looking info | `ecl/ifrs9/forward_looking.py` | `macro_adjustment_factor()` |
| IFRS 9.B5.5.49-54 | Scenario weighting | `ecl/ifrs9/scenarios.py` | `weighted_ecl()` |
| IFRS 9.5.4.1 | POCI treatment | `ecl/ifrs9/staging.py` | `assign_stage()` (POCI branch) |

## ASC 326 (CECL)

| ASC Reference | Topic | Module | Function(s) |
|---|---|---|---|
| ASC 326-20-30-2 | Lifetime ECL from day 1 | `ecl/cecl/cecl_calc.py` | `cecl_ecl_pd_lgd()` |
| ASC 326-20-30-5 | Loss-rate method | `ecl/cecl/cecl_calc.py` | `cecl_ecl_loss_rate()` |
| ASC 326-20-30-9 | Q-factor adjustments | `ecl/cecl/qualitative.py` | `apply_q_factors()` |
| Interagency guidance | WARM method | `ecl/cecl/methods.py` | `warm_method()` |
| Interagency guidance | Vintage analysis | `ecl/cecl/methods.py` | `vintage_analysis()` |

## Ind AS 109

| Reference | Topic | Module | Function(s) |
|---|---|---|---|
| RBI Master Circular | 90 DPD NPA threshold | `ecl/ind_as109/ind_as_ecl.py` | `RBI_DEFAULT_DPD_THRESHOLD = 90` |
| Ind AS 109 (= IFRS 9) | Stage assignment | `ecl/ind_as109/ind_as_ecl.py` | `assign_stage_ind_as()` |

## Jurisdiction Configs

17 YAML config files in `regulatory/` provide jurisdiction-specific parameters:

| Jurisdiction | Regulator | Config File | Key Differences |
|---|---|---|---|
| BCBS | Basel Committee | `bcbs/bcbs_d424.yml` | Reference standard |
| EU | EBA | `eu/crr3.yml` | SME supporting factor, 2-year delayed floor |
| UK | PRA | `uk/pra_basel31.yml` | Further delayed floor (2027+), 65% unrated IG |
| US | Fed/OCC/FDIC | `us/us_endgame.yml` | SA-only for most banks |
| India | RBI | `india/rbi.yml` | 80% output floor, 90 DPD all categories |
| Singapore | MAS | `singapore/mas_637.yml` | BCBS-aligned schedule |
| Hong Kong | HKMA | `hongkong/hkma.yml` | BCBS-aligned schedule |
| Japan | JFSA | `japan/jfsa.yml` | March fiscal year |
| Australia | APRA | `australia/apra.yml` | 72.5% floor immediately, no F-IRB |
| Canada | OSFI | `canada/osfi.yml` | 72.5% floor from Q2 2024 |
| China | NFRA | `china/nfra.yml` | Five-tier asset classification |
| South Korea | FSS | `southkorea/fss.yml` | Jeonse loan treatment |
| UAE | CBUAE | `uae/cbuae.yml` | Higher minimum capital (CET1 7%) |
| Saudi Arabia | SAMA | `saudi/sama.yml` | Islamic finance mapping |
| South Africa | SARB | `southafrica/sarb.yml` | 4% leverage ratio |
| Brazil | BCB | `brazil/bcb.yml` | 9-tier risk classification |
| Malaysia | BNM | `malaysia/bnm.yml` | Dual conventional/Islamic reporting |

## Model Validation References

| Reference | Topic | Module |
|---|---|---|
| BCBS WP14 (2005) | PD backtesting | `validation/backtesting.py` |
| OCC 2011-12 / SR 11-7 | Model risk management | `validation/stability.py` |
| ECB Guide to Internal Models | PSI/CSI monitoring | `validation/stability.py` |
| EBA GL/2017/16 | PD/LGD estimation | `models/pd/scorecard.py`, `models/lgd/lgd_model.py` |
| Gordy (2003) | Granularity Adjustment | `models/concentration/concentration.py` |
| Merton (1974) / Vasicek (2002) | ASRF model | `portfolio/vasicek.py`, `ecl/ifrs9/ttc_to_pit.py` |
