python 파이썬으로 주식/주가 정보 가져오기 : Finance Data Reader(Finance-DataReader)

반응형

  yfinance에 이어 파인썬으로 주식 주가 정보를 가져오는 패키지 중 많이 사용되는 패키지이다.

  국내 주식은 KRX에서 가져오는 듯하고 이 외에도 naver, investing.com, yahoo! finance 등에서 데이터를 가져온다. yfinance에서는 국내 주식 종목 데이터가 전부 존재하지 않는 문제점이 있으나 해당 FinanceDataReader 패키지는 naver에서 가져오다 보니 코스피, 코스닥뿐만 아니라 코넥스 종목까지 다 가져올 수 있다. 그리고 국내 주식을 대상으로 프로젝트를 진행할 경우, 가장 큰 장점은 종목코드(Ticker)를 yfinance의 경우, 오만 국가의 티커가 다 있다 보니 '009530.KS'로 펑션을 호출해야 하는 반면, FinanceDataReader의 경우, '009530'의 형태로도 충분하다.(단, 데이터 소스를 KRX or naver로 선택했을 때 한정)

  이 종목코드는 블름버그 코드니, 로이터 코드니, 표준코드니 뭐니 종류가 많으나 yfinance의 경우 K-주식은 블룸버그 코드가 강제, FinanceDataReader는 우리가 흔히 쓰는 종목코드(단축코드)를 쓸 수 있다고 보면 된다.

https://github.com/FinanceData/FinanceDataReader

 

GitHub - FinanceData/FinanceDataReader: Financial data reader

Financial data reader. Contribute to FinanceData/FinanceDataReader development by creating an account on GitHub.

github.com

 

  설치 방법은 간단하다. 우선 설치해보자.

pip install finance-datareader

  기능은 yfinance처럼 재무제표를 가져오는 기능은 없고, 주가 OHLCV(Open, High, Low, Close, volume) 정보, 그리고 상장종목 리스트, 지수구성종목 리스트 기능이 있다. 우선 주가정보를 불러와보자. 주가 정보를 가져올 때는 DataReader 펑션을 사용한다. 다른 파라메터 없이 티커만 넣으면 전체 일자에 대해서(상장일 이후) 모든 데이터를 가져온다.

import FinanceDataReader as fdr

df = fdr.DataReader('005930')
print(df)

finance datareader로 주가 정보 출력 화면

  특정 일자 데이터만 가져오고 싶을 경우에는 start, end에 각각 시작, 종료일을 'yyyy-mm-dd'의 형태로 넣어주거나, 연도만 'yyyy' 이런 식으로 넣어주면 된다.

import FinanceDataReader as fdr

df = fdr.DataReader('005930', '2023-12-01', '2024-03-05')
print(df)

finance datareader로 날짜 지정하여 주가 정보 출력 화면

  이 DataReader 펑션으로 주식 주가뿐만 아니라 상품선물, 암호화폐, 해외주식들을 가져올 수 있고, 종목코드 외에 지수코드(코스피 : KS11, 코스닥 : KQ11, 코스피 200 : KS200 등)를 넣으면 지수의 가격정보도 가져올 수 있다.

  그다음은 상장종목 리스트를 불러와보자. 상장종목 리스트는 StockListing 펑션을 호출하면 된다.

df = fdr.StockListing('KOSPI')
print(df)

finance datareader로 상장 종목 출력 화면

 

  그리고 지수구성종목은 SnapDataReader를 사용한다. 이때 던져주는 파라메터는 KRX에서 확인하거나 개발자가 제공하는 symbol list를 참조해야 하는데 symbol list는 현재 TBA인 듯. 아래 예제에서는 KOSPI 200 구성종목 리스트를 출력해 볼 거다.

df = fdr.SnapDataReader('KRX/INDEX/STOCK/1028')
print(df)

finance datareader로 지수 구성 종목 출력 화면

 

  yfinance와 비교해 보면, 국내외 주식 정보, 암호화폐, 상품선물까지 엥간한 데이터는 다 받아볼 수 있고, yfinance처럼 api콜이 안돼서 다시 수행해야 하는 경우가 없으므로 좀 더 신뢰성 있게 사용할 수 있다. 그리고 해당 FinanceDataReader 패키지를 개발한 팀에서 제공하는 pykrx라는 패키지랑 엮어 사용하면 국내주식 한정, 가져올 수 있는 모든 데이터 세트를 손쉽게 얻을 수 있는 것 같다.

반응형