이번 글에서는 실제로 한국거래소 데이터 포털에 접근하는 방법, API 호출을 설정하는 방법, 파이썬을 사용한 데이터 수집 코드까지 구체적으로 설명해보겠습니다.
1. 한국거래소 데이터 포털 접근하기
먼저, 한국거래소(KRX)에서 제공하는 데이터 포털에 접근해야 합니다. 한국거래소는 다양한 데이터를 제공하고 있는데, 직접 API를 통해 데이터를 수집하려면 인증이 필요할 수 있습니다. 일반적으로 API 접근이 허용된 경우, 포털에서 API Key를 발급받아야 합니다.
http://data.krx.co.kr/contents/MDC/MAIN/main/index.cmd
KRX 정보데이터시스템
증권·파생상품의 시장정보(Marketdata), 공매도정보, 투자분석정보(SMILE) 등 한국거래소의 정보데이터를 통합하여 제공 서비스
data.krx.co.kr
1) 한국거래소 정보데이터시스템에서 아래 빨간 네모 박스에 해당하는 OPEN API를 클릭합니다
2) 로그인 후 데이터 조회 메뉴를 찾아 들어갑니다. 아이디가 없으실 경우 간단한 절차를 통해 회원가입이 가능하답니다.

3)특정 종목이나 전체 코스피/코스닥 데이터를 수집하려면 해당 API 사용이 허가된 사용자로 등록이 필요합니다.


4) API 신청을 누르고 동의 후 인증키 신청을 누르면 1일안에 인증키가 발급되는 것을 확인할 수 있습니다.
그럼 이제 직접 API를 사용하기 위해 필요한 API들을 신청해보도록 하겠습니다!

코스피 데이터를 뽑기 위해 빨간 네모박스로 체크한 KOSPI 시리즈일별시세정보를 클릭합니다. 해당 API를 쓰고싶은 기간과 신청 목적을 선택 후 신청합니다. 저는 오랫동안 쓰기 위해 12개월과 개인연구로 신청하였습니다.

신청 뒤에는 마이페이지의 API 이용현황 탭에서 신청한 API가 승인대기 상태인 것을 확인할 수 있습니다. 만약 승인이 된다면 다른 API들 처럼 승인 상태로 변경이 되며 실제 API를 호출하여 사용할 수 있는 상태가 되며 승인까지는 하루안에 처리됩니다.
자 이제, 데이터를 뽑아보겠습니다!
2. API 호출 준비하기
API 호출 시 필요한 파라미터는 보통 날짜, API명, 데이터 형식 등입니다. 이를 사용하여 원하는 데이터에 맞게 API 요청을 구성합니다. 대부분의 경우, 한국거래소 API는 RESTful 형태로 구성되어 있으며, HTTP GET 요청으로 데이터를 수집할 수 있습니다.
예시 API 호출 구성
다음과 같은 URL이 있다고 가정해봅시다:
http://data-dbg.krx.co.kr/svc/apis/idx/kospi_dd_trd'+'?basDd='+'YYYYMMDD
여기서 YYYYMMDD는 수집하려는 날짜를 의미합니다. 예를 들어, 2024년 10월 30일 데이터를 수집하려면 20241101로 설정하면 됩니다.
URL은 홈페이지의 API 샘플 테스트에서 확인할 수 있습니다. 실제 데이터를 뽑을때는 URL에서 "sample" 부분을 제거하면 됩니다.
3. Python 코드 작성하기
아래는 파이썬으로 한국거래소 일일 데이터를 수집하는 간단한 코드 예제입니다. requests 라이브러리를 사용하여 API에 요청을 보내고, JSON 포맷으로 받은 응답 데이터를 다룹니다.
import requests
import pandas as pd
from datetime import datetime
def get_kospi_price(date):
# API URL 구성
url = 'http://data-dbg.krx.co.kr/svc/apis/idx/kospi_dd_trd'
# 날짜 형식 변환
date_str = date.strftime("%Y%m%d")
# API 파라미터 설정
headers = {
'AUTH_KEY': '~~~~~~~~~~~~~~~~~~~' # 발급받은 API KEY
}
params = {
'basDd': date_str
}
# API 요청 보내기
response = requests.get(url, headers=headers, params=params)
# 응답 코드 확인 및 데이터 가져오기
if response.status_code == 200:
data = response.json()
# 코스피 데이터만 필터링
kospi_data = next((item for item in data['OutBlock_1'] if item['IDX_NM'] == '코스피'), None)
if kospi_data:
# 단일 데이터를 DataFrame으로 변환
df = pd.DataFrame([{
'날짜': kospi_data['BAS_DD'],
'종가': kospi_data['CLSPRC_IDX'],
'전일대비': kospi_data['CMPPREVDD_IDX'],
'등락률': kospi_data['FLUC_RT'],
'시가': kospi_data['OPNPRC_IDX'],
'고가': kospi_data['HGPRC_IDX'],
'저가': kospi_data['LWPRC_IDX']
}])
return df
else:
print("Error:", response.status_code)
return None
# 예시 실행
date = datetime(2024, 10, 30)
kospi_price = get_kospi_price(date)
if kospi_price is not None:
print("\n코스피 지수 데이터:")
# CSV 저장
kospi_price.to_csv(f'kospi_data_{date.strftime("%Y%m%d")}.csv', index=False)
kospi_price

해당 코드를 실행하면 위처럼 하루 날짜에 대한 코스피 데이터들을 뽑을 수 있습니다.
4. 데이터 저장 및 활용하기
수집한 데이터는 pandas DataFrame 형태이므로, 이후 데이터 분석이나 시각화에 바로 활용할 수 있습니다. 데이터가 누적될 경우 CSV 파일로 저장하여 관리하는 것도 좋은 방법입니다.
# 날짜 범위 설정
start_date = datetime(2024, 10, 1)
end_date = datetime(2024, 10, 31)
results = []
# 데이터 수집
current_date = start_date
while current_date <= end_date:
result = get_kospi_price(current_date)
if result: # 데이터가 있는 경우만 저장 (주말/공휴일 제외)
results.append(result)
print(f"데이터 수집 완료: {current_date.strftime('%Y-%m-%d')}")
current_date += timedelta(days=1)
# 데이터프레임 생성
df = pd.DataFrame(results)
# CSV 파일로 저장
filename = f'kospi_data_202410.csv'
df.to_csv(filename, index=False)
print(f"\n데이터가 {filename}로 저장되었습니다.")

마무리
한국거래소 API를 활용한 데이터 수집은 프로세스만 익숙해지면 매우 간단합니다. 코스피 일일 종가 데이터를 수집함으로써 데이터 분석의 첫 단계를 쉽게 수행할 수 있고, 향후 데이터 분석과 전략 수립에 유용한 기반을 마련할 수 있습니다.
추후에는 이러한 데이터를 활용해서 대시보드를 만들어보는 과정을 살펴보도록 하겠습니다.
'Study > AI' 카테고리의 다른 글
[OPEN API] 파이썬으로 한국은행🏦 API를 활용한 금리/환율 데이터 수집하기 (4) | 2024.11.10 |
---|---|
RL 기초익히기 및 다양한 기법에 대해 (1) | 2024.03.21 |
[ML] 머신러닝 프로젝트 사이클 (0) | 2023.05.07 |
[AI] 모델 기반 협업필터링 (0) | 2023.04.02 |
[AI] Collaborative Filltering(협업필터링) (0) | 2023.04.02 |