# 001_numberBridgeMatching

## 목적
DART 공시 재무제표에서 계정명이 연도마다 달라지는 문제를 해결하기 위해,
당기/전기 숫자 브릿지 매칭 방식의 실현 가능성을 검증한다.

## 핵심 아이디어
- N년 보고서의 "전기" 숫자 = N-1년 보고서의 "당기" 숫자
- 숫자가 일치하면 계정명이 달라도 동일 계정으로 매핑
- 최신 연도 기준으로 과거 방향으로 체이닝

## 파일 목록
| 파일 | 설명 | 상태 |
|------|------|------|
| 001_bridgeTest.py | 삼성전자 단독, 1차 숫자 브릿지 매칭 | 완료 |
| 002_bridgeInterpolation.py | 5개 기업, 3단계 보간 (숫자+전전기+순서) | 완료 |
| 003_breakpointDetection.py | 전환점 자동 탐지 + 핵심 계정 브릿지 | 완료 |
| 004_fullPipeline.py | 통합 파이프라인: 기재정정 포함 + 재작성 보정 + 전환점 분리 | 완료 |
| 005_falseMatchVerification.py | 오매칭 검증: 이름일치율 + 전전기 교차검증 + 유형분류 | 완료 |
| 006_fullScaleTest.py | 267개 기업 전체 스케일 테스트 (004 파이프라인 적용) | 완료 |

## 결과 요약

### 001: 기본 브릿지 (삼성전자)
- 매칭률 98.6%, 미매칭 1.4%

### 002: 3단계 보간 (5개 기업)
| 기업 | 매칭률 | 비고 |
|------|--------|------|
| 삼성전자 | 99.4% | 연속 연도 거의 100% |
| 동화약품 | 95.0% | 2021↔2020 대변경 |
| KR모터스 | 94.6% | 연도 갭에서 하락 |
| SK하이닉스 | 92.0% | K-GAAP/K-IFRS 전환 |
| 유진증권 | 96.2% | 금융업 계정 변경 |
| **전체** | **96.0%** | |

### 003: 전환점 탐지 + 핵심 계정 브릿지
| 기업 | 구간 수 | 전환점 | 구간 내 매칭률 |
|------|---------|--------|---------------|
| 삼성전자 | 1 | 없음 | 98.6% |
| 동화약품 | 3 | 2021↔2020, 2019↔2016 | 96.8% (최대구간) |
| KR모터스 | 5 | 매년 전환 | 100% (2019~2018) |
| SK하이닉스 | 3 | 2022↔2017 (갭), 2017↔1999 (갭) | 100% (2025~2022) |
| 유진증권 | 1 | 없음 | 93.9% |

### 004: 통합 파이프라인 (K-IFRS 2011+, 임계값 85%)
**구간 내 전체 매칭률: 98.0% (1380/1408)**

| 기업 | 최대 구간 | 매칭률 | 전환점 | 비고 |
|------|-----------|--------|--------|------|
| 삼성전자 | 2025~2011 (15년) | 99.0% | 0 | 전환점 없이 전 기간 단일 구간 |
| SK하이닉스 | 2025~2021 (5년) | 99.2% | 2 | 기재정정 포함으로 연도 커버리지 확보 |
| 유진증권 | 2023~2016 (8년) | 99.1% | 1 | 2024 계정 재편으로 분리 |
| 동화약품 | 2025~2021 (5년) | 98.0% | 1 | 중소기업 구조 변경 |
| KR모터스 | 2022~2018 (5년) | 100% | 3 | 매년 전환점, 안정 구간은 100% |

### 005: 오매칭 검증 (1차 정확 매칭 신뢰도)
**1차 정확 매칭 신뢰도: 99.93% (진짜 오매칭 1건/1,465건)**

| 검증 방법 | 결과 | 비고 |
|-----------|------|------|
| 이름 일치율 (0.8+) | 98.5% (1,443/1,465) | 이름 완전일치만 98.3% |
| 전전기 교차 검증 | 99.8% (1,194/1,196) | 모순 2건 (유진증권) |
| 의심 오매칭 (<0.3) | 4건 (0.27%) | 심층분석 결과 1건만 진짜 |

의심 오매칭 4건 심층 분석:
| 쌍 | 기업 | 연도 | 판정 | 사유 |
|----|------|------|------|------|
| 기타자본구성요소↔자기주식 | 동화약품 | 2024↔2023 | 정당 (명칭변경) | N-1년에 동명 계정 없음 |
| [소유주지분]↔자본총계 | 동화약품 | 2019↔2018 | 정당 (동일개념) | 비지배지분 없는 회사 |
| 관계기업투자↔지분법적용투자 | SK하이닉스 | - | 정당 (명칭변경) | K-IFRS 용어 변경 |
| 지배기업소유주지분↔총포괄손익 | 동화약품 | 2019↔2018 | **오매칭** | 우연한 금액 일치 |

### 006: 267개 기업 전체 스케일 테스트 (파서 개선 후)
**구간 내 통합 매칭률: 97.7% (170개 구간)**

데이터 현황:
| 구분 | 수 | 비고 |
|------|-----|------|
| 총 파일 | 267 | |
| 1년치만 (분석 불가) | 93 | 사업보고서 1건만 수집된 기업 |
| 추출 실패 | 16 | 소규모기업 생략(3) + 데이터 미수집(10) + 기타(3) |
| **분석 완료** | **158** | 파서 개선으로 132→158 (+26) |

구간 내 매칭률 (전환점 분리 후):
| 구간 매칭률 | 구간 수 | 비율 |
|-------------|---------|------|
| 99%+ | 87 | 51.2% |
| 95%+ | 142 | 83.5% |
| 90%+ | 161 | 94.7% |

연속 연도 매칭률 분포 (156개 기업):
| 범위 | 기업 수 | 비율 |
|------|---------|------|
| 100% | 43 | 27.6% |
| 95~100% | 84 | 53.8% |
| 90~95% | 20 | 12.8% |
| 80~90% | 16 | 10.3% |
| < 80% | 36 | 23.1% |

전환점: 88개 기업(55.7%) 전환점 없음, 70개(44.3%) 전환점 있음

## 핵심 발견

### 001~003에서의 발견
1. **연도 갭** (필터링 누락): SK하이닉스 2022↔2017, 동화약품 2019↔2016
   - 실제 원인: 원본 사업보고서 없이 기재정정본만 존재하는 연도
   - 기재정정본도 내용은 동일하므로 포함해야 함
2. **실제 체계 변경**: 동화약품 2021↔2020, KR모터스 매년
   - 중소기업은 계정 구조가 빈번하게 변경됨
3. **회계기준 전환**: SK하이닉스 2017↔1999 (K-GAAP→K-IFRS)
   - 계정 체계 자체가 완전히 다름

### 004에서의 추가 발견

#### 재작성(Restatement)
- N년 보고서의 전기 수치 ≠ N-1년 보고서의 당기 수치 (소급 수정)
- SK하이닉스 2023↔2022: 자산총계 96,346,525 vs 96,386,474 (차이 0.04%)
- **구간 내 미매칭의 48.4%가 재작성 원인**
- 해결: 이름유사도 0.8+ 금액차이 5% 이내로 보정

#### 연결 vs 별도 재무제표
- 2008년 이전: 별도 재무제표만 공시
- 2008~2014년: "III. 재무에 관한 사항" 안에 연결+별도 모두 포함
- 2015년 이후: "요약재무정보" 전용 섹션에 연결+별도 포함
- **연결 우선 추출 필수**, 없으면 별도 사용

#### 미매칭 원인 분류 (구간 내)
| 원인 | 비율 | 해결 여부 |
|------|------|-----------|
| 재작성 (같은 이름, 금액 미세 차이) | 48.4% | 해결 (이름유사+금액근사) |
| 계정 신설/소멸 | 37.1% | 불가피 |
| EPS 동일 금액 충돌 | 9.7% | 해결 (이름 강제 매칭) |
| 비재무 항목 (회사수 등) | 4.8% | 해결 (이름 강제 매칭) |

#### 전환점 임계값 트레이드오프
| 임계값 | 구간 내 매칭률 | 전환점 수 |
|--------|---------------|-----------|
| 70% | 96.3% | 3 |
| 85% | **98.0%** | 7 |
| 90% | 98.8% | 10 |
| 95% | 99.6% | 15 |

### 최종 매칭 파이프라인 (4단계)
1. **1차 정확 매칭**: 전기 숫자 == 전년 당기 숫자 (차이 < 0.5)
2. **2차 재작성 보정**: 이름 유사도 0.8+ 금액 차이 5% 이내
3. **3차 명칭변경 보정**: 이름 유사도 0.6+ 금액 차이 5% 이내
4. **4차 특수항목**: EPS 동일금액, 회사수 등 이름 강제 매칭

### 실무 전략
- **대기업 (삼성, SK 등)**: 전환점 없이 15년+ 단일 구간, 99%+ 매칭
- **중소기업 (KR모터스 등)**: 전환점 빈발, 안정 구간 내 100% 가능
- **금융업 (유진증권)**: 계정 재편 주기가 있음, 재편 전후 분리 필요
- **전환점에서**: 핵심 계정(자산총계, 부채총계 등) 브릿지로 최소 연속성 유지
- **K-GAAP→K-IFRS 전환**: 별도 체계로 분리 (2011년 기점)

### 005에서의 추가 발견

#### 숫자 브릿지 오매칭 원인
- **진짜 오매칭은 극히 드물다**: 1,465쌍 중 1건 (0.07%)
- 우연한 금액 일치는 계정 수(~30개)와 금액 범위의 다양성으로 인해 확률적으로 매우 낮음
- "의심 오매칭"으로 분류된 4건 중 3건은 실제로는 명칭변경/동일개념

#### 오매칭이 발생하는 조건
- 계정 체계가 변경되는 연도 경계 (전환점 근처)
- 포괄손익 귀속분과 총포괄손익처럼 동일 금액이 되는 구조적 관계의 계정
- 금액 범위와 무관 (제로/소액에서 더 많이 발생하지 않음)

#### 이름 유사도의 보조 지표 가치
- 1차 매칭 후 이름 유사도 0.3 미만을 필터링하면 오매칭 후보를 4건으로 좁힐 수 있음
- 추가로 "N-1년에 동명 계정 존재 여부" 확인으로 명칭변경 vs 오매칭 구분 가능

### 006에서의 추가 발견

#### 스케일 테스트 결과
- **구간 내 매칭률 97.7%는 158개 기업에서도 유지** (5개 → 158개 스케일 업)
- 구간의 94.7%가 90%+ 매칭률 달성
- 하지만 **연속 연도 기준**으로는 23.1%의 기업이 80% 미만 → 전환점 분리가 필수

#### 파서 개선 (42개 → 16개 실패)
- "자 산 총 계" 공백 정규화, "자산합계"/"자산총액" 지원
- 헤더에 "년" 포함 패턴 인식 ("2024년" 등)
- 단위행 헤더 스킵 + 테이블 0개 시 직접 파싱 폴백
- 단위 정규화 (원/천원/백만원 → 백만원 통일)

#### 남은 추출 실패 (16개)
| 원인 | 수 | 해결 가능 |
|------|-----|-----------|
| 사업보고서 미수집 (no_report) | 10 | 데이터 수집 확대 필요 |
| 소규모기업 요약재무 생략 | 3 | 불가 (법적 면제) |
| 기타 형식 (완전 다른 구조) | 3 | 케이스별 대응 필요 |

#### 대규모 재작성 (연결 범위 변경)
- 028260: 연결 회사수 108→124, 자산총계 20% 차이
- 5% 이내 재작성 보정으로 해결 불가
- **전환점으로 분리하는 것이 올바른 처리**

### 패키지화 판정

| 항목 | 결과 | 판정 |
|------|------|------|
| 매칭 알고리즘 신뢰도 | 구간 내 97.7%, 오매칭 0.07% | **충분** |
| 스케일 검증 | 158개 기업에서 동일 성능 | **충분** |
| 요약재무 파서 커버리지 | 174개 중 158개 (91%) | **충분** |
| 단위 정규화 | 구현 완료 (원/천원/백만원) | **충분** |
| 엣지케이스 | 대규모 재작성은 전환점 처리로 대응 | **충분** |

→ **패키지화 가능. 매칭 알고리즘 + 파서 모두 실전 투입 수준.**

## 현황
- 2026-03-06: 실험 001, 002, 003 완료
- 2026-03-06: SK하이닉스 연도 갭 원인 규명 (기재정정본 필터링 문제)
- 2026-03-06: 실험 004 완료 — 통합 파이프라인 구간 내 98.0% 달성
- 2026-03-06: 실험 005 완료 — 오매칭 검증, 진짜 오매칭률 0.07% (1/1,465)
- 2026-03-06: 실험 006 완료 — 267개 전체 스케일 테스트
- 2026-03-06: 파서 개선 — 공백 정규화, 단위 정규화, 폴백 파싱 (132→158개, +26)
- 2026-03-06: 패키지화 판정 — 충분. 구간 내 97.7%, 파서 커버리지 91%
