docs: session close — devlog, known-issues, verification xlsx
- known-issues: Zt sign convention bug, ECOS coverage - devlog: 2026-03-11 (5 items) - results: pipeline_verification.xlsx, transition_matrix_audit.xlsx
This commit is contained in:
@@ -57,3 +57,15 @@
|
|||||||
- **원인**: pandas 2.x에서 `fillna(method=)` 인자 deprecated
|
- **원인**: pandas 2.x에서 `fillna(method=)` 인자 deprecated
|
||||||
- **해결**: `df.ffill().bfill()` 메서드 체인으로 대체
|
- **해결**: `df.ffill().bfill()` 메서드 체인으로 대체
|
||||||
- **주의**: pandas 2.x 이상 사용 시 `fillna(method=)` 전면 금지
|
- **주의**: pandas 2.x 이상 사용 시 `fillna(method=)` 전면 금지
|
||||||
|
|
||||||
|
### [2026-03-11] Belkin Zt 부호 규칙 — 전체 파이프라인 부호 반전 버그
|
||||||
|
- **증상**: Zt 1998=+2.12 (IMF 위기인데 양수), 2006=-1.53 (호황인데 음수)
|
||||||
|
- **원인**: Belkin 논문 원본: Z>0=호황(PD↓). 코드에서 임계값이 오름차순(AAA→D)인데 수식에 `(d - √ρ·Z)`로 구현하여 부호 반전. 올바른 수식은 `(d + √ρ·Z)`
|
||||||
|
- **해결**: `credit_cycle.py`, `vasicek.py`, `transition_matrices.py` 3파일 모두 `(d - sqrt_rho * z)` → `(d + sqrt_rho * z)` 수정
|
||||||
|
- **주의**: vasicek.py의 `conditional_pd()`는 Basel convention (Z↑=불황)으로 별도 체계. 조건부 전이행렬은 Belkin convention (Z↑=호황). 두 규약이 코드에 공존하므로 반드시 docstring 확인 후 사용
|
||||||
|
|
||||||
|
### [2026-03-11] ECOS 거시변수 — fallback 커버리지 부족
|
||||||
|
- **증상**: 기존 11개 변수만으로는 Zt 설명력 부족 (R² < 0.6)
|
||||||
|
- **원인**: 한국 경제 특수성(유가의존, 수출주도, 부동산 영향 등) 미반영
|
||||||
|
- **해결**: 31개 변수로 확장 (KOSPI, OIL_PRICE, USDKRW, DISHONOR_RATE, HOUSING_PRICE, BSI_MANUF 등). `data/ecos_fetcher.py` + `data/cache/macro_ecos.csv` 캐싱 구조
|
||||||
|
- **주의**: fallback 데이터는 대략적 수치. 정밀 분석 시 ECOS API 실제 호출 필요 (`--force` 옵션)
|
||||||
|
|||||||
9
docs/devlog/2026-03-11.md
Normal file
9
docs/devlog/2026-03-11.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Devlog — 2026-03-11
|
||||||
|
|
||||||
|
| # | 시간 | 작업 | 커밋 | 상태 |
|
||||||
|
|---|------|------|------|------|
|
||||||
|
| 1 | 07:19 | Zt 부호 규칙 확인 (Belkin Z>0=호황) | `1a4cc87` | ✅ |
|
||||||
|
| 2 | 07:26 | 전체 파이프라인 부호 수정 (credit_cycle + vasicek + TM) | `d61c538` | ✅ |
|
||||||
|
| 3 | 07:42 | ECOS 변수 21→31개 확장 + CSV 캐싱 | `92ce84a`, `49c7661` | ✅ |
|
||||||
|
| 4 | 07:52 | 31변수 거시경제 재분석 v3 (R²=0.646) | `cc55acc` | ✅ |
|
||||||
|
| 5 | 08:00 | 파이프라인 전단계 검증 엑셀 생성 (10시트) | `0e1e0e5` | ✅ |
|
||||||
29
docs/devlog/entries/20260311-001.md
Normal file
29
docs/devlog/entries/20260311-001.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Zt 부호 수정 + 31변수 확장 재분석
|
||||||
|
|
||||||
|
- **시간**: 2026-03-11 07:19~08:03
|
||||||
|
- **Commits**: `d61c538`, `92ce84a`, `49c7661`, `cc55acc`, `0e1e0e5`
|
||||||
|
|
||||||
|
## 결정 사항
|
||||||
|
|
||||||
|
### Zt 부호 규약 (Belkin vs Basel)
|
||||||
|
|
||||||
|
Belkin & Suchower (1998) 원논문 확인 결과:
|
||||||
|
- **Z > 0 = 호황** (PD 하락, 상향 전이 증가)
|
||||||
|
- **Z < 0 = 불황** (PD 상승, 하향 전이/부도 증가)
|
||||||
|
|
||||||
|
코드가 `(d - √ρ·Z)` → `(d + √ρ·Z)`로 수정됨 (3파일).
|
||||||
|
단, `vasicek.py`의 `conditional_pd()`는 Basel convention (Z↑=불황)으로 별도 체계.
|
||||||
|
이 두 규약이 코드에 공존하며, 각 함수 docstring에 명시.
|
||||||
|
|
||||||
|
### 거시변수 선정 (31→80+)
|
||||||
|
|
||||||
|
- 기존 11개 → 31개 원본 확장
|
||||||
|
- 금리: DIFF만, 지수: LEVEL+DIFF+LAG1, 금액: DIFF+PCT
|
||||||
|
- CREDIT_SPREAD_LAG1이 모든 Top 10 조합에 등장 → 핵심 앵커 변수
|
||||||
|
- 최적: CREDIT_SPREAD_LAG1 + USDKRW + HOUSING_PRICE (R²=0.646)
|
||||||
|
|
||||||
|
## 미완료
|
||||||
|
|
||||||
|
- [ ] ECOS API 실제 호출 구현 (현재 fallback만 사용)
|
||||||
|
- [ ] R²≥0.7 달성을 위한 추가 변수 탐색 (비선형 변환 등)
|
||||||
|
- [ ] 최적 모형을 main.py 파이프라인에 반영
|
||||||
BIN
results/pipeline_verification.xlsx
Normal file
BIN
results/pipeline_verification.xlsx
Normal file
Binary file not shown.
BIN
results/transition_matrix_audit.xlsx
Normal file
BIN
results/transition_matrix_audit.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user