카테고리 없음

개발일지 2주차 - 해외주식 다루기

동슬동슬 2022. 12. 3. 20:01

[목차]

1. 해외주식 다루기 - yfinance

2. 분석하기(1) : 전략세우기, 데이터모으기

3. 분석하기(2) : 분석하기

4. 2주차끝 & 숙제설명

 

 

1. 해외주식 다루기 - yfinance

1) yfinance 설치 및 실행

yfinance 라이브러리 설치 후 런타임 다시 실행

  - 제목 밑에 있는 목록에 런타임 - 런타임 다시 시작 or (Ctrl + M)

pip install yfinance

 * Tip : 'pip install yfinance' 는 파이썬 문법이 아니라 설치 명령어이기에, 빨간줄 뜸

    해결법은 앞에 !을 붙여주면 됨

import yfinance as yf # 라이브러리 불러오기

company = yf.Ticker('TSLA')

company.info

 

2) 기본정보 및 3년치 데이터 얻기 + 그외 정보

name = company.inpo['shortName'] # 회사명
industry = company.info['industry'] # 산업
marketcap = company.info['marketCap'] # 시가총액
revenue = company.info['totalRevenue'] # 매출

print(name,industry,marketcap,revenue)
company.balance_sheet : 연도별 자료

company.balance_sheet.loc[['Cash']] 캐쉬값을 이쁘게 보는 법

company.cashflow #현금흐름표

company.earnings #기업 실적
company.institutional_holders # 주주정보

company.recommendations # 애널리스트 추천

company.calendar
news = company.news # 1주차 배웠던 뉴스와 같은 형식임

for n in news:
  print(n['title'])

2. 분석하기(1) : 전략세우기, 데이터모으기

기본 플로우 : 전략 -> 데이터 수집 -> 분석

1) 종목 별로 보고 싶은 정보 수집

기본적인 정보 모음

  • 종목코드, 회사명, 산업, 짧은 설명, 시가총액, 현재 주가
  • 1년 후 예상 주가, PER, EPS, PBR, 매출 (3년치), 순이익 (3년치)

위의 코드 정리

  • 종목코드 ⇒ code
  • 회사명 ⇒ company.info[’shortName’]
  • 산업 ⇒ company.info[’industry’]
  • 설명 ⇒ company.info[’longBusinessSummary’]
  • 시가총액 ⇒ company.info[’marketCap’]
  • 현재 주가 ⇒ company.info[’currentPrice’]
  • 1년 후 예상 주가 ⇒ company.info[’targetMeanPrice’]
  • PER ⇒ company.info[’trailingPE’]
  • EPS ⇒ company.info[’trailingEps’]
  • PBR ⇒ company.info[’priceToBook’]
  • 매출 (3년치) ⇒ company.earnings ⇒ 3년 치 가져오기
  • 순이익 (3년치) ⇒ company.earnings ⇒ 3년 치 가져오기
  • 뉴스 ⇒ company.news ⇒ 최근 뉴스 1개 가져오기
company = yf.Ticker('TSLA')

code = 'TSLA' # 종목코드
name = company.info['shortName'] # 회사명
industry = company.info['industry'] # 산업
marketcap = company.info['marketCap'] # 시가총액
summary = company.info['longBusinessSummary'] # 짧은 설명
currentprice = company.info['currentPrice'] # 현재 주가
targetprice = company.info['targetMeanPrice'] # 1년 후 예상 주가

per = company.info['trailingPE'] #PER : 주가수익비율
eps = company.info['trailingEps'] #EPS : 주당순이익
pbr = company.info['priceToBook'] #PBR : 주가순자산비율

print(code,name,industry,marketcap,summary,currentprice,targetprice,per,eps,pbr)

 

- 최근 3년 매출, 순이익 더하기

rev2021 = company.earnings.iloc[-1,0] # 2021
rev2020 = company.earnings.iloc[-2,0] # 2020
rev2019 = company.earnings.iloc[-3,0] # 2019

ear2021 = company.earnings.iloc[-1,1]
ear2020 = company.earnings.iloc[-2,1]
ear2019 = company.earnings.iloc[-3,1]

 

 

3. 분석하기(2) : 분석하기

관심 종목을 매일 자동으로 모아서, 분석하고 -> 결과까지 내어줄 수 있는 것

1) eps 순서대로 정렬

1. eps 순서대로 정렬해보기
df.sort_values(by='eps', ascending = False)

2. 특정 per 이하만 보기
df[df['per']<30].sort_values(by='per', ascending=False)

3. 현재가격 - 1년후 가격의 비율 차이가 큰 종목들 추리기
df[['code','name','currentPrice','targetPrie']]

new_df = df[['code','name','currentPrice','targetPrice']].copy()
new_df['gap'] = new_df['targetPrice'] / new_df['currentPrice'] -1
new_df.sort_values(by='gap',ascending=False)

4. 3년 연속 순수익이 오른 기업을 표기하기
import numpy as np
new_df2 =df[['code','name','ear2021','ear2020','ear2019']].copy()

cond = (new_df['ear2021']>newdf2['ear2020']) & (new_df2['ear2020']>new_df2['ear2019'])

new_df2['is_target'] = np.where(cond,'O','X')

new_df2[new_df2['is_target'] == 'O']

 

4. 2주차 끝 & 숙제

tfinance를 이용, Balance Sheet의 Cash를 아래와 같이 표기

회사명, 2021년, 2020년, diff 값 가져오기였다

[데이터 모으기]는 따로 정리해서 올리겠다.

내일 2주차 마무리로 정리된 글과 2주차 SQL로 다시 찾아오겠다