반응형
티커는 짧고 익숙해서 기본 키처럼 쓰기 쉽다. 문제는 티커가 재사용될 수 있다는 점이다. 한 기업이 상장폐지된 뒤 같은 코드가 다른 기업에 붙으면, 오래된 가격과 새 회사 정보가 한 줄로 이어지는 사고가 난다.

티커만으로 조인하면 생기는 일
| 상황 | 겉보기 | 실제 위험 |
|---|---|---|
| 상장폐지 후 재사용 | 같은 티커 | 두 기업의 가격이 이어짐 |
| 거래소 이전 | 같은 티커 | 시장 기준이 달라짐 |
| 클래스 변경 | 비슷한 코드 | 보통주와 우선주가 섞임 |
| 합병 이후 코드 변경 | 새 티커 | 과거 이력 연결이 끊김 |
식별자는 기간을 포함해야 한다
security_identity = (ticker, exchange_id, valid_from, valid_to)
join_condition:
price.date >= valid_from
and price.date < coalesce(valid_to, '9999-12-31')
장기 데이터의 원칙
화면 검색은 티커로 해도 된다. 저장과 조인은 security_id로 해야 한다. 이 둘을 섞으면 재사용 문제를 나중에 찾기 어렵다.
매일 돌릴 점검
- 새로 들어온 티커가 과거에 존재했는지 확인한다.
- 상장폐지 종목이 active universe에 남아 있는지 본다.
- 티커 변경 이벤트가 가격, 재무, 기업 정보 테이블에 모두 반영됐는지 비교한다.
실전 적용 포인트
티커는 사람이 읽기 좋은 기호지만 장기 데이터의 영구 식별자로 쓰기에는 약하다. 같은 티커가 다른 시점에 재사용될 수 있고, 거래소 이전이나 합병 이후에는 과거 가격과 현재 회사 정보가 잘못 이어질 수 있다.
따라서 가격, 재무, 기업 이벤트를 조인할 때는 티커와 함께 거래소, 유효기간, 내부 보안 식별자를 같이 써야 한다. 이 기준을 정해두면 상장폐지 종목까지 포함하는 백테스트에서도 데이터가 덜 흔들린다.
- 티커 단독 조인을 피한다.
- valid_from과 valid_to를 매핑 테이블에 포함한다.
- 상장폐지 종목을 active universe에서 따로 관리한다.
함께 보면 좋은 글
반응형
'Data Engineering' 카테고리의 다른 글
| 주기성 재무 데이터 API 설계: 연간, 분기, YTD, LTM 구분 (0) | 2026.06.14 |
|---|---|
| 티커 변경 이벤트 처리: 기업 이벤트와 가격 시계열 연결 (0) | 2026.06.14 |
| OHLCV 결측치 보정 기준: 가격 데이터 빈칸을 다룰 때 (0) | 2026.06.14 |
| 분기 재무 데이터 구축 방법: 제출일, 수정 데이터, 재처리 기준 (0) | 2026.06.14 |
| 외부 금융 데이터 소스 전환 검토 기준: 범위, 품질, 비용 (0) | 2026.06.14 |
