-
[야후 파이낸스 데이터를 활용한 Quant Analysis - 1] 파이썬 yfinance 라이브러리 사용법Morgan Project/주식 데이터 분석 (Quant Analysis) 2022. 4. 21. 16:11
Quant Analysis를 수행하기에 앞서, Yahoo Finance 사이트의 데이터를 수집해보자. 본 포스팅에서는 파이썬을 활용해서 yfinance라는 패키지로 야후 파이낸스 데이터를 대량으로 수집할 것이다. 나는 개인적으로 종목 선정 후에 해당 종목의 자료를 분석하는 것보다, 데이터 필터링으로 종목을 선정하는 과정부터 분석하는 것을 선호하기 때문이다.
만약 마이크로소프트라는 기업에 관심이 생겨, 각종 데이터를 얻기 위해 야후 파이낸스에 접속했다고 가정해보자.
그러면 이렇게 원하는 각종 데이터를 살펴볼 수 있다. Summary 에서는 현재 가격이나 PER, EPS 같은 주요 지표들을 정리해놓았고, Statistic, Financial, Analysis 탭 등에서 더 자세한 데이터를 확인할 수 있다.
하지만 이런 방식으로 데이터를 확인하는 것은 원하는 종목을 찾아놓은 상태에서 상세한 정보를 확인하려고 할 때이다. 그런데 만약 EPS가 10 이상인 성장주들만 찾겠다라는 목표가 있을 땐? Finviz나 SeekingAlpha 처럼 필터링 및 스크리닝 기능을 제공하는 좋은 사이트가 많지만, 유료인데다가 사용의 자유도도 그렇게 높지는 않다.
그래서 이럴 땐 코딩을 잘 써먹으면 좋다. 지금까지 회사에서 코딩을 하면서 도대체 이게 내 인생에 무슨 도움이 되나 싶었는데, 지금처럼 주식 관련 데이터가 많은 시대에는 요게 아주 큰 무기가 될 것 같다. 여하튼간에 파이썬으로 야후 파이낸스 사이트에서 볼 수 있는 데이터들을 조물딱 조물딱 하기 위해, yfinance 라는 패키지를 사용해보자.
[yfinance 파이썬 패키지]
yfinance는 야후에서 공식적으로 지원하는 패키지는 아니다. 야후는 API 형태로 금융 데이터를 제공해주는데, yfinance는 파이썬 wrapper일 뿐이다. 그래서 파이썬을 다룰 줄 안다면, 복잡한 API 문서 볼 필요 없이 이 패키지를 사용하면 된다.
https://pypi.org/project/yfinance/
사용법은 매우 간단하다. 주피터 노트북이나 파이썬 쉘처럼 대화형으로 파이썬을 코딩할 수 있는 창을 열어놓고, pip로 설치하기만 하면 된다. 아래 코드는 마이크로소프트(MSFT)의 티커를 입력하여 야후 파이낸스 사이트에서 볼 수 있는 모든 정보들을 가져온 것이다.
import yfinance as yf msft = yf.Ticker("MSFT") # get stock info msft.info # get historical market data hist = msft.history(period="max") # show actions (dividends, splits) msft.actions # show dividends msft.dividends # show splits msft.splits # show financials msft.financials msft.quarterly_financials # show major holders msft.major_holders # show institutional holders msft.institutional_holders # show balance sheet msft.balance_sheet msft.quarterly_balance_sheet # show cashflow msft.cashflow msft.quarterly_cashflow # show earnings msft.earnings msft.quarterly_earnings # show sustainability msft.sustainability # show analysts recommendations msft.recommendations # show next event (earnings, etc) msft.calendar # show ISIN code - *experimental* # ISIN = International Securities Identification Number msft.isin # show options expirations msft.options # show news msft.news # get option chain for specific expiration opt = msft.option_chain('YYYY-MM-DD') # data available via: opt.calls, opt.puts
하나씩 전부 출력해보면, 야후 파이낸스 사이트와 동일한 정보들을 모두 가지고 있는 것을 알 수 있다. 이제 본인에게 필요한 데이터만 선별한 뒤, 모든 종목(혹은 관심 종목)을 pandas 형태로 수집하기만 하면 된다. 이제 우리에게 필요한 것은 종목들의 티커 리스트이다.
[종목 티커 수집하기]
예시로 NYSE의 종목 티커를 수집해보자. 아래의 사이트에서는 종목들의 티커를 CSV 파일로 다운로드 받을 수 있는 기능을 제공한다. 물론 무료이고, 나스닥 뿐만 아니라 AMEX 티커 리스트도 제공한다. 게다가 종목 필터링 기능까지 가지고 있다. 무식하게 전체 티커를 받는 것 보다, 적당하게 필터링해서 티커 리스트를 수집해보자.
https://www.nasdaq.com/market-activity/stocks/screener?exchange=nyse&letter=0&render=download
이제 본격적으로 데이터를 수집할 준비를 완료했다. 코딩과 데이터 분석을 조금 할 줄 알고, 투자에 관심이 있다면 벌써 군침이 줄줄 흐를 것이다. 다음 포스팅에서는 yfinance로 수집한 데이터 중, 쓸만한 데이터가 무엇이 있고 그 columns는 어떤 의미를 가지고 있는지 알아보도록 하겠다.
'Morgan Project > 주식 데이터 분석 (Quant Analysis)' 카테고리의 다른 글
[야후 파이낸스 데이터를 활용한 Quant Analysis - 3] 쓸 만한 데이터 정리하기 (2) (1) 2022.07.06 [야후 파이낸스 데이터를 활용한 Quant Analysis - 2] 쓸 만한 데이터 정리하기 (1) (0) 2022.06.25 댓글