본문 바로가기
퀀트 분석/퀀트 기초

[Python] Yahoo Finance API로 주가 데이터 받아오기

by 쿼카퀀트 2020. 8. 20.
728x90

미국 주식 정보는 네이버 등 우리가 흔히 쓰는 사이트에서 확인하기 쉽지 않다. 따라서 해외주식 투자자들은 여러 종류의 사이트를 통해 미국 주식 정보를 얻고 있을 것이다. investing.com, FINVIZ, Stockrow 등 여러 종류의 사이트가 있는데, 이 중 오늘 주가 데이터를 받아올 사이트는 Yahoo Finance이다.

 

Yahoo Finance 예시(출처: Yahoo Finance)

Yahoo Finance API 사용 준비

Yahoo Finance API는 종류도 다양하고, 각각 제공하는 데이터도 조금씩 차이가 있다. 단순히 주가 시계열 데이터와 기업정보를 제공해주는 API가 있고, 기업 재무제표를 제공해주는 API도 있다.

이번 포스트에선 주가 데이터를 받아오고자 하므로, yfinance라는 파이썬 API를 사용하도록 한다.

 

먼저, yfinance를 사용하기 위해서 패키지 설치를 해야하는데, 일반적인 터미널에서의 설치는 pip install yfinance를 입력하면 되고, colab을 사용하는 경우 아래 코드를 사용하면 된다.

!pip install yfinance

이제 설치가 완료됐다면 아래 코드로 yf를 import한다.

import yfinance as yf

 

yfinance로 주가 데이터 받아오기

API사용이 워낙 간단하기 때문에 한 줄로도 원하는 종목의 주가 데이터를 받아올 수 있다.

 

아래 코드는 'AAPL' 이라는 티커를 가진 종목(애플)의 주가를 2019년 1월 1일부터 오늘까지 전부 받아올 수 있는 코드다. 만약 원하는 기간이 있다면(ex: 2019년 6월 1일까지), 파라미터에 end = '2019-06-01'를 추가로 넣으면 된다.

 

yf.download('AAPL',start = '2019-01-01')

코드를 돌려 구한 데이터는 아래와 같다.

 

AAPL의 2019년 1월 2일(1월 1일은 휴일이라 데이터가 없다. 이 경우 yfinance에선 빈 날짜에 Null값을 넣는 것이 아니라, 아예 row에서 1월 1일을 없앤 후 리턴한다)부터 2020년 8월 19일(전일)까지의 Open, High, Low, Close, Adj Close, Volume값을 리턴해준다.

 

위처럼 애플 한 종목만을 받아오고 싶은 경우보다는 한번에 여러 종목을 받아오고 싶은 경우가 더 많을텐데, 이럴 때는 아래처럼 데이터를 받고 싶은 종목들의 티커를 list로 전달해 주면 된다.

data = yf.download(['AAPL','MU'],start = '2019-01-01')

이렇게 받은 데이터(위 코드에서 data변수에 저장한 값)는 아래와 같은 형태를 가진다.

 

위 경우 한 개의 티커를 요청했을때와 동일하게 Open, High, Low, Close, Adj Close, Volume값을 리턴해주는데, 아래 코드와 같이 위에서 만들어 놓은 data 변수에 원하는 데이터 종류(ex: Close)를 전달하면 전체 종목(AAPL, MU)의 Close값을 뽑아준다.

data['Close']

이제 직접 본인이 원하는 커스텀 보조지표를 만들거나 데이터분석에 사용하는 등 여러가지 시도를 해 볼수 있다.

 

 

yfinance로 주가 외 데이터 받아오기

yfinance패키지로는 주가 데이터 외에도 몇 가지 데이터를 더 받아올 수 있다. 코드를 뒤져보면 현금흐름표와 같은 재무제표 데이터도 제공해주는것 처럼 보이지만, 실제로 작동은 하지 않는다(재무제표를 받아오기 위해선

yahoofinance 패키지를 사용하면 되는데, 이는 나중에 따로 포스팅하겠다).

 

yfinance로 지금 받아올 수 있는 주가 외 데이터는 주식분할 이력, 배당내역, 애널리스트 평가 총 3가지이다. 각각의 데이터를 불러오는 방법도 매우 간단하기 때문에 빠르게 넘어가도록 하자.

 

주가 데이터를 받아올때와 달리 이번엔 변수 선언이 먼저 필요하다. 아래 코드와 같이 yf.Ticker() 함수를 통해 내가 데이터를 받고자 하는 기업의 티커를 전달해주자.

aapl = yf.Ticker('AAPL')

 

 

이제 정말 간단하다. 세 가지 코드와 결과물을 보여주면 yfinance패키지는 마스터한 셈이다.

 

먼저 배당 내역은 아래 코드를 통해 아래 표와 같은 결과를 받을 수 있다.

aapl.dividends

 

다음으로 주식분할 내역도 아래 코드를 통해 아래 표와 같은 결과를 받을 수 있다.

aapl.splits

 

마지막으로 애널리스트 평가 정보다.

aapl.recommendations

 

Column은 간단하기 때문에 따로 설명할건 없지만, 간단히 살펴보면 어떤 기업이 AAPL을 어떤 Grade에서 어떤 Grade로 옮겼고, 그래서 최종적으로 어떤 Action을 취하는지에 대한 얘기이다(가장 많이 보이는 main은 maintain을 뜻한다).

 

 

마무리

지금까지 yfinance를 통해 주가 데이터와 그 외 몇 가지 정보를 불러오는 코드를 살펴보았다.

 

다만, 주가 데이터만을 가지고 미래 주가 예측을 하는건 상당히 정확도도 떨어지고 힘든 분야니, 주가 예측 말고 추가적인 다른 데이터를 함께 고려해 연구해 보면 좋을 것 같다.

728x90

댓글