
Python 팁: WebSocket 스트림에서 장전, 정규장, 장후 틱(Tick) 구분하기
요약
WebSocket을 통해 들어오는 미국 주식 틱 데이터를 장전, 정규장, 장후 세션으로 구분하는 Python 구현 방법을 소개합니다. 타임스탬프 변환과 세션 필드 활용을 통해 데이터 신호 품질을 높이는 효율적인 파이프라인 구축 전략을 다룹니다.
핵심 포인트
- UTC 타임스탬프를 US/Eastern 시간대로 변환하여 세션 분류
- 데이터 제공업체의 세션 상태 필드 활용 및 예외 케이스 테스트
- 데이터 수집 단계에서 세션을 라벨링하여 파이프라인 노이즈 제거
- 실시간 데이터 처리 시 신호 품질 유지를 위한 필수 단계
미국 주식에 대한 WebSocket 틱 (Tick) 스트림을 받으면서, 왜 정규 시간 외에 지표(Indicator)들이 이상하게 작동하는지 궁금했던 적이 있나요? 원시 데이터 (Raw data)는 해당 거래가 어떤 세션에 속하는지 알려주지 않지만, 세션을 식별하는 것은 신호 품질 (Signal quality)을 위해 매우 중요합니다. 여기 Python으로 이를 수행할 수 있는, 무거운 의존성 없이 깔끔한 방법을 소개합니다.
빠른 세션 참조 (Quick Session Reference)
| 세션 (Session) | 미국 동부 시간 (US Eastern Time) | 데이터 특성 (Data Characteristics) |
|---|---|---|
| 장전 (Pre-market) | 04:00-09:30 | 거래가 드물고 변동성이 큼 |
| ... |
방법 1: 타임스탬프 변환 (Timestamp Conversion)
거의 모든 API는 UTC 타임스탬프 (Timestamp)를 전송합니다. 이를 US/Eastern 시간대로 변환하고 분류하십시오.
from datetime import datetime
import pytz
...
방법 2: 세션 상태 필드 사용 (Use a Session Status Field)
데이터 제공업체가 sessionType과 같은 필드를 전송한다면, 시간대 계산을 건너뛸 수 있습니다. 다만 세션 경계에서의 예외 케이스 (Edge cases)를 반드시 테스트해야 합니다.
실시간 통합 예시 (Live Integration Example)
타임스탬프가 포함된 WebSocket 피드 (예: AllTick의 시장 데이터 스트림)를 사용하여, 틱을 실시간으로 라벨링(Labeling)합니다.
import websocket
import json
from datetime import datetime
...
효율성 요약: 데이터 수집 (Ingestion) 단계에서 세션 분류를 수행하면 나머지 파이프라인 (Pipeline)을 깔끔하게 유지할 수 있습니다. 각 다운스트림 (Downstream) 모듈은 단순히 session == "regular"로 필터링하여 노이즈를 무시하면 됩니다. 이는 나중에 발생할 거대한 모델링 문제를 방지하는 아주 작은 연산 비용입니다. 여러분의 다음 실시간 프로젝트에 도움이 되길 바랍니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기