study/프로그래밍

[python] 미국주식 배당주의 연도별 시가배당율 계산해보자.

밥짓는사나이- 2024. 9. 17. 11:22
728x90
728x90

코딩 초보자의 코드를 보여줄듯, 안보여주는 글..ㅎ
어쩌면 코딩고수를 위한 글이라기보단, 나중에 내가 다시보려고 남기는..ㅎ
긴말과 짧은 코드 ...긴말짧코..시작할까요..ㅎ

 

시작.. 은퇴후의 삶. 나에게 필요한 돈.

나이가 점점 들다보니, 여기저기 은퇴후의 삶을 이야기 합니다.
나에겐 아직 갚아야할 은행돈이 한다발인데 , 갚을수나 있을지 모르겠는데,,  은퇴후에 생활비까지도 생각해야 하는 삶이라니, 참 안타깝고 머리아픈 인생이죠.ㅎ
사실 대학을 가면서부터 빚이 시작됩니다..
그만하자~ ㅋ산으로 가고있구나..
 

미국주식?

어찌되었건, 우리에겐 수익이 필요합니다. 
수많은 사람들이 주식엔 손대지 말라고 했지만,
장기적으론 우상향, 아무리 돈이 안풀리더라도 미국, 그럼 미국주식은 괞찮을 것 같은데..ㅎ
그래서 미국주식에 기웃기웃..
 

미국 배당주?

기웃대다보니, NVIDIA 같은 주식으로 손해도 보고 TESLA로 수익도 내고, KO코카콜라로 배당도 받아보고 했지만, 아무래도 나처럼 아무런 분석없이 네임벨류만보고 무모하게 투자하는 사람에겐,, 아니 사실 투자라기보단 투기에 가까운..사람에겐 성장주 투자가 굉장히 부담스러워 진다. NVIDIA 의 어깨에서 들어가서 허리에서 팔고.. 머리끝까지 올라갈때 후회하는 불상사가 발생하다보니 배당주? 매달, 아니면 분기마다 받을수 있는 배당금으로 일단 좀 모으며 자잘한 수익을 내볼까?ㅎ하고 배당주에 기웃댑니다.ㅎ
그러나 배당주는 주식하는 재미가 없어요. 그냥 사서 모으고 배당받고 또 재투자해서 모으고..ㅎ
한 두개의 주식 말고, 다양하게라도 해볼까.. 아무래도 배당주는 주가에 대한 방어가 중요할수 있으니.. 좀 더 공부할 필요가 있겠다.

 

배당율?

일단.. 배당률부터 보고. 차차 볼까.. 하고..
야후파이낸스 패키지를 사용해서, 파이썬으로 배당율좀 계산해볼까..하고 시작했습니다.
 
일단 시가배당율은 배당금/시가로 정의가 되는데, 배당을 분기별로 하다보니, 기준을 모르겠다.
보통 말하는 시가 배당율은 내생각엔 정확히는 예상 시가배당율이라 칭해야 할듯하다. 즉 배당금* 연간 지급회수/ 현재주가 라고 많이들 얘기하고있다. 즉 1년간 해당주식을 보유했을때 받을수 있는 총 배당금이다.
 
여기서, 즉 나는 시가배당율을 연간 배당총액/평균시가 로 계산했다. 평균적으로 어느정도의 배당율, 수익율이 날것인지를 생각해야 할듯 했다. 어찌되었건
 

그래서 코드는...?

옛다 여깃다.. 간단한 파이썬이기에 함수로 만들어놨고, 최대기간으로 가져오도록 해두었다. 만약 최근 것만 보고싶다면, 함수내  첫라인에 period를 10y 등으로 변경하면 된다.

!pip install yfinance
import yfinance as yf
import pandas as pd


def history_when_dividends(ticker):
    ## 최대 기간 데이터 가져오기
    history = yf.Ticker(ticker).history(period="max")
    ## 배당액이 있는 값만 가져오기    
    when_dividends = history.loc[history['Dividends']!=0].copy()
    ## 기준 연 추출
    df_reset_index =when_dividends.reset_index(drop=False, inplace=False)
    # print(df_reset_index.head(3))
    df_reset_index['Year'] = pd.DatetimeIndex(df_reset_index['Date']).year
    df = df_reset_index.copy()
    df = df.drop(columns='Date')
    # print(df.info())
    ## close mean, divdiends sum 구하기
    close = df.groupby(by='Year').mean()[['Close']].copy().reset_index(drop=False)
    dividends = df.groupby(by='Year').sum()[['Dividends']].copy().reset_index(drop=False)
    
    df_final = pd.merge(close, dividends).copy()

    ## 시가 배당율 구하기
    df_final['Dividend Yield'] = df_final['Dividends']/df_final['Close']*100
    return df_final

 
미국주식은 주로 영문자로된 코드를 쓰는데, 각 주식별 코드인 티커만 찾아서 넣으면..

history_when_dividends('KO')

 
이렇게 결과를 얻을수 있다. 다만, 연간 예상치를 적용하지 않았기에, 조회한 시점(현재는 24년 9월중순)에 조회했으니까.. 24년과 맨앞 2011년은 빼고 봐야 할듯하다. 예상치를 반영하고자 한다면... 고민해서 다시 ..ㅎㅎ정리해야할듯하다.
그래도 KO 코카콜라는 3~4프로 정도를 꾸준히 배당해온것을 알수 있다.

여러개의 주식을 조회하고자 한다면, for문으로 열심히 돌려서 조회가 가능하다.ㅎ
이제 다른 지표들도 추가해봐야겠다.
 
긴말짧코 끝.

728x90
728x90