# Architecture

> AI 에이전트는 구현 전 이 문서를 반드시 확인합니다.

## 프로젝트 개요

Belkin & Suchower (1998) + Vasicek 단일팩터 모델 기반으로, 한국 3사 전이행렬과 BOK ECOS 거시경제변수를 결합하여 **50년 Lifetime PD**를 호황/중립/불황 시나리오별로 산출하는 시스템.

## 디렉토리 구조

```
LifetimePD/
├── main.py                          # 7단계 파이프라인 오케스트레이터
├── config.yaml                      # API 키, 모형 파라미터, 시나리오 설정
├── data/
│   ├── transition_matrices.py       # 한국 3사 전이행렬 (builtin + CSV 로더)
│   └── macro_data.py                # BOK ECOS API 거시경제변수 6종 수집
├── models/
│   ├── credit_cycle.py              # Belkin & Suchower Zt 추정 (WLS)
│   ├── vasicek.py                   # Vasicek 조건부 PD/전이행렬
│   └── macro_model.py               # Zt~거시 OLS 회귀 (Stepwise AIC)
├── scenarios/
│   └── scenario_engine.py           # 호황/중립/불황 시나리오 + Mean-reversion
├── projection/
│   └── lifetime_pd.py               # 50년 누적/한계 PD + 확률가중평균
├── validation/
│   └── statistical_tests.py         # ADF, Ljung-Box, R², ARCH, PD 성질 검증
├── output/
│   └── visualizer.py                # 차트 7종 + 요약 테이블
├── results/                         # 생성 결과물 (PNG, CSV)
├── doc/                             # 원본 자료 (3사 PDF, ECOS API 명세)
│   ├── ECOS_API/                    # 한은 API 개발명세서 + 통계표
│   └── *.pdf                        # 3사 전이행렬 원본 PDF
├── docs/
│   ├── methodology.md               # 이론 방법론 상세 (9개 섹션)
│   └── devlog/                      # 세션별 작업 기록
└── .agent/.agents/                  # AI 에이전트 설정
```

## 핵심 모듈

| 모듈 | 역할 | 의존성 |
|------|------|--------|
| `data/transition_matrices.py` | 전이행렬 로딩 + TTC 산출 | numpy, scipy |
| `data/macro_data.py` | ECOS API 6종 거시변수 수집 | requests, pandas |
| `models/credit_cycle.py` | Belkin-Suchower Zt 추정 (WLS) | numpy, scipy.optimize |
| `models/vasicek.py` | 조건부 PD/전이행렬 | numpy, scipy.stats |
| `models/macro_model.py` | Zt~거시 OLS + Stepwise AIC | statsmodels |
| `scenarios/scenario_engine.py` | 3-시나리오 Zt 경로 + Mean-reversion | numpy |
| `projection/lifetime_pd.py` | 50년 행렬곱 PD + 가중평균 | numpy |
| `validation/statistical_tests.py` | 8개 통계 검정 | statsmodels, scipy |
| `output/visualizer.py` | 차트 7종 | matplotlib |

## 데이터 흐름

```
전이행렬(26yr) → TTC 평균 → Φ⁻¹ 임계값 → WLS Zt 추정
                                            ↓
ECOS API 거시 6변수 ──→ Stepwise OLS ──→ Zt~거시 회귀
                                            ↓
시나리오(3종) × PIT→MR→TTC 수렴 → 조건부 TM → 행렬곱 → PD term structure
```

## 실행 방법

```powershell
# ECOS API 사용 (기본)
C:\ProgramData\miniforge3\envs\quant\python.exe main.py

# Fallback 데이터 사용
C:\ProgramData\miniforge3\envs\quant\python.exe main.py --no-api

# ρ 동시 추정
C:\ProgramData\miniforge3\envs\quant\python.exe main.py --estimate-rho
```

## 미완료 사항 (다음 작업자 참고)

1. **#293 거시 시나리오 고도화** — IMF WEO/KDI 전망치를 직접 입력하여 시나리오 정밀화
2. **GDP 성장률 코드** — 현재 `902Y015/KOR` (국제 비교 통계) 사용. 한은 국민계정 직접 통계표코드 발견 시 교체 권장
3. **전처리 파이프라인 개선** — PD 플로어 적용, CCC B↔D 보간 방식 개선 (docs/methodology.md §2.0 참조)
