한국투자증권 파이썬 패키지 pykis로 시계열 데이터 가져오기
가장 빠르게 익히는 방법은 직접 해보는 것입니다. 지난 포스팅에 이어 이번에는 한국투자증권 파이썬 패키지 pykis로 실감나는 시계열 데이터를 가져와 보겠습니다. 여기서, 시계열 데이터는 주가에 대한 ohlcv 데이터입니다. 또한 파이썬 바이낸스 패키지와 비교를 통해 pykis 패키지의 한계도 확인해보겠습니다. pykis로는 얼마나 촘촘하게 데이터를 가져올 수 있을지에 주목해 주시기 바랍니다.
글의 순서
OHLCV 데이터를 가져오는 get_kr_ohlcv 함수
파이썬 바이낸스 패키지와 pykis 패키지 비교
한국투자증권 파이썬 패키지 pykis로 ohlcv 데이터 가져오기
한국투자증권 API의 한계 : 분봉 데이터는 당일 1분봉 데이터만 제공
OHLCV 데이터를 가져오는 get_kr_ohlcv 함수
한국투자증권 API를 쉽게 쓸 수 있도록 만든 pykis 라이브러리에서 OHLCV(Open, High, Low, Close, Volume) 데이터를 가져오기 위해 사용하는 함수는 get_kr_ohlcv입니다. 이 함수의 파라미터는 아래와 같이 한 번에 2개만 넘길 수 있습니다.
get_kr_ohlcv(code, interval=’D’)
여기서,
▶code (str): 종목 코드입니다. 예를 들어, 삼성전자는 ‘005930’입니다.
▶interval (str): 시간 간격을 지정합니다.
‘D’: 일봉 데이터
‘W’: 주봉 데이터
‘M’: 월봉 데이터
주의: 분봉 데이터는 기본적으로 지원되지 않습니다.
▶count (int): 가져올 데이터의 개수입니다. 기본값은 30이며, 최대값은 API 제한에 따라 달라질 수 있습니다.
interval의 기본값은 ‘D’입니다. interval을 생략하고 count를 파라미터로 넘기면 그 개수만큼 ohlcv 데이터를 가져옵니다. count를 파라미터로 넘기지 않는다면 기본값인 30개의 ohlcv 데이터를 가져옵니다.
파이썬 바이낸스 패키지와 pykis 패키지 비교
파이썬 바이낸스 패키지에서 ohlcv 데이터를 가져오는 함수는 get_historical_klines입니다. 바이낸스 API의 get_historical_klines 함수와 pykis의 get_kr_ohlcv 함수를 비교하면 다음과 같습니다.
Binance 파라미터 | pykis 파라미터 | 설명 |
---|---|---|
symbol | code | 종목 또는 코인 심볼 |
interval | interval | 시간 간격 |
start_str | – | 시작 날짜 또는 시간 |
end_str | – | 종료 날짜 또는 시간 |
limit | – | 가져올 데이터의 최대 개수 |
한국투자증권 파이썬 패키지 pykis로 ohlcv 데이터 가져오기
실습코드01에 한국투자증권 파이썬 패키지 pykis로 LG에너지솔루션의 ohlcv 데이터를 가져오는 방법을 타나내었습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import pykis import os import pandas as pd # KIS API 설정 api_key = os.getenv('KIS_APP_KEY') api_secret = os.getenv('KIS_APP_SECRET') account_number = os.getenv('KIS_ACCOUNT_NUMBER') # 계좌번호 앞 8자리 product_code = os.getenv('KIS_PRODUCT_CODE', '01') # 계좌번호 뒤 2자리 기본값 01 print(pykis.__version__) key_info = { "appkey": api_key, "appsecret": api_secret } account_info = { "account_code": account_number, "product_code": product_code } api = pykis.Api(key_info=key_info, account_info=account_info) # 종목 코드 설정 (예: LG에너지솔루션) stock_code = '373220' # 현재가 조회 current_price = api.get_kr_current_price(stock_code) print(f"{stock_code} 현재가: {current_price} 원") # OHLCV 데이터 가져오기 (올바른 호출 방식으로 수정) time_unit = "D" # 기간 분류 코드 (D/day-일, W/week-주, M/month-월), 기본값 "D" ohlcv = api.get_kr_ohlcv(stock_code, time_unit) # 데이터프레임으로 변환 df = pd.DataFrame(ohlcv) print(df.head(10)) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
0.7.0 373220 현재가: 413000 원 Open High Low Close Volume Date 2024-09-24 401000 413000 401000 413000 447420 2024-09-23 397000 402500 390500 397000 233849 2024-09-20 398500 407000 392500 393500 468352 2024-09-19 405000 409500 391000 391500 303860 2024-09-13 413500 414000 399500 399500 302530 2024-09-12 403500 414000 395000 414000 361481 2024-09-11 380500 402500 380500 399000 365687 2024-09-10 398500 400000 378000 379500 421418 2024-09-09 388500 404000 386000 399500 302125 2024-09-06 412000 412500 392500 395000 419682 |
한국투자증권 API의 한계 : 분봉 데이터는 당일 1분봉 데이터만 제공
한국투자증권 API는 일, 주, 월의 캔들만 가져올 수 있습니다. 분봉 데이터는 당일(오늘)만 가능합니다. 그것도 1분봉만 가능하며, 30건만 조회할 수 있습니다.
코인거래소 바이낸스와 비교했을 때, 한국투자증권 API는 API로 가져올 수 있는 데이터의 개수가 적고, 캔들의 시간 간격이 너무 제한적입니다. 알고리즘 트레이딩을 분 단위의 단타에 적용하려면 상당한 기술이 필요할 것으로 보입니다.
마치며 …
이번 글에서는 한국투자증권 파이썬 패키지인 pykis를 통해 OHLCV 데이터를 어떻게 가져올 수 있는지 살펴보았습니다. 또한, 파이썬 바이낸스 패키지와의 비교를 통해 한국투자증권 API의 기능적 한계도 짚어보았습니다. 특히, pykis가 일봉, 주봉, 월봉 데이터를 쉽게 가져올 수 있는 반면, 분봉 데이터를 가져올 수 없다는 사실을 알았습니다. 다양한 시간 간격에서 알고리즘 트레이딩을 구현하기에 pykis는 제한사항이 많습니다.
시계열 데이터 분석이나 투자 전략을 구현할 때, API가 제공하는 데이터 범위와 한계를 충분히 이해하는 것이 중요합니다. 한국투자증권 API는 신뢰할 수 있지만, 단타(짧은 시간에서의 트레이딩)에 적용하려면 상당한 노하우가 필요할 것으로 보입니다.
함께 참고하면 좋은 글
▶ 한국투자증권 파이썬 패키지 pykis로 주가를 가져오는 파이썬 프로그래밍
▶ 파이썬 바이낸스 API로 시계열 데이터를 가져오는 파이썬 프로그래밍
▶ 파이썬으로 금융시장 분석하기 : FDR(FinanceDataReader) 패키지 활용법
▶ yfinance로 주식, 암호화폐, 원자재까지: 파이썬으로 금융 데이터 쉽게 분석하기
▶ 한국투자증권 API 신청 방법
▶ 한국투자증권 파이썬 패키지 pykis로 준비하는 알고리즘 투자
▶ RESTful API : 웹 애플리케이션 개발자를 위한 기초부터 실전까지
▶ 파이썬 데이터 분석을 위한 API 이해, REST API, WebSocket API
▶ 업비트 REST API를 이용한 비트코인 가격 추출 파이썬 프로그래밍
참고자료
▶ 한국투자증권 API 파이썬 패키지 pykis
▶파이썬 한국투자증권 API