- Replace hardcoded DEFAULT_PD_FLOORS with build_complete_pd_floor_table() (KAP bond YTM) - Fix ADF test: autolag='AIC' -> 'BIC' for small sample (N=26) robustness - Expand variable search: 40 -> 226 vars (log/diff/return/lag2), 1.9M combos - Select Model #2: HOUSING_PRICE + CREDIT_SPREAD_LAG1 + CURRENT_ACCOUNT_R - Add 6-test diagnostics table to AR1 sheet (ADF/LB/DW/BP/ARCH/Shapiro) - Add Korean variable names for transformed variables - Generate report v7 with full diagnostics
603 lines
25 KiB
Markdown
603 lines
25 KiB
Markdown
# Lifetime PD (50년) - 이론적 방법론 상세 문서
|
||
|
||
> **목표**: 한국 신용등급 전이행렬과 거시경제변수를 결합하여, 미래 경기를 반영한 50년 Lifetime PD를 호황/불황/중립 시나리오별로 산출
|
||
|
||
---
|
||
|
||
## 1. 전체 논리 흐름
|
||
|
||
```
|
||
[한국 3사 PDF (한국기업평가/NICE/한신평)]
|
||
↓
|
||
[전처리: WR 제거 → B이하→B 매핑 → PD 플로어 적용 → 7×7 (AAA~B+D)]
|
||
↓
|
||
[TTC 전이행렬 산출 (전 기간 평균, 7×7)]
|
||
↓
|
||
[Belkin & Suchower: Zt 추정 (WLS)] ← [TTC 임계값 (Φ⁻¹)]
|
||
↓
|
||
[CCC 행/열 보간 (B↔D 사이 PD 보간) → 8×8 완성]
|
||
↓
|
||
[Zt ~ 거시변수 회귀모형 (OLS + Stepwise)] ← [BOK ECOS 거시경제변수]
|
||
↓
|
||
[미래 시나리오 (호황/중립/불황)] → [Zt 경로 + Mean-Reversion]
|
||
↓
|
||
[Vasicek 조건부 전이행렬 (연도별)]
|
||
↓
|
||
[순차 행렬 곱 → 50년 누적/한계 PD]
|
||
↓
|
||
[확률 가중평균 PD Term Structure]
|
||
↓
|
||
[통계적 검증 (ADF, Ljung-Box, R², ARCH)]
|
||
```
|
||
|
||
---
|
||
|
||
## 2. 단계별 상세 이론
|
||
|
||
### 2.0 3사 전이행렬 전처리 파이프라인
|
||
|
||
한국 3사 PDF에서 추출된 원시 전이행렬은 그대로 사용할 수 없습니다. 아래 6단계 전처리를 거쳐 모형에 투입합니다.
|
||
|
||
#### 원시 데이터 구조
|
||
|
||
3사(한국기업평가, NICE, 한신평)의 PDF 전이행렬은 다음 형태입니다:
|
||
|
||
```
|
||
6행(AAA, AA, A, BBB, BB, B이하) × 8열(AAA, AA, A, BBB, BB, B이하, D, WR)
|
||
```
|
||
|
||
- **CCC 등급**은 한국 시장에서 발행체 수가 극소하여 별도 행이 존재하지 않음
|
||
- **WR(등급취소)** 열이 포함되어 있어 행 합이 100%가 되지 않을 수 있음
|
||
|
||
#### Step 1: PDF 파싱 → 6×8 추출
|
||
|
||
`data/parse_pdf_matrices.py`에서 pdfplumber를 사용하여 3사 PDF에서 연도별 6×8 행렬을 추출합니다.
|
||
- 각 기관별 파서 사용 (KR: 텍스트 기반, NICE: 텍스트 기반, SCI: 테이블 기반)
|
||
- 추출된 행렬의 행합 유효성 검증 (30~110% 범위)
|
||
|
||
#### Step 2: WR -> D PD 플로어 보정 + 쟔여 WR 비례 재배분
|
||
|
||
WR(등급취소)을 단순 제거하면 부도율이 과소추정됩니다(등급취소 직전 부도 위험). 신규 방법론:
|
||
|
||
1. **PD 플로어 보정**: 관측 PD < 기준 PD이면, WR에서 부족분을 D열로 이전
|
||
2. **쟔여 WR 재배분**: 남은 WR을 나머지 등급에 확률 비례 재배분
|
||
|
||
```
|
||
if PD_{observed} < PD_{floor}:
|
||
deficit = PD_{floor} - PD_{observed}
|
||
transfer = min(deficit, WR)
|
||
D += transfer
|
||
WR -= transfer
|
||
|
||
# Remaining WR -> proportional redistribution
|
||
p_{ij} = p_{ij} * (sum_non_WR + WR_remaining) / sum_non_WR
|
||
```
|
||
|
||
#### Step 3: B이하 → B 매핑
|
||
|
||
3사 원본에서 "B이하" 범주를 모형의 B등급에 매핑합니다.
|
||
결과: 6×7 (AAA, AA, A, BBB, BB, B × AAA~D)
|
||
|
||
#### Step 4: D행 추가 → 7×7
|
||
|
||
D(부도)는 흡수상태로 고정합니다:
|
||
|
||
```
|
||
D행 = [0, 0, 0, 0, 0, 0, 1]
|
||
```
|
||
|
||
결과: **7×7 (AAA, AA, A, BBB, BB, B, D)** — 이 행렬로 Zt 추정을 수행합니다.
|
||
|
||
#### Step 5: PD 플로어 적용 (KAP 시장 YTM 기반)
|
||
|
||
한국 시장에서 AAA~A 등급의 관측 부도율이 0%인 경우가 대부분입니다. 이는 모집단이 작아 극소확률 이벤트가 관측되지 않은 것일 뿐, 부도 위험이 0이라는 의미가 아닙니다.
|
||
|
||
**KAP 시장 YTM 기반 PD 플로어** (2025-12-31 기준):
|
||
|
||
| 등급 | 신용스프레드 (bp) | 시장내재 PD | AAA 앵커링 후 PD 플로어 | 방법 |
|
||
|------|:---:|:---:|:---:|------|
|
||
| AAA | 3.5 | 0.6bp | **5.0bp** | 앵커 (Basel III) |
|
||
| AA | 5.3 | 0.9bp | **7.0bp** | 로그 스케일링 |
|
||
| A | 17.7 | 2.9bp | **15.0bp** | 로그 스케일링 |
|
||
| BBB | 129 | 21.5bp | **92.7bp** | 로그 스케일링 |
|
||
| BB | - | (외삽) | **160.7bp** | 로그 트렌드 외삽 |
|
||
| B | - | (외삽) | **416.4bp** | 로그 트렌드 외삽 |
|
||
|
||
- **데이터 출처**: KAP(한국자산평가) 공모회사채 1년 YTM
|
||
- **LGD**: 60% (회수율 40%, 한국 시장 기준)
|
||
- **AAA 앵커**: 5bp (Basel III CRE30.4)
|
||
- **스케일링**: `PD_floor_i = exp(log(PD_raw_i) * scale)`, `scale = log(5bp) / log(PD_raw_AAA)`
|
||
- **투기등급**: BBB- 마지막 관측점에서 로그 트렌드 외삽
|
||
|
||
상세 출처: docs/pd_floor_reference.md 참조
|
||
|
||
#### Step 6: CCC 행/열 보간 → 8×8 완성
|
||
|
||
Zt 추정 완료 후, B등급과 D등급 사이를 보간하여 CCC 행/열을 생성합니다:
|
||
|
||
```
|
||
PD_CCC = interpolate(PD_B, PD_D=1.0)
|
||
```
|
||
|
||
- CCC의 PD는 B의 PD와 D의 PD(=100%) 사이에서 보간
|
||
- CCC의 전이확률 분포도 B행과 D행의 패턴에서 보간
|
||
- 이렇게 생성된 8×8 행렬이 최종 조건부 전이행렬 산출에 사용됩니다
|
||
|
||
#### 왜 CCC 없이 Zt를 추정하는가?
|
||
|
||
1. **통계적 신뢰도**: 한국 시장에서 CCC 등급 발행체가 극소수이므로 관측 전이확률의 표본오차가 매우 큼
|
||
2. **순환 논리 방지**: fabricated CCC 데이터로 Zt를 추정하면, 가짜 데이터가 모형 파라미터에 영향
|
||
3. **파이프라인 정합성**: 관측 데이터(7×7)로 Zt 추정 → 모형 기반 보간(CCC)으로 확장하는 것이 이론-실무 분리 원칙에 부합
|
||
|
||
---
|
||
|
||
### 2.1 Through-The-Cycle (TTC) 전이행렬
|
||
|
||
**왜 TTC가 필요한가?**
|
||
|
||
연도별 전이행렬은 해당 연도의 경기 상황에 영향을 받아 변동합니다. TTC 전이행렬은 이러한 경기 변동을 평균화하여 "장기 균형" 상태의 전이확률을 나타냅니다. 이것이 Belkin & Suchower 모형에서 **기준점(anchor)** 역할을 합니다.
|
||
|
||
**산출 방법:**
|
||
|
||
```
|
||
TTC_{ij} = (1/T) × Σ_{t=1}^{T} TM_{ij}(t)
|
||
```
|
||
|
||
T개 연도의 단순 산술평균 후 행 합이 1이 되도록 재정규화합니다. §2.0의 전처리를 거친 7×7 행렬에 대해 TTC를 산출합니다.
|
||
|
||
**논리적 근거:**
|
||
- 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가 주어진 상태에서의 전이확률 (Belkin convention: Z>0 = 호황):
|
||
|
||
```
|
||
p_{ij}(Z) = Φ( (d_{i,j} + √ρ × Z) / √(1-ρ) ) - Φ( (d_{i,j-1} + √ρ × Z) / √(1-ρ) )
|
||
```
|
||
|
||
**부호 규약 주의**: 본 프로젝트는 Belkin convention(Z>0=호황)을 사용하여 `d + √ρ·Z`입니다.
|
||
Basel/Vasicek convention(Z>0=불황)에서는 `d - √ρ·Z`이며, 두 규약은 Z의 부호만 다릅니다.
|
||
|
||
- 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-ρ) ) [Belkin: Z>0=호황]
|
||
PD_PIT(Z) = Φ( (Φ⁻¹(PD_TTC) - √ρ × Z) / √(1-ρ) ) [Basel: Z>0=불황]
|
||
```
|
||
|
||
본 프로젝트에서는 Belkin convention(`+√ρ·Z`)을 주로 사용합니다. 이 공식은 다음을 의미합니다:
|
||
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 AR(1) + Macro 신용사이클 모형
|
||
|
||
#### 2.5.1 모형의 목적
|
||
|
||
Zt는 전이행렬에서 역산한 "신용사이클 인덱스"로, 그 자체로는 **미래를 예측할 수 없습니다.**
|
||
IFRS 9 Lifetime PD는 **미래 경기 전망(forward-looking)**을 반영해야 하므로,
|
||
관측된 Zt를 **거시경제변수와 연결**하여 미래 Zt 경로를 생성해야 합니다.
|
||
|
||
이를 위해 **AR(1) + Macro 모형**을 사용합니다. 이 모형은:
|
||
1. 신용사이클의 **관성**(φ·Z(t-1))과 **거시경제 충격**(β·X(t))을 동시에 포착
|
||
2. **미래 경로 생성**에서 거시변수가 **직접적으로** 기여
|
||
3. **Mean-reversion**이 φ에 의해 자동으로 결정 (하드코딩 불필요)
|
||
|
||
#### 2.5.2 모형 정의
|
||
|
||
**수학적 구조:**
|
||
|
||
```
|
||
Z(t) = c + φ·Z(t-1) + β₁·X₁(t) + β₂·X₂(t) + β₃·X₃(t) + ε(t)
|
||
```
|
||
|
||
여기서:
|
||
- **Z(t)**: 연도 t의 신용사이클 인덱스 (Belkin convention: Z>0 = 호황)
|
||
- **Z(t-1)**: 전년도 신용사이클 → **자기회귀(AR) 항**
|
||
- **c**: 절편 (장기 균형 수준 조정)
|
||
- **φ**: 자기회귀 계수 — **사이클의 관성(persistence)**
|
||
- 0 < φ < 1: 정상(stationary) 과정, 자연 감쇠
|
||
- φ가 1에 가까울수록 사이클이 오래 지속
|
||
- **반감기** = ln(2) / |ln(φ)| 년
|
||
- **β₁~β₃**: 거시변수 계수 — 경기 충격의 크기와 방향
|
||
- **ε(t) ~ N(0, σ²_ε)**: 잔차 (모형이 설명하지 못하는 변동)
|
||
|
||
**장기 균형**:
|
||
|
||
거시 충격이 없고(X=X̄) 충분한 시간이 지나면:
|
||
|
||
```
|
||
Z∞ = (c + β·X̄) / (1 - φ) ≈ 0 (TTC 수준)
|
||
```
|
||
|
||
#### 2.5.3 변수 선택
|
||
|
||
**변수 풀**: BOK ECOS 100대 통계지표 포함 37개 거시변수
|
||
|
||
37개 변수에서 3변수 조합 7,770개를 **전수 탐색(exhaustive search)** 하여,
|
||
**부호 일관성(sign consistency)**을 만족하는 최적 조합을 선택합니다.
|
||
|
||
**선택된 3변수:**
|
||
|
||
| 변수 | 코드 | 계수 부호 | 경제적 근거 |
|
||
|------|------|:---------:|------------|
|
||
| 원/달러 환율 | USDKRW | − | 원화 약세 → 외국인 자본유출, 수입원가 상승 → 기업 부담↑ → Zt↓ |
|
||
| 소매판매액지수 | RETAIL_SALES | + | 내수 소비 활성화 → 기업 매출·수익성↑ → Zt↑ |
|
||
| 국내총투자율 | INVEST_RATE | + | 투자 확대 → 경기 확장 → 부도 감소 → Zt↑ |
|
||
|
||
**변수 설계 원칙:**
|
||
- 3변수는 각각 **외부충격(환율)**, **내수(소비)**, **투자(자본형성)**를 대표
|
||
- **과적합 방지**: 관측치 수 / (변수 수 + AR항) ≈ 25 / 4 = 6.25
|
||
- **다중공선성 회피**: 환율·소비·투자는 서로 다른 경기 차원을 포착
|
||
|
||
#### 2.5.4 왜 AR(1) + Macro 인가?
|
||
|
||
**기존 OLS 대비 개선:**
|
||
|
||
| 항목 | OLS 모형 (기존) | AR(1)+Macro (개선) |
|
||
|------|---------------|-------------------|
|
||
| 미래 Zt 생성 | Zt 분포 통계(μ±kσ) | **φ·Z(t-1) + β·충격** |
|
||
| 거시변수 역할 | 사후 해석만 | **시나리오 충격 직접 투영** |
|
||
| Mean-reversion | 하드코딩 (λ=0.3) | **φ에서 자동 결정** |
|
||
| 사이클 관성 | 무시 | **φ로 포착 (불황 지속성)** |
|
||
| IFRS 9 호환 | 약함 | **명시적 forward-looking** |
|
||
|
||
**이론적 근거:**
|
||
- Moody's Analytics: Z-score → macro regression → scenario forecast
|
||
- Zanders Group: Vasicek Z → macro regression → PiT 전이행렬
|
||
- EBA/ECB: Forward-looking macro overlay on Z-index
|
||
- 한국 FSS: 복수 시나리오 + 거시경제 전망 반영 의무
|
||
|
||
---
|
||
|
||
### 2.6 시나리오 경로 생성 메커니즘
|
||
|
||
IFRS 9 (B5.5.42-44)는 **복수의 거시경제 시나리오를 확률 가중**하여
|
||
ECL을 산출할 것을 요구합니다. 본 모형에서 시나리오 차이는
|
||
**거시변수의 충격(shock) 크기와 방향**에 의해 결정됩니다.
|
||
|
||
#### 2.6.1 시나리오 정의
|
||
|
||
각 시나리오는 기준시점(t₀) 대비 **거시변수의 이탈(σ 배수)**로 정의합니다:
|
||
|
||
| 시나리오 | USDKRW 충격 | RETAIL 충격 | INVEST 충격 | 가중치 |
|
||
|---------|:----------:|:----------:|:----------:|:-----:|
|
||
| 호황 (Upside) | −1.0σ | +1.0σ | +1.0σ | 20% |
|
||
| 중립 (Base) | 0 | 0 | 0 | 50% |
|
||
| 불황 (Downside) | +1.5σ | −1.5σ | −1.5σ | 30% |
|
||
|
||
**σ는 각 변수의 과거 표본 표준편차**입니다.
|
||
- σ(USDKRW) ≈ 120원 → Downside 충격 = +180원 (1,380 → 1,560원)
|
||
- σ(RETAIL) ≈ 8pt → Downside 충격 = −12pt (107 → 95)
|
||
- σ(INVEST) ≈ 1.5%p → Downside 충격 = −2.25%p (30% → 27.75%)
|
||
|
||
**불황에 더 큰 충격(1.5σ > 1.0σ)을 적용하는 이유:**
|
||
1. 신용 손실 함수의 비선형성 — 불황의 PD 증가폭이 호황의 감소폭보다 큼
|
||
2. ECB/Fed 감독 관행 — 보수적 추정(conservative estimation) 원칙
|
||
3. IFRS 9 B5.5.42: 편향 없는 확률 가중은 테일 리스크를 반영해야 함
|
||
|
||
#### 2.6.2 Zt 경로 생성 알고리즘
|
||
|
||
```
|
||
입력: Z(t₀) = Zt의 마지막 관측값
|
||
c, φ, β₁, β₂, β₃ = 적합된 AR(1) 파라미터
|
||
ΔX = (ΔX₁, ΔX₂, ΔX₃) = 시나리오별 거시 충격
|
||
σ_X = 각 변수의 표본 표준편차
|
||
```
|
||
|
||
**Step 1: 시나리오별 t=1 진입**
|
||
|
||
```
|
||
X_shock(i) = ΔX(i) × σ_X(i)
|
||
Z(t₀+1) = c + φ·Z(t₀) + Σᵢ βᵢ·X_shock(i)
|
||
```
|
||
|
||
거시변수의 **충격 수준**이 Zt의 초기 분기를 결정합니다.
|
||
- Base: X_shock = 0 → Z(t₀+1)은 순수한 AR(1) 감쇠
|
||
- Downside: X_shock 반영 → Z(t₀+1)이 음(−)의 방향으로 이동
|
||
- Upside: X_shock 반영 → Z(t₀+1)이 양(+)의 방향으로 이동
|
||
|
||
**Step 2: t=2 이후 — 자기회귀 전파 (AR propagation)**
|
||
|
||
```
|
||
Z(t₀+k) = c + φ·Z(t₀+k-1) (k ≥ 2)
|
||
```
|
||
|
||
t=2부터는 **거시 충격 없이**, φ에 의한 **자연 감쇠**만 적용됩니다.
|
||
- φ = 0.7이면: 반감기 ≈ 2.0년 → 충격이 약 4년 만에 10% 이하로 감쇠
|
||
- φ = 0.5이면: 반감기 ≈ 1.0년 → 충격이 약 3년 만에 소멸
|
||
|
||
**Step 3: 장기 수렴 (TTC)**
|
||
|
||
```
|
||
lim_{k→∞} Z(t₀+k) = c / (1 − φ) ≈ 0
|
||
```
|
||
|
||
충분한 시간이 지나면 모든 시나리오가 **TTC(Z=0)로 자연 수렴**합니다.
|
||
이는 경기 사이클이 장기적으로 평균 회귀한다는 가정과 일치합니다.
|
||
|
||
**핵심: 이 과정에서 거시변수의 미래 값을 예측(forecast)하지 않습니다.**
|
||
거시변수는 t=1에서의 **시나리오 진입 충격**만을 정의하며,
|
||
t=2 이후는 φ에 의한 내생적(endogenous) 감쇠가 Zt 경로를 결정합니다.
|
||
|
||
#### 2.6.3 시각화
|
||
|
||
```
|
||
Z(t)
|
||
↑
|
||
│ ╭── Upside (β·[−1σ,+1σ,+1σ] 충격)
|
||
│ ╱
|
||
│ ╱
|
||
│──╱──────── Base (충격 없음, φ 감쇠만)
|
||
│ │╲
|
||
│ │ ╲
|
||
│ │ ╲──── Downside (β·[+1.5σ,−1.5σ,−1.5σ] 충격)
|
||
│ │ ╲
|
||
─┼──┼────╲───────────────────→ t
|
||
0 t₀ t₀+1 t₀+2 ... t₀+10 ... t₀+50
|
||
│←── 충격 ──→│←── φ 감쇠 ──────────→│← TTC (Z≈0) →│
|
||
```
|
||
|
||
---
|
||
|
||
### 2.7 분기별 업데이트 (Quarterly Refresh)
|
||
|
||
#### 2.7.1 연간 Full Calibration vs 분기 Light Update
|
||
|
||
| | 연간 (Full) | 분기 (Light) |
|
||
|--|-----------|------------|
|
||
| **시점** | 연초 (직전년도 데이터 확정 후) | Q2, Q3, Q4 |
|
||
| **전이행렬** | 3사 PDF → TTC 재산출 | 변경 없음 |
|
||
| **Zt** | 전 기간 WLS 재추정 | 변경 없음 |
|
||
| **AR(1) 파라미터** | c, φ, β 재적합 | **변경 없음** (연초 확정값 사용) |
|
||
| **거시변수** | 연간 관측값 | **최신 분기/월간 관측값** |
|
||
| **Z 경로** | 전체 재생성 | **Z(t₀) 시작점만 갱신** |
|
||
| **Lifetime PD** | 전체 재산출 | **갱신된 Z경로로 재산출** |
|
||
|
||
#### 2.7.2 분기 업데이트 절차
|
||
|
||
```
|
||
[Step 1] ECOS에서 최신 거시 관측값 수집:
|
||
USDKRW(Q_current), RETAIL_SALES(Q_current), INVEST_RATE(Q_current)
|
||
|
||
[Step 2] 현재 Z 수준 재계산 (연초 파라미터 사용):
|
||
Z_current = c + φ·Z_prev + β₁·USDKRW_Q + β₂·RETAIL_Q + β₃·INVEST_Q
|
||
|
||
[Step 3] Z_current를 새로운 시작점으로 50년 Z-path 재생성
|
||
|
||
[Step 4] Vasicek 조건부 TM → 행렬곱 → Lifetime PD 재산출
|
||
|
||
[Step 5] ECL = Σ EAD(t) × PD(t) × LGD(t) × DF(t) 재산출
|
||
```
|
||
|
||
이 방식의 장점:
|
||
- **거시변수가 Lifetime PD에 실시간으로 기여** — IFRS 9 forward-looking 충족
|
||
- **모형 재추정 불필요** — 파라미터 안정성 유지
|
||
- **감사 추적 가능** — 어떤 거시 관측값이 PD 변동을 야기했는지 추적
|
||
|
||
---
|
||
|
||
### 2.8 IFRS 9 준수 매핑
|
||
|
||
| IFRS 9 요구사항 | 조항 | 본 모형 대응 |
|
||
|---------------|------|-----------|
|
||
| Forward-looking 정보 반영 | B5.5.4 | AR(1) macro 충격 → Zt → PiT PD |
|
||
| 복수 시나리오 확률 가중 | B5.5.42 | 3 시나리오 × 확률 (20/50/30%) |
|
||
| 편향 없는 확률가중 추정 | B5.5.43 | Up/Base/Down 양방향 반영 |
|
||
| 과도한 비용·노력 없이 이용 가능 | B5.5.51 | ECOS 공개 데이터 (API) 사용 |
|
||
| PiT PD 사용 | 5.5.17 | Vasicek Z-조건부 전이행렬 |
|
||
| Lifetime ECL (Stage 2) | 5.5.3 | 50년 누적/한계 PD term structure |
|
||
| 정기적 갱신 | B5.5.52 | 분기별 Quarterly Refresh |
|
||
|
||
**IFRS 9 (2024년 5월 개정, 2026년 1월 발효) 참고:**
|
||
최신 개정은 금융자산 분류/측정, ESG 연계, 전자결제 제거에 관한 것이며,
|
||
ECL/PD 모형 방법론 자체에는 변경이 없습니다.
|
||
(IFRS 17은 보험계약 회계 기준으로, 본 프로젝트(대출/채권 신용위험)와 적용 범위가 다릅니다.)
|
||
|
||
---
|
||
|
||
### 2.9 50년 수렴 메커니즘
|
||
|
||
**왜 수렴이 필요한가?**
|
||
|
||
AR(1) 모형에서 0 < φ < 1이면 Z(t)는 자동으로 장기 균형으로 수렴합니다.
|
||
별도의 수렴 메커니즘이 불필요하며, 이것이 AR(1) 모형의 핵심 장점입니다.
|
||
|
||
**수렴 속도:**
|
||
|
||
| φ | 반감기 | 충격이 5% 이하로 감쇠 | 50년 시점 잔여 충격 |
|
||
|---|--------|-------------------|-----------------|
|
||
| 0.3 | 0.6년 | ~2.5년 | ≈ 0% |
|
||
| 0.5 | 1.0년 | ~4.3년 | ≈ 0% |
|
||
| 0.7 | 1.9년 | ~8.4년 | ≈ 0% |
|
||
| 0.9 | 6.6년 | ~28.4년 | ~0.5% |
|
||
|
||
**학술적 근거:**
|
||
- Ornstein-Uhlenbeck 과정의 이산 시간 버전이 AR(1)
|
||
- 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 진단, 변수 선택 |
|
||
| 10 | Basel Committee (2017). CRE30.4 "Minimum requirements — PD input floors" | PD 플로어 5bp |
|
||
| 11 | S&P Global (2024). "2023 Annual Global Corporate Default And Rating Transition Study" | 등급별 장기 평균 부도율 |
|
||
| 12 | Moody's (2024). "Annual Default Study — Corporate Default and Recovery Rates" | 등급별 장기 평균 부도율 |
|
||
| 13 | EBA/CRR3 (2025). "Capital Requirements Regulation III — IRB Input Floors" | EU PD floor 5bp 법제화 |
|
||
|
||
---
|
||
|
||
## 4. 코드 구조 ↔ 이론 매핑
|
||
|
||
| 모듈 | 이론 단계 | 핵심 함수 |
|
||
|------|----------|----------|
|
||
| `data/parse_pdf_matrices.py` | §2.0 PDF 파싱·전처리 | `parse_kr()`, `parse_nice()`, `postprocess_matrix()` |
|
||
| `data/transition_matrices.py` | §2.0-2.1 TTC 산출 | `load_transition_matrices()`, `compute_ttc_matrix()` |
|
||
| `data/macro_data.py` | §2.5 거시데이터 | `load_macro_data()` |
|
||
| `data/ecos_fetcher.py` | §2.5 ECOS API | `EcosFetcher.fetch_all()` |
|
||
| `models/credit_cycle.py` | §2.2 Zt 추정 | `estimate_zt_series()` |
|
||
| `models/vasicek.py` | §2.4 조건부 PD/TM | `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()` |
|
||
|
||
## 5. 부호 규약 참고
|
||
|
||
| 규약 | Z>0 의미 | 수식 | 사용 위치 |
|
||
|------|---------|------|----------|
|
||
| **Belkin convention** | 호황 (PD↓) | `d + √ρ·Z` | `credit_cycle.py`, `vasicek.conditional_transition_matrix()` |
|
||
| **Basel/Vasicek convention** | 불황 (PD↑) | `d - √ρ·Z` | `vasicek.conditional_pd()`, `vasicek.worst_case_pd()` |
|
||
|
||
두 규약이 코드에 공존하며, 각 함수의 docstring에 사용 규약이 명시되어 있습니다.
|