OHLCV 뜻과 데이터 검증: 시가·고가·저가·종가·거래량 오류 찾기
OHLCV의 뜻과 세션 범위를 확인하고 가격·거래량·거래일·수정주가·주봉 집계 오류를 단계별로 찾는 데이터 검증법입니다.
OHLCV 파일에 날짜와 숫자가 모두 채워져 있어도 바로 수익률이나 기술적 지표를 계산하면 안 됩니다. ‘종가’가 정규장 마지막 체결인지 공식 종가인지, 거래량이 한 거래소인지 전체 시장인지, 가격만 수정주가인데 거래량은 원자료인지에 따라 같은 코드가 다른 결과를 만듭니다.
OHLCV 검증은 값의 범위와 세션을 먼저 고정한 뒤 정렬·중복·산술·거래일·기업행동 순으로 진행해야 합니다. 시가·고가·저가·종가·거래량의 공급자 정의를 기록하고, 오류 행을 삭제하기 전에 격리하며, 일봉을 주봉으로 바꿀 때도 거래소 캘린더와 주간 경계를 명시하세요.
OHLCV는 다섯 숫자보다 정의가 먼저예요
일반적으로 O는 첫 가격, H는 최고가, L은 최저가, C는 마지막 또는 공식 종가, V는 거래량을 뜻합니다. 하지만 ‘어느 시장의 어느 세션에서 어떤 거래를 포함했는가’가 빠지면 정의가 끝난 것이 아닙니다.
NYSE의 과거 데이터 카탈로그도 거래, 호가와 경매 데이터를 별도 상품으로 구분합니다.C1 TAQ Closing Prices는 거래소별 Open·High·Low·Last와 오후 4시 기준 Total Volume을 제공합니다.C2 근거: NYSE Historical Data 반면 Nasdaq Daily Market Summary의 주식수는 해당 Nasdaq 종목이 모든 거래소에서 실제 체결된 주식수를 뜻하고, 거래대금은 체결별 가격과 주식수의 곱을 합산합니다.C3 근거: Nasdaq Daily Market Summary 정의 공급자와 필드명이 같아 보여도 집계 범위는 확인해야 해요.
최소 메타데이터는 다음과 같습니다.
| 항목 | 기록 예시 |
|---|---|
| 거래소·종목 식별자 | NYSE, Nasdaq, 티커와 영구 ID |
| 세션 | 정규장, 프리마켓 포함, 애프터마켓 포함 |
| 시간대·날짜 기준 | America/New_York, 거래일 기준 |
| 종가 정의 | 마지막 체결, 공식 종가, 경매가격 |
| 거래량 범위 | 특정 거래소, 통합시장, odd lot 포함 여부 |
| 가격 조정 | 원시, 분할 조정, 배당 포함 총수익 조정 |
| 수집·수정 버전 | 공급자, 받은 시각, 정정 또는 재처리 버전 |
정렬과 중복을 먼저 검사해요
수익률, shift, 이동평균과 이상치 검사는 시간순 정렬을 전제로 합니다. 비정렬 자료에서 먼저 계산한 뒤 날짜를 정렬하면 전일 수익률 자체가 잘못 연결됩니다.
- 종목 ID와 날짜의 자료형을 고정합니다.
- 종목별 날짜 오름차순으로 정렬합니다.
(종목, 거래일, 세션)중복을 찾습니다.- 중복을 임의로 마지막 값 하나로 덮지 말고 원천·수정시각별로 격리합니다.
- 정렬과 중복이 해결된 데이터에서만 수익률과 rolling 값을 계산합니다.
날짜 중복은 단순 복사일 수도 있지만 원자료와 수정자료, 정규장과 전체 세션이 섞인 것일 수도 있습니다. 가격과 거래량이 정확히 같은지, 공급자 버전이 다른지 확인하기 전에는 자동 제거하지 않는 편이 안전합니다.
OHLC와 거래량의 산술 조건을 확인해요
유효한 일봉이라면 적어도 다음 조건을 만족해야 합니다.C5
또한 가격은 일반 주식 자료에서 양수여야 하고 거래량은 음수가 될 수 없습니다. 체크 순서는 간단합니다.
Low > High인 행Open또는Close가[Low, High]밖인 행- 0 이하 가격 또는 음수 거래량
- 필수 값 결측
- 전일 대비 극단적 가격 변화와 거래량 변화
마지막 항목은 오류 확정이 아니라 조사 대상으로만 표시하세요. 주식분할, 권리락, 거래정지 해제나 실제 뉴스가 큰 변화를 만들 수 있습니다. 중앙값 절대편차 같은 통계 기준도 분포를 모르는 상태에서 삭제 규칙으로 사용하면 실제 급등락을 지울 수 있어요.
(High+Low+Close)/3 × Volume으로 만든 값은 일봉 대표가격을 이용한 거래대금 근사치입니다. 실제 체결 VWAP은 체결별 가격×수량을 합산한 뒤 총수량으로 나눠야 하므로 둘을 같은 값으로 부르면 안 됩니다.C3
결측일은 거래소 캘린더와 비교해요
월요일부터 금요일까지를 전부 거래일로 가정하면 휴장일을 결측으로 오인하고, 조기폐장이나 거래정지를 놓칠 수 있습니다. NYSE 공식 캘린더에는 정규 거래시간과 휴장·조기폐장일이 따로 표시됩니다.C4 근거: NYSE 거래시간·캘린더
검증할 때는 예상 거래일을 해당 거래소 공식 캘린더에서 만들고 실제 자료와 비교하세요. 차이가 나면 다음으로 분류합니다.
- 시장 전체 휴장 또는 조기폐장
- 종목 거래정지·상장 전·상장폐지 후
- 티커나 거래소 변경
- 공급자 수집 누락
- 시간대 변환으로 거래일이 하루 이동
빈 날짜를 전일 종가로 채우고 거래량을 0으로 만드는 방식은 가격 경로와 변동성, 이동평균을 바꿉니다. 결측 사유가 확인되지 않으면 해당 구간의 계산을 중단하는 편이 낫습니다.
원시가격과 수정가격을 섞지 않아요
주식분할 전후에 원시 종가와 수정 종가를 이어 붙이면 하루 수익률이 가짜 급락으로 보일 수 있습니다. 반대로 수정 종가만 사용하면서 고가·저가·거래량은 원자료를 두면 캔들 범위와 거래대금이 서로 다른 단위가 됩니다.
다음 조합 중 하나를 데이터셋 전체에 일관되게 적용하세요.
- 원시 OHLCV와 별도 기업행동 원장
- 동일 수정계수로 조정한 OHLC와 역수 방향으로 맞춘 거래량
- 공급자의 총수익 계열과 그 정의·재처리 버전
배당까지 반영한 수정종가와 가격수익률용 분할 수정계열은 목적이 다릅니다. 공급자의 adjusted라는 이름만 믿지 말고 분할, 현금배당, 권리배정 가운데 무엇을 반영하는지 확인하세요. 사건별 수정계수 검산은 수정주가와 기업행동 검증 순서에 정리돼 있습니다.
일봉을 주봉으로 바꿀 때 경계를 명시해요
주봉의 기본 집계는 보통 주의 첫 유효 거래일 시가, 주중 최고가·최저가, 마지막 유효 거래일 종가, 거래량 합계입니다.
하지만 금요일 휴장 주간, 거래소 시간대와 라이브러리의 closed·label 설정에 따라 주간 라벨이 달라질 수 있어요. 주봉이 언제 완성돼 실제로 사용 가능했는지도 기록해야 합니다. 금요일 종가로 완성된 신호를 금요일 종가 체결에 이미 알았다고 가정하면 안 됩니다.
최종 검증은 정의 카드 → 정렬 → 중복 격리 → 산술 조건 → 캘린더 → 기업행동 → 표본 원문 대조 순서로 마무리하세요. 코드가 성공했다는 상태와 데이터가 의미상 유효하다는 판정을 분리하는 것이 핵심입니다.
주요 출처와 검증 범위
아래 원문에서 사실을 확인했습니다. 원자료의 수치·문구와 본문의 단순 계산은 구분하며, 비교·의미 해석과 판단 순서는 이 사이트의 편집물입니다.
- NYSE · NYSE Historical Data
확인일
- C1 NYSE TAQ 상품은 거래·호가·경매 데이터를 서로 구분해 제공한다.
- C2 NYSE TAQ Closing Prices는 거래소별 Open·High·Low·Last와 오후 4시 기준 Total Volume을 제공한다.
- C5 유효 일봉은 저가가 시가·종가 이하이고 고가가 시가·종가 이상이어야 하며 거래량은 음수가 될 수 없다.
- Nasdaq Trader · Daily Market Summary Definitions
확인일
- C3 Nasdaq Daily Market Summary의 주식수는 해당 종목의 모든 거래소 실제 체결 주식수이며 거래대금은 체결별 가격과 주식수의 곱을 합산한 값이다.
- NYSE · NYSE Trading Hours & Calendars
확인일
- C4 거래소 공식 캘린더에는 정규 거래시간과 휴장·조기폐장일이 있어 평일 달력만으로 거래일을 만들 수 없다.
면책 및 정보 이용 안내
이 글은 공개된 거래소 자료와 기술 문서를 바탕으로 작성한 일반 정보이며, 독자의 재무상황·투자목표·위험수용도를 고려한 개인 맞춤형 투자 자문이나 특정 종목·전략의 매수·매도 권유가 아닙니다. OHLCV 정의와 수정 방식은 거래소·공급자·상품에 따라 달라질 수 있으므로 최신 공시, 데이터 명세와 원거래 기록을 직접 확인하세요. 데이터 검증을 거쳐도 원금 손실 위험이 사라지지 않습니다.