Q

PRIVATE NAVIGATION MODE

ML4T_S 탭 잠금 해제

패스워드를 확인하면 이 브라우저에서 ML4T_S 탭과 검색 결과를 표시합니다.

STUDY SEARCH

학습 자료 검색

제목과 설명, 키워드, 학습 본문에서 찾습니다.

검색 범위

검색어를 입력해 주세요.

SEARCH THE NOTEBOOK

찾고 싶은 금융·통계·전략 개념을 입력해 보세요.

CHAPTER 02 / SECTION 03

2.3 데이터 공급원을 고르는 실사 기준

시점 오류와 생존 편향을 찾아내고, 공급자의 품질·이용 권리·운영 조건을 점검합니다.

2장. The Financial Data Universe(금융 데이터의 전체 지도)초급 학습 노트

파일이 열려도 데이터가 맞는지 확인한다

지우는 매일 아침 후보 주식의 시가·고가·저가·종가·거래량을 받는다. 공급자가 지연된 종가나 상장폐지 종목을 빠뜨리면, 모델은 빠진 이유를 모른 채 남은 행으로 점수를 매긴다. 주문 전에 어느 오류가 생기는지 다섯 기준으로 나눠 살핀다.

기준확인할 기록이상이 있으면
Timeliness(적시성)공개 시각과 파일 도착 시각, 전략의 주문 마감늦게 도착한 값은 당시 입력에서 뺀다.
Completeness(완전성)상장 기간과 거래일 달력 대비 누락된 종목·날짜·열휴장, 무체결, 공급 누락을 구분한다.
Accuracy(정확성)공식 체결·공시 또는 독립 표본과 일치 여부통화와 단위, 원시·조정 기준을 맞춘 뒤 비교한다.
Consistency(일관성)날짜 형식, 열 뜻, 조정 기준이 시기별로 같은지정의가 바뀐 경계와 영향받은 행을 남긴다.
Validity(유효성)시각 순서, 음수 거래량, 종가가 고가와 저가 사이에 드는지위반 행을 표시하고 발생 조건을 조사한다.

ETF 100개 표본에서는 약 0.1%에 해당하는 473개 봉이 가격 범위 검사를 위반했다. 시가·고가·저가·종가가 분할과 배당에 대해 따로 조정되면서 생긴 사례다. 원시 봉과 조정 봉을 대조하면 데이터 공급 오류와 조정 과정의 영향을 구분할 수 있다. 검사에 통과한 행도 당시 공개됐는지, 당시의 종목군에 속했는지는 따로 확인한다.

정정된 값과 당시 알 수 있던 값을 분리한다

A사는 12월 말에 분기를 마감하고 2월 15일에 매출 95억 원을 발표했다. 5월 20일에는 같은 분기 값을 98억 원으로 정정했다. 2월 1일 주문에는 이 분기 값이 없고, 3월 1일에는 95억 원, 6월 1일에는 98억 원을 사용할 수 있다.

분기 마감·공개와 주문 가능 시점
  1. 12월 31일
    분기 마감. 아직 해당 분기 매출은 공개되지 않았다.
  2. 2월 1일 주문
    해당 분기 값은 사용하지 않는다.
  3. 2월 15일 발표 → 3월 1일 주문
    95억 원 버전으로 판단한다.
  4. 5월 20일 정정 → 6월 1일 주문
    98억 원 버전으로 판단한다.

분기 마감과 첫 발표 사이에 95억 원을 쓰거나, 3월 주문에 98억 원을 쓰면 미래 정보가 들어간다.

Point-in-Time Correctness(시점 일치 정확성, PIT)는 판단 당시 알 수 있었던 값을 쓰는 원칙이다. Event Time(사건 시각)은 경제 활동의 시각, Reference Period(참조 기간)는 매출이 설명하는 분기, Knowledge Time(정보 공개 시각)은 각 버전이 알려진 시각이다. As-of Time(조회 기준 시각)은 연구자가 복원할 주문 판단 시각이다. 미래 버전이 섞이면 Look-ahead Bias(미래 정보 편향)가 생긴다.

Bitemporal Storage(이중 시간 저장)는 관측 대상 기간과 정보 이용 가능 시각을 함께 남긴다. 지우는 참조 기간, 기업 식별자, 공시 접수번호, 버전, 공개 시각을 저장한다. 데이터 전달이 더 늦다면 실제 전략이 받을 수 있는 시각도 따로 남긴다. 주문 시각 이하에 이용 가능한 행만 남기고, 필요한 기간의 가장 최근 버전을 선택한다. 해당 기간 값이 없으면 결측으로 둔다. 공시가 늦는 자료에서 마감일과 공개일 간격이 0일인 기록이 몰려 있다면, 실제 즉시 공개인지 공급자가 발표 시각을 마감일로 채웠는지 원본과 대조한다. 평균 지연을 임의로 더해 각 기록의 공개를 확정할 수는 없다.

검증 대상판단 시점의 조건실패했을 때
값그 버전이 이미 이용 가능했다.정정 수치가 과거에 들어간다.
종목군그날의 편입·상장 상태로 후보를 정한다.오늘까지 남은 종목만 과거에 남는다.
식별자연결이 당시 알려졌고 적용 기간 안이다.같은 종목 기호를 쓰는 다른 기업과 연결된다.

사라진 종목을 빼면 평균이 바뀐다

같은 금액을 넣은 두 종목 중 A는 20% 오르고 B는 상장폐지까지 포함해 60% 내렸다고 하자. 두 종목의 수익률을 더해 2로 나누면 −20%다. 오늘도 거래되는 A만 과거 표본에 남기면 20%다. B가 합병으로 40%를 벌고 사라졌다면 둘의 평균은 30%이고 A만 남긴 결과는 여전히 20%다. Survivorship Bias(생존 편향)는 나중에 남았다는 조건으로 과거 종목군을 다시 골랐을 때 생기며, 빠진 종목이 어떤 성과를 냈는지에 따라 방향이 바뀐다.

2014–2018년 미국 주식 비교에서는 동일 비중으로 생존 종목만 담은 계좌와 당시 종목군을 유지한 계좌의 기말 성과를 비교했다. 시뮬레이션 표본 3,095개 중 752개가 이탈했다. 관측되지 않는 마지막 수익률에는 퇴출 사유별 가정을 넣었다. 한 시나리오에서는 요건 미달 26%에 −60%, 인수 65%에 +25%, 기타 9%에 0%를 적용하고 무작위 배정을 1,000번 반복했다. 기말 시점의 수익률 차이는 생존 종목 수익률에서 전체 종목군 수익률을 뺀 값이다.

퇴출 가정별 생존 종목의 기말 수익률 과대 추정
관측된 퇴출 구성에 맞춘 가정8%p
상승장 가정3.5%p
스트레스 가정15.3%p
막대는 시나리오별 중앙값이다. 시뮬레이션에서 손실 퇴출 비중이 늘수록 생존 종목만 남긴 결과와의 차이가 커졌다.

인수 기대가 상장폐지 전에 가격에 반영됐다면 마지막 날에 인수 프리미엄을 한 번 더 넣는 셈이 될 수 있다. 결과는 퇴출 수익률 가정에 민감하다. 지우는 과거 편입·제외 기록으로 후보군을 만들고, 상장폐지의 실제 최종 지급액이나 검증 가능한 수익률을 연결한다. 값이 없으면 가정과 민감도를 따로 보여 준다.

주식 수가 바뀌면 주당 가격만으로 손익을 읽기 어렵다

지우가 70,000원짜리 한 주를 들고 있는데 일곱 주로 분할됐다고 하자. 각 주가 10,000원이라면 보유 가치는 일곱 주에 10,000원을 곱한 70,000원이다. 원시 주당 가격의 하락률은 60,000원을 70,000원으로 나눈 약 85.7%지만, 이 가정에서 보유 손실은 0원이다.

7대 1 분할 전후 원시 가격과 분할 조정 가격
주당 가격(만 원)
02468분할 전분할일다음 날
원시 가격분할 후 주식 수 기준 조정 가격
분할일의 계단은 주식 수 변경이다. 다음 날 1만 원에서 1.1만 원으로 오른 움직임은 두 계열에 남는다.

Corporate Actions(기업행동)에는 주식분할, 배당, 기업 분사, 합병, 신주인수권 등이 있다. 같은 주식 수 기준으로 맞춘 가격은 분할 때문에 생긴 단절을 없앤다. 배당을 포함하는 Total Return(총수익)에는 현금 수령이나 재투자 규칙도 필요하다. 애플의 1980–2018년 예에서는 네 차례 분할과 배당을 반영한 기말 가치가 시작 대비 약 398배였고 원시 가격만 본 배수는 5.9배였다. 두 배수를 나누면 약 68배 차이다. 누적 그래프의 세로축이 로그 축이면 같은 높이 차이는 같은 원화 차이 대신 같은 배수를 나타낸다.

지우는 원시 가격과 조정 계수, 기업행동의 시행일과 공개 시각을 남긴다. 최근 시점 기준으로 과거 전체를 다시 조정한 계열은 장기 성과를 읽는 데 편하다. 과거의 절대 가격 문턱으로 종목을 고를 때는 미래 분할이 과거 가격 수준을 바꿀 수 있으므로 당시 기준을 재현한다. 분할일에 주식 수와 가격이 함께 바뀌는지, 배당·분사 처리 규칙이 공급자마다 같은지도 검사한다.

같은 종목 기호가 다른 기업을 가리킬 수 있다

2015년의 XYZ가 상장폐지되고 2020년에 다른 기업이 XYZ를 쓴다면, 기호만 일치시킨 연결은 오류 없이 실행되어도 2015년 신호에 엉뚱한 수익률을 붙인다. Identifier Integrity(식별자 무결성)를 지키려면 기업과 개별 증권의 키를 나누고, 기호와 키의 연결에 적용 시작일과 종료일을 붙인다. 합병이나 이중 상장에서는 발행 기업이 같아도 거래 증권이 다를 수 있다.

지우는 먼저 주문 시각에 알려진 연결을 남긴다. 그중 적용 시작일이 주문 시각 이하이고 종료일보다 주문이 이른 연결을 고른다. 한 입력이 여러 증권에 붙거나 아무 곳에도 붙지 않으면 검토 대상으로 분리한다. 공급자의 영구 식별자나 International Securities Identification Number(국제증권식별번호, ISIN) 등을 쓸 때도 공급자 사이의 대응표와 유효 기간을 확인한다.

공급자 비용을 줄일 때 어떤 검증을 떠안는가

일별 가격으로 분석을 시험하는 지우는 무료 자료로 작은 표본을 만들 수 있다. 실제로 과거 지수 구성, 장중 세부 메시지와 상장폐지 지급액이 필요해지면 수집 범위와 복원 비용이 커진다. 이용료에 더해 역사 길이, 장중 해상도, 지연, 방법 공개, 재배포 권한을 비교한다.

공급 범위강점과 확인점맞는 용도
무료·공개접근이 쉽다. 정정·퇴출 이력은 제한적이며 공개 거시 자료의 발표 버전처럼 예외도 있다.학습, 초기 검증, 독립 대조
개인 연구용 API거래가 활발한 시장에 편리하다. 시점별 값이나 종목군 이력은 상품마다 다르다.개인 연구와 자동 수집
기관용긴 이력과 문서화, 시점·퇴출 자료를 계약으로 받을 수 있다. 필요한 필드의 제공 여부는 따로 확인한다.운영, 긴 표본, 감사 요구

수집·버전 관리, 세션 경계, 계약 교체, 전략용 변수는 연구자가 정의하고 검사한다. 긴 조정 이력, 퇴출 이력, 식별자 대응표처럼 만드는 데 오래 걸리고 여러 전략이 공유하는 자료는 구매 비용과 직접 유지 비용을 비교한다. 외부 대응표에도 합병과 기호 재사용 표본을 넣어 검사한다.

데이터 품질과 이용 권리, 공급 중단을 함께 확인한다

  1. 품질. 실제 시작일, 종목 범위와 배송 주기를 받아 보고, 정정 이전 버전을 조회한다. 분할·배당·상장폐지·기호 변경일의 원본과 조정 결과를 각각 대조한다.
  2. 권리와 감사. Material Nonpublic Information(중요 미공개 정보, MNPI)의 유입을 막는 출처 점검과 소비자 자료의 동의·개인정보 처리 문서를 확인한다. 계약에서 백테스트, 실거래, 모델 학습, 재배포 권한을 각각 확인한다. 내부 검토나 감사 때 수집 경위와 방법을 설명할 자료도 받는다.
  3. 기술과 계약. Service Level Agreement(서비스 수준 협약, SLA)와 장애 이력을 본다. 열 또는 방법이 바뀌면 언제 공지하고 이전 버전을 얼마나 유지하는지, 호출 한도와 일괄 다운로드가 필요한 분량을 감당하는지 확인한다. 누락된 날짜를 다시 받는 방법과 계약 종료 때 내보낼 수 있는 파일 형식도 정한다.

구매 전에 공시·상장폐지·기업행동이 있는 소량의 파일을 주문 시각까지 재생한다. 공개 지연이 0으로 몰린 구간, 당시 종목군, 유효 식별자, 시간대와 세션, 오래된 호가와 이상값, 같은 기준 시각의 재조회 결과를 확인한다. 한 가지라도 설명이 안 되면 공급자의 설명과 원본을 대조하고 그 기록을 신호에 쓸 수 있는지 결정한다.

나중에 같은 결과를 다시 만들 수 있게 남긴다

공급자가 종가 정의를 바꾸면, 지우는 어느 실행이 이전 정의를 썼는지 찾아야 한다. Data Lineage(데이터 계보)는 원본과 변환의 연결을 남긴다. 수집 파일, 버전, 정제 규칙, 제외한 행과 이유를 함께 기록한다. 오류를 고친 뒤에도 예전 값은 버전으로 남겨 이전 결과를 재현한다.

검사를 자동화해 시각 역전이나 범위 위반이 조용히 사라지지 않도록 한다. 공급자를 바꿀 때는 일정 기간 두 자료를 같은 주문 규칙에 넣어 차이를 비교한다. 차이가 발생한 종목과 날짜를 좁혀 보고, 새 공급을 되돌릴 수 있도록 이전 버전과 파이프라인 설정을 보존한다.