미국 주식 데이터 수집 #6 배당 정보 가져오는 방법

 안녕하세요, 이번 포스팅에서는 배당 정보를 가져오는 방법에 대해서 알아보겠습니다. 이 또한 댓글로 요청주신 분이 계셔서 주간 데이터에 반영하기 위해 작업한 내용입니다. 요청주신 정보는 바로 시가배당률과 5년 배당성장률입니다. 이번 주에 업로드 될 데이터부터 포함이 될 예정인데, 이 포스팅을 통해 내용에 대해 소개해드리도록 하겠습니다 : )

 

 우선, 간단하게 시가배당률과 배당성장율이 무엇을 의미하는지 한 번 알아보겠습니다.

 

시가배당률 = 배당금 / 배당기준일 주가 * 100

배당성장률 = 배당금의 CAGR(복합 연간 성장률)

 


0.가져올 데이터 확인하기

 처음에는 이 두 가지 정보를 한 번에 볼 수 있는 Seeking Alpah라는 사이트를 찾아서, 그 사이트에서 정보를 가져오려고 했습니다. 그런데 크롤링을 하기에는 사이트 구조가 복잡해서(제 실력이 부족해서😥) 가져오지는 못 하고, 값을 검증하는데 참고만 했습니다. 그럼에도 사이트가 다양한 정보를 확인할 수 있고, 괜찮은 것 같아서 소개드립니다.

 

 

Seeking Alpha | Stock Market Analysis & Tools for Investors

Join Seeking Alpha, the largest investing community in the world. Get stock market news and analysis, investing ideas, earnings calls, charts and portfolio analysis tools.

seekingalpha.com

 

 Seeking Alpha 사이트에서 애플(AAPL)의 배당 관련 정보를 조회해보면 아래와 같이 조회가 됩니다. 빨간색 박스가 제가 가져오려고 하는 정보이죠. 하지만 위에서 언급했듯이 이 사이트 구조가 익숙하지 않아서, 다시 Yahoo Finance에서 데이터를 찾기 시작합니다 : ) 분명 방법이 있을텐데.. 위 사이트에서 해당 정보를 가져올 수 있는 고수님들이 계시다면 댓글로 알려주세요!

 

Seeking Alpha에서 AAPL로 조회한 결과

 

 

 다시 익숙한 Yahoo Finance 사이트로 돌아와, Statistics 탭에 들어가면 배당 정보를 확인할 수 있습니다. 아래 빨간색으로 체크한 부분이 이번에 가져오려고 하는 정보 중 시가배당률에 해당하는 정보입니다.

 

Yahoo Finance에서 AAPL로 조회한 결과

 

 그런데 아쉽게도 배당성장률에 대한 정보는 기재되어 있지 않네요😭 하는 수 없이 배당성장률은 직접 계산을 해야할 것 같습니다. 본격적으로 두 가지 정보를 가져오고, 계산하는 방법을 소스코드를 보면서 알려드리겠습니다.

 


1.시가배당률 가져오기

 시가배당률 정보는 Yahoo Finance에 정보가 있고, 이를 제공하는 API가 있기 때문에 비교적 가져오기가 쉽습니다. 위에 캡처화면에서 봤던 Statistics의 정보를 가져오는 함수인 get_stats를 사용합니다.

 

import yahoo_fin.stock_info as si

AAPL = si.get_stats('AAPL')
AAPL

 

 위 코드를 실행시키면 Statistics 페이지에서 표기되었던 내용을 모두 가져옵니다. 그 중 밑으로 쭉 내려가다 보면 우리가 필요로 하는 Forward Annual Dividend Yield 정보를 찾을 수 있습니다.

 

 

 

이 값을 가져와서 어떻게 쓰느냐는 사람들마다 다르겠지만, 저는 이 정보를 매주 Update하는 프로그램에 포함하여 가져올 수 있도록 하였습니다. 이렇게 반환되는 DataFrame에서 어떻게 원하는 정보만 추출하는지 궁금하신 분들은 제 예전 포스팅을 참고해주세요 : ) 

 

미국 주식 데이터 수집 #2 데이터 수집 및 조합

 


2.배당성장률 계산하기

 두 번째로 수집할 데이터는 배당성장률입니다. 배당성장률 정보는 Yahoo Finance에서 제공을 하지 않기 때문에 배당금을 가지고 직접 계산해야합니다. 우선 전체 소스코드를 보여드리고 하나씩 설명하도록 하겠습니다. 저는 늘 그렇듯 하나의 함수로 만들어 편리하게 배당성장률을 가져오도록 하였습니다.

 

def get_stock_div_growth(ticker):
    div = si.get_dividends(ticker)
    
    month = div.index[-1].month                                   # 최근 배당월
    from_date = datetime.datetime(div.index[-1].year-5, month, 1) # 최근 배당연도-5
    to_date = datetime.datetime(div.index[-1].year, month+1, 1)   # 최근 배당연도
    
    this_div = div[from_date:to_date].iloc[-1]['dividend']         # 최근 배당금
    five_year_ago_div = div[from_date:to_date].iloc[0]['dividend'] # 5년 전 동월 배당금
    
    div_growth = (this_div/five_year_ago_div)**(1/5)-1             # 배당성장률 계산(CAGR)
    
    return [float(round(div_growth*100,2))]

 

 코드를 세분화해서 살펴보면, 첫 줄 si.get_dividends는 입력된 종목코드에 대한 배당금 지급 이력을 조회하는 API입니다.

 

API 호출 결과

 

 애플은 분기별로 배당을 하고 있군요. 지금은 tail(5)로 최근 5개의 배당금 지급 이력만 조회하였지만, 실제로는 1987년부터 배당금을 지급한 이력을 모두 가져옵니다.

 

 다음 3줄의 코드는 해당 종목이 배당하는 월과 5년 전 연도를 구하는 코드입니다. 대부분이 분기 배당이라고는 하지만, 혹시 아닌 경우를 대비해 코드를 이렇게 작성하였습니다.

 

month = div.index[-1].month                                   # 최근 배당월
from_date = datetime.datetime(div.index[-1].year-5, month, 1) # 최근 배당연도-5
to_date = datetime.datetime(div.index[-1].year, month+1, 1)   # 최근 배당연도

 

 이렇게 구한 5년 전 배당월부터 최근 배당월까지만 DataFrame을 추려서 조회하면 아래와 같이 나오고, 배당성장률을 계산하기 위해서는 5년 전 배당금과, 최근 배당금이 필요합니다.

 

 

  이후 DataFrame의 iloc로 첫 행과, 마지막 행을 가져와서 CAGR을 계산해준 것 입니다. 연간 복리 성장률을 구해주기 위해서는 " (최종 값 / 시작 값) ** (1/연 수)-1 "로 계산하면 됩니다.

 

 최종적으로 함수 인자 값에 'AAPL'을 넣고 실행하면 5년 배당성장률 9.54를 반환합니다.

 

함수 실행 결과


 3.마무리

 여러분의 요청 덕분에 저도 배당금에 대해서 알아보고, 조금 더 공부하는 계기가 되었습니다. 앞으로도 언제든지 필요한 자료가 있으시면 댓글로 요청해주세요.

 

 당연히 저의 소스코드가 완벽한 게 아니기 때문에 이보다 더 정확하고 효율적인 방법으로 데이터를 가져오는 방법이 존재하고, 제 코드도 더 효율적으로 개선할 수 있을 것입니다. 관련된 아이디어가 있으신 분들은 댓글로 공유해주시면 저한테도 큰 도움이 됩니다!

 

 오늘 포스팅된 시가배당률 & 5년 배당성장률 지표는 이번주 미국 주식 데이터부터 함께 업로드될 예정입니다. 기대해주세요😀

 

 

 


공감댓글, 공유는 큰 힘이 됩니다!

도움이 되셨다면 널리널리 알려주세요😉

 

 

댓글()