commit 3c83d3aeec6e0ff3245d7848cbbf3af38a67f560 Author: Variet Main Worker Date: Tue Mar 10 13:10:42 2026 +0000 Add "Methodology" diff --git a/Methodology.md b/Methodology.md new file mode 100644 index 0000000..d64d1d5 --- /dev/null +++ b/Methodology.md @@ -0,0 +1,373 @@ +# Lifetime PD (50년) - 이론적 방법론 상세 문서 + +> **목표**: 한국 신용등급 전이행렬과 거시경제변수를 결합하여, 미래 경기를 반영한 50년 Lifetime PD를 호황/불황/중립 시나리오별로 산출 + +--- + +## 1. 전체 논리 흐름 + +``` +[한국 3사 전이행렬 (2000-2025)] + ↓ +[TTC 전이행렬 산출 (전 기간 평균)] + ↓ +[Belkin & Suchower: Zt 추정 (WLS)] ← [TTC 임계값 (Φ⁻¹)] + ↓ +[Zt ~ 거시변수 회귀모형 (OLS + Stepwise)] ← [BOK ECOS 거시경제변수] + ↓ +[미래 시나리오 (호황/중립/불황)] → [Zt 경로 + Mean-Reversion] + ↓ +[Vasicek 조건부 전이행렬 (연도별)] + ↓ +[순차 행렬 곱 → 50년 누적/한계 PD] + ↓ +[확률 가중평균 PD Term Structure] + ↓ +[통계적 검증 (ADF, Ljung-Box, R², ARCH)] +``` + +--- + +## 2. 단계별 상세 이론 + +### 2.1 Through-The-Cycle (TTC) 전이행렬 + +**왜 TTC가 필요한가?** + +연도별 전이행렬은 해당 연도의 경기 상황에 영향을 받아 변동합니다. TTC 전이행렬은 이러한 경기 변동을 평균화하여 "장기 균형" 상태의 전이확률을 나타냅니다. 이것이 Belkin & Suchower 모형에서 **기준점(anchor)** 역할을 합니다. + +**산출 방법:** + +``` +TTC_{ij} = (1/T) × Σ_{t=1}^{T} TM_{ij}(t) +``` + +T개 연도의 단순 산술평균 후 행 합이 1이 되도록 재정규화합니다. + +**논리적 근거:** +- Basel II IRB 프레임워크: PD 추정은 "경기 사이클 전체를 포괄하는 장기 평균"이어야 함 (BCBS §452) +- Moody's/S&P 방법론: 장기 평균 전이행렬을 TTC 기준으로 사용 + +--- + +### 2.2 Belkin & Suchower (1998) — 신용사이클 인덱스 Zt + +**핵심 가정 (Merton-Vasicek 프레임워크):** + +차입자 i의 자산가치 변화를 표준정규 확률변수 X_i로 모델링합니다: + +``` +X_i = √ρ × Z + √(1-ρ) × Y_i +``` + +여기서: +- **Z** ~ N(0,1): 체계적 요인 (Systematic Factor) — 모든 차입자에 공통 +- **Y_i** ~ N(0,1): 개별적 요인 (Idiosyncratic Factor) — 차입자 고유 +- **ρ**: 자산상관계수 (Asset Correlation) — 체계적 요인의 설명력 +- Z와 Y_i는 상호 독립 + +**왜 이 분해가 필요한가?** + +1. 부도율의 시간적 변동은 개별 기업의 고유 위험뿐 아니라, 경기 상황이라는 공통 요인에도 의존합니다 +2. 이 공통 요인 Z를 분리하면, 특정 경기 상황(Z=z)에서의 "조건부 부도율"을 계산할 수 있습니다 +3. 이것이 IFRS 9의 "미래 전망 정보(forward-looking)" 반영의 수학적 기초입니다 + +**임계값(Threshold) 산출:** + +TTC 전이행렬의 누적확률로부터 등급 경계 임계값을 도출합니다: + +``` +d_{i,j} = Φ⁻¹( Σ_{k≤j} TTC_{i,k} ) +``` + +- Φ⁻¹: 표준정규분포의 역함수 +- 이 임계값은 "신용도 X_i가 특정 값 이하로 떨어지면 해당 등급으로 이동"한다는 구조적 모형의 경계입니다 + +**Z-조건부 전이확률:** + +체계적 요인 Z가 주어진 상태에서의 전이확률: + +``` +p_{ij}(Z) = Φ( (d_{i,j} - √ρ × Z) / √(1-ρ) ) - Φ( (d_{i,j-1} - √ρ × Z) / √(1-ρ) ) +``` + +- Z > 0 (호황): 높은 등급 쪽으로 확률 이동 → 부도율 감소 +- Z < 0 (불황): 낮은 등급 쪽으로 확률 이동 → 부도율 증가 +- Z = 0: TTC 전이확률 복원 (무조건부 = 조건부의 기대값) + +**Zt 추정 (가중최소자승법, WLS):** + +연도 t의 관측 전이행렬 TM^obs(t)과 모형 예측 전이행렬 TM^model(Z)의 괴리를 최소화하는 Z_t를 추정합니다: + +``` +Ẑ_t = argmin_Z Σ_{i,j} w_{ij} × [ p_{ij}^obs(t) - p_{ij}^model(Z) ]² +``` + +가중치 w_{ij}: +- 부도 전이확률(D열): 10배 가중 — 부도율이 가장 중요한 리스크 지표 +- 대각 원소(잔류확률): 5배 가중 — 안정성 지표로서 중요 +- 기타: 1배 — 세부 전이는 상대적으로 덜 중요 + +**추정 결과 해석:** +- Zt > 0: 해당 연도는 "좋은 해" — 관측 부도율이 TTC보다 낮음 +- Zt < 0: 해당 연도는 "나쁜 해" — 관측 부도율이 TTC보다 높음 +- |Zt|의 크기: 경기 편차의 강도 (표준편차 단위) + +--- + +### 2.3 자산상관계수 ρ + +**ρ의 의미:** + +ρ는 차입자들의 자산수익률이 공통 경기 요인에 의해 얼마나 동시에 움직이는지를 나타냅니다: +- ρ → 0: 분산 완전 — 개별 위험만 존재, 경기 영향 없음 +- ρ → 1: 완전 상관 — 모든 차입자가 동일하게 반응 + +**Basel IRB 기준:** +- 기업 대출: ρ = 0.12 ~ 0.24 (PD에 따라 역의 관계) +- 본 모형 기본값: ρ = 0.20 (한국 기업부문 중앙값) + +**ρ 추정 방법:** + +NLS(비선형최소자승법)으로 ρ와 Zt를 동시 추정할 수 있습니다: + +``` +(ρ*, {Zt*}) = argmin_{ρ,{Zt}} Σ_t Σ_{i,j} w_{ij} × [ p_{ij}^obs(t) - p_{ij}^model(Zt, ρ) ]² +``` + +외부 루프: ρ 탐색 (bounded, 0.05~0.50) +내부 루프: 각 연도별 Zt 추정 (ρ 고정) + +--- + +### 2.4 Vasicek 단일팩터 모델 — PIT PD + +**TTC PD → PIT PD 변환:** + +Vasicek 공식은 Belkin & Suchower의 특수한 경우로, 부도율만을 집중적으로 다룹니다: + +``` +PD_PIT(Z) = Φ( (Φ⁻¹(PD_TTC) - √ρ × Z) / √(1-ρ) ) +``` + +이 공식은 다음을 의미합니다: +1. PD_TTC: 장기 평균 부도율 — 경기 중립(Z=0)에서의 부도율 +2. Φ⁻¹(PD_TTC): 부도 임계값을 표준정규 공간으로 변환 +3. √ρ × Z: 경기 요인이 임계값을 이동시킴 +4. √(1-ρ)로 나눔: 개별 요인의 분산으로 정규화 + +**수치 예시 (BBB 등급, PD_TTC = 0.38%, ρ = 0.20):** + +| 시나리오 | Z값 | PD_PIT | 배수 | +|----------|------|--------|------| +| 심각한 호황 | +2.0 | 0.04% | 0.1× | +| 보통 호황 | +1.0 | 0.13% | 0.3× | +| 중립 | 0.0 | 0.38% | 1.0× | +| 보통 불황 | -1.0 | 0.96% | 2.5× | +| 심각한 불황 | -2.0 | 2.19% | 5.8× | + +**논리적 근거:** +- IMF (2021): IFRS 9/CECL 호환 스트레스 테스트에서 Vasicek 공식 사용 +- ECB: 금융안정성 평가에서 단일팩터 모형 기반 PIT PD 산출 +- Fed DFAST/CCAR: 스트레스 시나리오에서 PD 조정 시 유사 구조 적용 + +--- + +### 2.5 거시연계 회귀모형: Zt ~ 거시변수 + +**왜 거시변수와 연결하는가?** + +Zt는 "신용사이클"이라는 추상적 개념입니다. 이를 관측 가능한 거시경제변수로 설명하면: +1. **해석 가능성**: Zt의 변동 원인을 이해할 수 있음 +2. **예측 가능성**: 거시 전망치(IMF WEO, KDI 등)를 입력하면 미래 Zt를 예측할 수 있음 +3. **시나리오 분석**: "만약 GDP가 -2%이고 실업률이 5%이면?"이라는 질문에 답할 수 있음 + +**모형 구조:** + +``` +Z_t = β₀ + β₁·GDP_growth_t + β₂·Unemployment_t + β₃·Base_Rate_t + + β₄·CD_Rate_t + β₅·CPI_growth_t + β₆·Leading_Index_t + ε_t +``` + +**변수 선택 (Forward Stepwise, AIC 기준):** + +모든 6개 변수를 한꺼번에 넣으면 과적합(overfitting) 위험이 있습니다 (26개 관측치 대비 7개 파라미터). + +Forward Stepwise 알고리즘: +1. 빈 모형에서 시작 +2. AIC가 가장 많이 감소하는 변수를 하나 추가 +3. 더 이상 AIC가 감소하지 않으면 중단 + +**실제 선택된 변수:** LEADING_INDEX, GDP_GROWTH, UNEMPLOYMENT, CD_RATE (4개) + +**기대 부호:** + +| 변수 | 기대 부호 | 근거 | +|------|-----------|------| +| GDP_GROWTH | + | 경기 호황 → Zt 상승 (신용 개선) | +| UNEMPLOYMENT | - | 실업 증가 → Zt 하락 (부도 증가) | +| LEADING_INDEX | + | 경기 선행지수 상승 → Zt 상승 | +| CD_RATE | - | 금리 상승 → 기업 부담 증가 → Zt 하락 | + +**왜 OLS인가?** + +- 26개 연간 관측치로는 VAR, VECM 등 복잡한 시계열 모형의 자유도가 부족 +- OLS는 소표본에서도 BLUE(Best Linear Unbiased Estimator) 조건 하에서 최적 +- 잔차 진단으로 OLS 가정 위반 여부를 검증 + +--- + +### 2.6 통계적 검증 (엄밀한 관점) + +#### (a) ADF (Augmented Dickey-Fuller) 검정 — Zt 정상성 + +``` +H₀: Zt에 단위근이 존재 (비정상 시계열) +H₁: Zt는 정상 시계열 +``` + +Zt가 비정상이면 회귀분석의 t-통계량과 R²가 거짓 결과를 낼 수 있습니다 (허위 회귀). +**본 모형 결과: p = 0.0000 → 정상 시계열 확인 (Pass)** + +#### (b) Shapiro-Wilk 검정 — Zt 정규성 + +Belkin & Suchower (1998)는 Z ~ N(0,1)을 가정합니다. 추정된 Zt가 정규분포를 따르는지 확인합니다. +**본 모형 결과: p = 0.0017 → 비정규 (Fail)** + +이는 IMF 위기, GFC, COVID 등 극단적 사건으로 인한 비대칭 분포 때문입니다. Belkin 원논문에서도 이 한계를 인정하고 있으며, 실무적으로는 심각한 문제가 아닙니다. + +#### (c) Durbin-Watson / Ljung-Box — 잔차 자기상관 + +``` +H₀: 잔차에 자기상관이 없음 +DW ≈ 2이면 자기상관 없음 +Ljung-Box: p > 0.05이면 자기상관 없음 +``` + +잔차에 자기상관이 존재하면 OLS 표준오차가 과소추정되어 유의성 검정이 왜곡됩니다. +**본 모형 결과: DW = 2.235, LB p = 0.2743 → 자기상관 없음 (Pass)** + +#### (d) Breusch-Pagan / ARCH-LM — 이분산 + +``` +H₀: 잔차의 분산이 일정 (등분산) +``` + +이분산이 존재하면 OLS 추정량은 여전히 불편이지만, 효율적이지 않습니다. +**본 모형 결과: BP p = 0.3951, ARCH p = 0.7885 → 등분산 (Pass)** + +#### (e) R² / F-test — 모형 설명력 + +``` +R² = 1 - (잔차변동/총변동) +F-test H₀: 모든 회귀계수 = 0 +``` + +**본 모형 결과: R² = 0.889, F p = 0.0000 → 거시변수가 Zt 변동의 89%를 설명 (Pass)** + +--- + +### 2.7 시나리오 설계 (ECB/Fed 방식) + +**IFRS 9 요구사항 (B5.5.42-44):** + +ECL 산출 시 복수의 시나리오를 확률 가중하여 반영해야 합니다. "편향 없는(unbiased)" 추정을 위해 호황과 불황 양방향을 모두 고려해야 합니다. + +| 시나리오 | Zt 설정 | 가중치 | 학술적 근거 | +|---------|---------|--------|------------| +| 호황 | μ + 1.0σ | 20% | ECB: 상위 시나리오에 15-25% | +| 중립 | μ + 0σ | 50% | IMF WEO 기본 전망 | +| 불황 | μ - 1.5σ | 30% | Fed DFAST: 역사적 하위 5% | + +**가중치 비대칭의 이유:** + +불황 시나리오에 더 높은 가중치(30% > 20%)를 부여하는 것은: +1. 신용 손실 함수의 비선형성 — 불황의 영향이 호황의 이익보다 큼 +2. ECB/Fed의 감독 관행 — "보수적 추정" 원칙 +3. 역사적으로 불황의 빈도가 호황보다 약간 높음 + +--- + +### 2.8 50년 수렴 메커니즘 + +**왜 수렴이 필요한가?** + +거시경제 예측은 현실적으로 3-5년이 한계입니다 (IMF WEO는 5년 전망). 50년 예측에서는: +1. **1~5년 (PIT 구간)**: 거시 시나리오 기반 Zt 적용 — 가장 신뢰도 높은 구간 +2. **6~10년 (전환 구간)**: Mean-reversion으로 점진적 수렴 — 불확실성 증가에 대응 +3. **11~50년 (TTC 구간)**: Z = 0 (장기 평균) — 경기 사이클이 반복된다는 가정 + +**Mean-Reversion 공식:** + +``` +Z_t^adj = Z_t^scenario × exp(-λ × (t - T_pit)) (t > T_pit) +``` + +- λ = 0.3: Mean-reversion 속도 — 5년 후 Z가 약 22%로 감소 +- T_pit = 5: PIT 적용 종료 시점 + +**학술적 근거:** +- Ornstein-Uhlenbeck 과정: 금리/스프레드 모형에서 널리 사용 +- Basel III FRTB: 장기 리스크 파라미터의 평균회귀 가정 +- IFRS 9 IG: 예측 불가능한 장기 구간에서는 역사적 평균 사용 권장 + +--- + +### 2.9 Lifetime PD 산출 엔진 + +**핵심 수학:** + +연도별 조건부 전이행렬을 순차적으로 곱하여 누적 전이확률을 구합니다: + +``` +TM_cum(t) = TM(Z₁) × TM(Z₂) × ... × TM(Z_t) +``` + +- **누적 PD(t)** = TM_cum(t) 의 D열 (마지막 열) +- **한계 PD(t)** = Cumulative PD(t) - Cumulative PD(t-1) +- **생존확률(t)** = 1 - Cumulative PD(t) + +**왜 행렬 곱인가? (단순 PD 합산이 아닌 이유)** + +단순히 연간 PD를 합산하면 "이미 부도한 기업이 다시 부도하는" 이중 계산이 발생합니다. 전이행렬 곱은: +1. 부도(D)를 흡수상태로 처리하여 이중 계산을 방지 +2. 등급 이동(업그레이드/다운그레이드)을 경유한 부도 경로를 모두 포착 +3. BBB → BB → B → D 같은 다단계 부도 경로를 정확히 반영 + +**확률 가중평균:** + +``` +PD_weighted(t) = Σ_s w_s × PD_s(t) + = 0.20 × PD_upside(t) + 0.50 × PD_base(t) + 0.30 × PD_downside(t) +``` + +--- + +## 3. 참고문헌 + +| 번호 | 문헌 | 활용 | +|------|------|------| +| 1 | Belkin, B., Suchower, S., & Forest, L.R. (1998). "A One-Parameter Representation of Credit Risk and Transition Matrices" | 핵심 방법론: Zt 추정 | +| 2 | Vasicek, O. (2002). "The Distribution of Loan Portfolio Value" | 조건부 PD 공식 | +| 3 | Merton, R.C. (1974). "On the Pricing of Corporate Debt" | 구조적 모형 기초 | +| 4 | Basel Committee (2005). BCBS 128 "An Explanatory Note on the Basel II IRB Risk Weight Functions" | ρ 파라미터, WCPD | +| 5 | IFRS 9 Financial Instruments (IASB, 2014) B5.5.42-44 | 복수 시나리오 요구사항 | +| 6 | IMF (2021). "IFRS 9 and CECL Compatible Estimation for Top-Down Solvency Stress Testing" | 거시연계 PD 방법론 | +| 7 | ECB (2019). "Macro-financial scenarios for IFRS 9 ECL estimation" | 시나리오 가중치 | +| 8 | Federal Reserve (2023). "Dodd-Frank Act Stress Test Methodology" | 불황 시나리오 설계 | +| 9 | Greene, W.H. (2018). "Econometric Analysis" 8th ed. | OLS 진단, 변수 선택 | + +--- + +## 4. 코드 구조 ↔ 이론 매핑 + +| 모듈 | 이론 단계 | 핵심 함수 | +|------|----------|----------| +| `data/transition_matrices.py` | §2.1 TTC 산출 | `compute_ttc_matrix()` | +| `data/macro_data.py` | §2.5 거시데이터 | `collect_macro_data()` | +| `models/credit_cycle.py` | §2.2 Zt 추정 | `estimate_zt_series()` | +| `models/vasicek.py` | §2.4 조건부 PD | `conditional_pd()`, `conditional_transition_matrix()` | +| `models/macro_model.py` | §2.5 거시연계 | `MacroZtModel.fit()` | +| `scenarios/scenario_engine.py` | §2.7-2.8 시나리오 | `generate_z_paths()` | +| `projection/lifetime_pd.py` | §2.9 PD 산출 | `compute_all_scenarios()` | +| `validation/statistical_tests.py` | §2.6 검증 | `run_full_validation()` |