feat(data): parse 3-agency PDF transition matrices to CSV #task-290

- New: data/parse_pdf_matrices.py (KR/NICE/SCI PDF parser)
  - KR: text-based parser (space-separated numbers + dashes)
  - NICE: text-based parser (clean numeric format)
  - SCI: pdfplumber table extraction (column-position-aware)
  - WR redistribution, B이하→B mapping, CCC extrapolation from PD patterns
- Modified: data/transition_matrices.py (added source='real' loader)
- Modified: config.yaml (data.transition_source: 'real')
- Modified: main.py (reads transition source from config)
- Output: 112 CSV files (KR/NICE/SCI/AVG × 28 years)
This commit is contained in:
Variet Agent
2026-03-11 01:07:27 +09:00
parent ebdc6b805b
commit 8af743e6f3
116 changed files with 1714 additions and 3 deletions

10
main.py
View File

@@ -98,12 +98,16 @@ def main():
print("=" * 70)
# 전이행렬
logger.info("전이행렬 로딩 중 (내장 데이터)...")
transition_matrices = load_transition_matrices("builtin")
data_config = config.get("data", {})
tm_source = data_config.get("transition_source", "builtin")
tm_dir = data_config.get("transition_dir", None)
logger.info(f"전이행렬 로딩 중 (source={tm_source})...")
transition_matrices = load_transition_matrices(tm_source, data_dir=tm_dir)
ttc_matrix = compute_ttc_matrix(transition_matrices)
default_rates = get_default_rates(transition_matrices)
print(f"\n 전이행렬: {len(transition_matrices)}개 연도 ({min(transition_matrices.keys())}~{max(transition_matrices.keys())})")
print(f"\n 전이행렬: {len(transition_matrices)}개 연도 ({min(transition_matrices.keys())}~{max(transition_matrices.keys())})"
f" [source={tm_source}]")
print(display_matrix(ttc_matrix, "TTC 전이행렬 (장기 평균)"))
# 거시경제변수