Programming
[Python] yahoo finance 에서 원하는 정보 긁어오기 (미국편)
better_coco
2022. 8. 24. 19:41
지난 번에 퀀트 투자 책을 읽었으니, 그걸 활용해볼까 한다.
우선 퀀트 투자를 하기 위해서는 각 기업별 재무제표 정보를 살펴봐야 한다.
그런데 미국 기준으로 보면 나스닥 종목만 해도 3,000 여개가 넘는다. 안 그래도 시간이 없어 죽겠는데 3,000 개에 달하는 종목들의 재무제표를 언제 다 직접 뒤져보겠나.
배워 먹은 게 코딩 밖에 없는데 그거라도 써먹어야지.
일단 yahoo_finance (https://finance.yahoo.com/) 에 들어가면 아래처럼 볼 수 있는 기업별 정보를 크롤링하거나 API 로 원하는 정보를 받아올 수 있다.

나는 yahoo finance 에서 제공하는 python package 를 활용해서 데이터를 긁어왔는데, package 설치 과정부터 간단한 코드는 아래 내용 참고하면 된다.
1. yahoo finance package 설치
- pip install yahoo_fin 명령어로 package 를 설치한다.

2. 원하는 정보의 유형 파악
- 우선은 원하는 정보가 크게 어떤 부류의 정보인지를 파악해야 한다.
- 내가 원하는 정보가 아래의 그림처럼 financials 탭에서 제공하는 정보 중 income statement 에서 제공하는 정보일 수도 있고, balance sheet 이나 cash flow 에서 제공하는 정보일 수도 있다. 그것도 아니면 statistics 탭에서 제공하는 정보일 수도 있다.
(아래 스샷은 예전에 포스팅할 때 캡쳐한 거라 현 시세와 다름)


3. 예제 코드로 원하는 정보 불러오기
- 대충 간단하게 작성한 코드 일부를 정리하면 아래와 같다. (아마 퀀트에서 사용되는 기본적인 정보는 포함되어 있을 듯)
- 코드를 보면 정보별로 불러올 수 있는 함수가 다르다. 그래서 위에서 말한 것처럼 원하는 정보가 어떤 부류의 정보인지를 파악해야한다고 한 거다.
- 이런 식으로 데이터를 만들어서 float이 됐든 string이 됐든 원하는 데이터 타입으로 변경해서 활용하면 된다.
import yahoo_fin.stock_info as si
nasdaq = si.tickers_nasdaq() #나스닥 종목 가져오기
ticker = 'AAPL'
#statistics 중 valuation measures 정보
val_measures = si.get_stats_valuation(ticker)
market_cap = val_measures.iloc[0,1]
per = val_measures.iloc[2,1]
pegr = val_measures.iloc[4,1]
pbr = val_measures.iloc[5,1]
psr = val_measures.iloc[6,1]
#statistics 중 필요한 그 외 정보
stats = si.get_stats(ticker)
debt_ratio = stats[stats['Attribute']=='Total Debt/Equity (mrq)']['Value']
roa = stats[stats['Attribute'] == 'Return on Assets (ttm)']['Value']
#balance sheet 정보
balance = si.get_balance_sheet(ticker)
ca = balance.loc['totalCurrentAssets'].iloc[0]
tl = balance.loc['totalCurrentLiabilities'].iloc[0]
total_assets = balance.loc['totalAssets'].iloc[0]
#income statement 정보
income = si.get_income_statement(ticker)
netIncome = income.loc['netIncome'].iloc[0]
grossProfit = income.loc['grossProfit'].iloc[0]
#cash flow 정보
cash_flow = si.get_cash_flow(ticker)
operating_cashFlow = cash_flow.loc['totalCashFromOperatingActivities'].iloc[0]
오늘은 간단하게 코드로 퀀트에 필요한 데이터를 긁어오는 방법을 알아봤다.
다음 번 포스팅에는 이 정보들로 어떻게 퀀트 투자 기법을 구현할 수 있는지 적용해보려고 한다.
미국편이 정리가 되면 국내 주식 정보를 긁어와서 활용해보는 방법도 다룰 예정이다.