LabHub
배우기 러닝패스 코스

자본시장과 결제 · 거래일·세션 시간·시간대 · 실습

전환 주말이 지나자 두 시장의 마감이 같은 시각에 놓였다

LabHub 에서 이어서 보기

목표

네 시장의 지역시 체결 기록을 시간대 규칙으로 UTC 로 바꾸고, 서머타임 전환일의 특수한 시각을 가르고, 세션 구간과 거래일 라벨을 매긴 뒤, 시장별 마감이 UTC 에서 겹치는 날과 달력 자체의 모순을 찾아냅니다.

왜 중요한가

시각 변환을 고정 오프셋으로 해 두면 예외가 나지 않습니다. 그냥 한 시간 어긋난 값이 저장될 뿐이고, 그 사실은 전환 주말이 지나고 대사가 안 맞을 때에야 드러납니다. 자본시장에서는 이 어긋남이 곧바로 마감 배치와 집계에 닿습니다. 게다가 시장마다 전환 날짜가 달라서, 한쪽은 이미 여름 시각인데 다른 쪽은 아직 겨울 시각인 몇 주가 해마다 있습니다. 그 몇 주 동안만 두 시장의 마감이 같은 순간에 놓이는 일이 실제로 일어납니다.

단계

1. python3/root/session/datamarkets.json·calendar.json·trades.csv 를 만듭니다.
2. 지역시를 시간대 규칙으로 UTC 로 바꿔 /root/session/normalized.csvtrade_id,market,utc_ms 로 적습니다. 그 지역시에 존재하지 않는 시각은 넣지 않습니다.
3. 같은 체결을 겨울 오프셋 고정으로 바꿔 보고, 결과가 다른 것을 /root/session/fixed_diff.csv 에 적습니다.
4. 존재하지 않는 시각을 /root/session/nonexistent.csv 에, 두 번 있는 시각을 /root/session/ambiguous.csv 에 적습니다.
5. 체결마다 세션 구간을 /root/session/phase.csvtrade_id,phase 로 적습니다.
6. 달력일과 거래일이 갈리는 체결을 /root/session/tradingday.csv 에 적습니다.
7. 기준일마다 시장별 정규 마감을 /root/session/close_utc.csv 에, 마감이 가까운 시장 쌍을 /root/session/overlap.csv 에 적습니다.
8. 달력 자체의 모순을 /root/session/calendar_defects.csv 에 적고, 앞 단계의 수를 /root/session/summary.json 에 요약합니다.

참고

단계 8개

  1. 네 시장의 세션 정의와 달력, 체결 자료 만들기
  2. 지역시를 시간대 규칙으로 UTC 로 바꾸기
  3. 고정 오프셋으로 바꿔 보고 어긋난 날 찾기
  4. 없는 시각과 두 번 있는 시각 가르기
  5. 체결마다 세션 구간 매기기
  6. 자정을 넘는 세션의 거래일 라벨 붙이기
  7. 시장별 마감을 UTC 로 모아 겹치는 배치 창 찾기
  8. 달력 자체의 모순을 찾고 전체를 요약하기