-
[Python] Yahoo Finance 코드 업데이트 (22.3Q)Programming 2022. 12. 3. 20:51
예전 포스팅에서 미국 주식 퀀트 투자를 위한 yahoo finance 활용법을 다뤘었다.
[Python] yahoo finance 에서 원하는 정보 긁어오기 (미국편)
지난 번에 퀀트 투자 책을 읽었으니, 그걸 활용해볼까 한다. 우선 퀀트 투자를 하기 위해서는 각 기업별 재무제표 정보를 살펴봐야 한다. 그런데 미국 기준으로 보면 나스닥 종목만 해도 3,000 여
thisiswhoiam.tistory.com
[Python] 퀀트 투자 기법 적용하기 Part 1. (미국편)
지난 포스팅에서 yahoo finance 에서 미국 주식 데이터를 긁어오는 내용을 다뤘었다. 이번 포스팅에서는 퀀트 기법에 적용해보기 위해, 어떤 데이터들을 먼저 수집해야하는지를 다뤄보자. 우선 적
thisiswhoiam.tistory.com
[Python] 퀀트 투자 기법 적용하기 Part 2. (미국편)
지난 번 포스팅에서는 퀀트 투자 기법을 적용하기 위해 필요한 데이터를 수집하는 함수를 만들었다. 그럼 이번 포스팅에서는 실제로 투자 기법을 하나씩 구현해보도록 하자. (데이터는 이미 수
thisiswhoiam.tistory.com
올해 3분기 실적을 바탕으로 퀀트 포트폴리오를 짜고 싶어서 시도하던 중, 데이터가 추출되지 않는 문제를 발견하게 됐다.
문제가 되었던 부분 코드는 아래와 같다.
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] stats = si.get_stats(ticker) debt_ratio = stats[stats['Attribute']=='Total Debt/Equity (mrq)']['Value'] roa = stats[stats['Attribute'] == 'Return on Assets (ttm)']['Value']
대부분의 ticker 에 대해서 si.get_stats_valuation 함수와 si.get_stats 함수가 nan 값을 return 하는 게 문제였다.
그래서 원하는 데이터를 다른 방식으로 뽑을 수 있는지 검색하면서 아래와 같이 코드를 수정해볼 수 있었다.
import yahoo_fin.stock_info as si nasdaq = si.tickers_nasdaq() #나스닥 종목 가져오기 ticker = 'AAPL' #statistics 중 valuation measures 정보 quote = si.get_quote_table(ticker) market_cap = quote['Market Cap'] per = quote['PE Ratio (TTM)'] #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] debt_ratio = balance.loc['totalLiab'].iloc[0] / balance.loc['totalStockholderEquity'].iloc[0] #income statement 정보 income = si.get_income_statement(ticker) netIncome = income.loc['netIncome'].iloc[0] grossProfit = income.loc['grossProfit'].iloc[0] sales = income.loc['totalRevenue'].iloc[0] psr = market_cap_num / sales #cash flow 정보 cash_flow = si.get_cash_flow(ticker) operating_cashFlow = cash_flow.loc['totalCashFromOperatingActivities'].iloc[0]
대신 PER, PBR, PSR 중 PBR 은 정확한 값을 가지고 올 수 없어, 우선은 제외하였다.
이렇게 수정한 코드로 3P combo 전략을 제외한 나머지 전략들을 적용시켜보는 중이다.
결과 나오면 그것도 올려야지~
'Programming' 카테고리의 다른 글
[Python] 부동산 매물 갭투자 금액 추정 (0) 2022.12.25 [Python] 2022 3Q 미국주식 퀀트 분석하기 (0) 2022.12.10 [Python] 네이버 부동산 매물 크롤링 (1) 2022.11.05 [Python] 지역별 부동산 데이터 시각화 (9) 2022.10.07 [Python] KB 부동산 데이터 수집하기 (4) 2022.10.03