ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [야후 파이낸스 데이터를 활용한 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/

     

    yfinance

    Download market data from Yahoo! Finance API

    pypi.org

     

    사용법은 매우 간단하다. 주피터 노트북이나 파이썬 쉘처럼 대화형으로 파이썬을 코딩할 수 있는 창을 열어놓고, 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는 어떤 의미를 가지고 있는지 알아보도록 하겠다.

    댓글

분노의 분석실 Y.LAB