[Python] 파이썬 pykrx로 주식시장 개장일 출력

2024. 2. 21. 09:48· Python

주식 종목 추천 전략 관련 모듈을 짜는 중.. n일치의 값을 불러와 해당 기간 내의 값과 최근값을 비교해야할 모듈들이 있었다… (ex. 거래량 상승폭, 종가 이동평균 등…)

주식시장 개장일을 쉽게 출력해주는 파이썬 라이브러리로 exchange_calendars, pandas_market_calendars 등이 있는 것 같았지만 최대한 불러오는 라이브러리의 개수를 줄이고 싶었다. 따라서 pykrx 안에서 해결이 가능할지 알아보던 중 get_nearest_business_day_in_a_week 함수를 발견해 이를 활용해보았다! 💡

def get_nearest_business_day_in_a_week(date: str = None, prev: bool = True) \
        -> str:
    """인접한 영업일을 조회한다.

    Args:
        date (str , optional): 조회할 날짜, 입력하지 않으면 현재 시간으로 대체
        prev (bool, optional): 휴일일 경우 이전/이후 영업일 선택

    Returns:
        str: 날짜 (YYMMDD)
    """
    return krx.get_nearest_business_day_in_a_week(date, prev)

https://github.com/sharebook-kr/pykrx/blob/master/pykrx/stock/stock_api.py


이를 활용해 작성한 코드는 다음과 같다.

1. 특정일자를 입력
    (기간인 경우 시작일과 종료일 사이의 일자를 리스트로 뽑음)
2. get_nearest_business_day_in_a_week 안에 입력일을 넣어준 뒤,
    반환된 값이 입력값과 같으면 영업일 / 아니면 비영업일로 구분

 

[특정일 개장 여부 확인]

from pykrx import stock as pykrx_stock
from datetime import datetime, timedelta
import pandas as pd
import numpy as np

## 특정일자 입력 (yyyyMMdd 형식)
business_date = "20240205"

if business_date = pykrx_stock.get_nearest_business_day_in_a_week(business_date):
	print("영업일")
else:
	print("비영업일")

 

[특정기간 개장 여부 확인]

from pykrx import stock as stock
from datetime import datetime, timedelta
import pandas as pd
import numpy as np

## 특정일자 입력 (yyyyMMdd 형식)
business_date = "20240203"
end_date = datetime.strptime(business_date, "%Y%m%d")
## 기준일 1달 전
# start_date = end_date - timedelta(months=1)
## 기준일 1주 전
# start_date = end_date - timedelta(weeks=1)
## 기준일 3일 전
start_date = end_date - timedelta(days=3)
period = (end_date - start_date).days

dates = [d.strftime('%Y%m%d') 
		 for d in pd.date_range(start_date, periods=period+1)]

dt_df = pd.DataFrame({
	'date' : dates
})

# 각 일자별 영업일 여부 판단 (1=영업일, 0=비영업일)
dt_df['영업일 여부'] = dt_df['date'].apply(
    lambda x: 1 if x==stock.get_nearest_business_day_in_a_week(x) else 0)

print(dt_df)

 

[특정기간 내 개장일 리스트 확인]

from pykrx import stock as stock
from datetime import datetime, timedelta
import pandas as pd
import numpy as np

## 특정일자 입력 (yyyyMMdd 형식)
business_date = "20240203"
end_date = datetime.strptime(business_date, "%Y%m%d")
## 기준일 1달 전
# start_date = end_date - timedelta(months=1)
## 기준일 1주 전
# start_date = end_date - timedelta(weeks=1)
## 기준일 3일 전
start_date = end_date - timedelta(days=3)
period = (end_date - start_date).days

dates = [d.strftime('%Y%m%d') 
		 for d in pd.date_range(start_date, periods=period+1)]

dt_df = pd.DataFrame({
	'date' : dates
})

# 각 일자별 영업일 여부 판단 (1=영업일, 0=비영업일)
dt_df['영업일 여부'] = dt_df['date'].apply(
    lambda x: 1 if x==stock.get_nearest_business_day_in_a_week(x) else 0)

bus_df = dt_df[dt_df['영업일 여부']==1]
bus_dt_list = bus_df['date'].to_list()

print(bus_dt_list)

 

실제 주식시장의 데이터를 불러와 사용하는 경우에 유용하게 사용될 듯 싶다~! 👍

저작자표시 비영리 변경금지 (새창열림)
mand00
mand00
Little things make big things happen! 🐾
mand00
Little Archive
mand00
전체
오늘
어제
  • 분류 전체보기 (11)
    • Data Viz (2)
      • Tableau (2)
      • Superset (0)
    • Data Engineering (2)
    • Python (1)
    • SQL (1)
    • Data Analysis (1)
    • Book (3)
    • Project (1)
      • Data Viz (1)
      • Data Analysis (0)
    • Review (0)
      • Articles (0)
      • Book (0)
    • Diary (0)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 태블로 서버 리포지토리
  • 태블로
  • 태블로 서버
  • Tableau Server
  • 데이터시각화
  • docker
  • 파이썬
  • python
  • Tableau
  • 도커
  • Tableau Desktop
  • 태블로 데스크탑
  • 도커오류

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
mand00
[Python] 파이썬 pykrx로 주식시장 개장일 출력
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.