영업일과 휴일 - 한국거래소
영업일 캘린더 (KRX)¶
- 한국거래소 홈페이지에서 휴장일을 xls로 받을 수 있다
- 휴장일 데이터로 부터 개장일(market days)를 생성
- 해외 시장(CME, EUREX)등은 pandas-market-calendars를 활용
2017 http://fb.com/financedata , http://financedata.github.io¶
한국거래소 홈페이지 휴장일 조회¶
한국거래소 홈페이지 http://marketdata.krx.co.kr 에서 아래 메뉴에서 휴장일을 조회할 수 있다
시장정보 > 시장동향 > 공시 > 증시일정 > 휴장일¶
링크는 아래와 같다
http://marketdata.krx.co.kr/contents/MKD/01/0110/01100305/MKD01100305.jsp
한국거래소, CME, EUREX 캘린더를 년도별로 제공하고 있으며, '다운로드'를 누르면 엑셀(data.xls)파일로 다운로드 할 수 있다.
다운로드한 파일명(data.xls)을 적절하게 변경해준다. 여기서는 hdays-2017-KRX.xls 로 변경하고, 아래와 같이 github 에 공유파일 링크를 만들었다.
- hdays-2017-KRX.xls ( https://goo.gl/G1gzHh )
import pandas as pd
df_hdays = pd.read_excel('https://goo.gl/G1gzHh')
df_hdays
날짜 데이터에 요일이 함께 들어있어 가공이 필요하다.
hdays = df_hdays['일자 및 요일'].str.extract('(\d{4}-\d{2}-\d{2})', expand=False)
hdays = pd.to_datetime(hdays)
hdays.name = '날짜'
hdays
개장일(market day)¶
2017년 중에 개장일(market day)목록을 만들어 보자. 우선 pandas.date_range() 함수를 사용하여 1월 1일~ 12월 31까지 날짜를 생성한다. (365일)
mdays = pd.date_range('2017-01-01', '2017-12-31')
mdays
이때 freq 를 'B'로 지정(business day)하면, 주말(토,일)은 제외된다. (260일)
날짜 생성에 대해서는 다음 URL을 참고 하자. https://pandas.pydata.org/pandas-docs/stable/timeseries.html
특히, 간격 별칭(Offset Aliases)에 대해서는 아래 표에 정리되어 있다.
https://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases
mdays = pd.date_range('2017-01-01', '2017-12-31', freq='B')
mdays
여기서 휴일을 제외(df.drop)하면, 모든 영업일(market day)가 만들어진다. (244일)
mdays = mdays.drop(hdays)
mdays
DataFrame에 휴장일 적용하기¶
DataFrame에서 개장일(market day)만을 추출해해야 하는 경우를 살펴보자.
다음과 같은 데이터를 가정해 보자. (5월 1일~5월 30일, 1~30까지 valeus로 할당)
data = {'values': range(1,31)}
df_sample = pd.DataFrame(data, index=pd.date_range('2017-05-01', '2017-05-30'))
df_sample.head(10)
위 데이터 중에서 개장일만 추출하고자 한다. DateTimeIndex를 가진 두 개의 DataFrame의 교집합을 구하는 간단한 방법으로 pd.merge()을 쓸 수 있다.
# 개장일을 index로 갖는 DataFrame
df_mdays = pd.DataFrame(index=mdays)
# 두 DataFrame (df_sample, df_mdays)의 인덱스를 기준으로 합친다(merge)
df = pd.merge(df_sample, df_mdays, right_index=True, left_index=True)
df.head(10)
이 경우, 두 인덱스의 공동부분(intersection)만 남으므로 개장일만 남게 된다.
CME, EUREX 휴장일¶
영업일 캘린더 메뉴에서 한국거래소(KRX)외에 CME, EUREX와 캘린더도 제공하며, 엑셀로 다운로드 한 2017년 데이터는 다음과 같다.
- hdays-2017-CME.xls ( https://goo.gl/cvnhy2 )
- hdays-2017-EUREX.xls ( https://goo.gl/s2PgBx )
pd.read_excel('https://goo.gl/cvnhy2')
pd.read_excel('https://goo.gl/s2PgBx')
pandas-market-calendars¶
해외 시장의 개장일(market day)을 관리하기 위해 위 엑셀 데이터를 사용하기 보다는 pandas-market-calendars 라이브러를 권한다.
http://pandas-market-calendars.readthedocs.io
NYSE, CME, EUREX 등 시장에 대한 개장일과 개장 시간등을 관리할 수 있다.
댓글
Comments powered by Disqus