티스토리 뷰

안녕하세요. 오늘은 파이썬 데이터 분석으로 금호석유 배당금과 배당 성장률, 그리고 주가를 전망해 보겠습니다.

 

주가 데이터 수집은 pykrx api를 사용하겠습니다. 시작하기 전에 pykrx api를 확인해 보세요.

 

▶▶▶ pykrx api 확인하기

 

먼저 필요한 라이브러리입니다. 

 

import numpy as np
import pandas as pd
from scipy.signal import savgol_filter
from pykrx import stock
import matplotlib.pyplot as plt
import time
plt.rcParams['font.family'] = 'Malgun Gothic'

 

배당금 데이터 수집 기간은 10년입니다.

"""
분석 기간
"""
start_year = '2012'
end_year = '2021'

 

코드를 입력합니다.

"""
금호석유
"""
code = '011780'

 

배당금은 5월 초에 업데이트됩니다.

 

따라서 여유 있게 매년 5월 31에 제일 가까운 영업일의 배당금을 읽어 옵니다.

"""
매년 5월 31에 제일 가까운 영업일의 배당금 가져 오기
"""
dps_list = []
for year in range(int(start_year)+1, int(end_year)+2):
    #print(year)
    last_business_day_of_may = stock.get_nearest_business_day_in_a_week(str(year)+'0531')
    print(last_business_day_of_may)
    df_annual_f = stock.get_market_fundamental(last_business_day_of_may, last_business_day_of_may, code)
    display(df_annual_f)
    dps_list.append(df_annual_f.DPS.values[0])
    time.sleep(1)

 

여기서 사용된 pykrx api는 get_market_fundamental()입니다. 처음에 알려 드린 링크에 들어 가면 사용법을 확인하실 수 있습니다.

 

pykrx api 사용법

 

배당금을 바 그래프로 그려 봅니다.

name = stock.get_market_ticker_name(code)

plt.title(f'{name} - 연도별 배당금')
plt.bar(range(int(start_year), int(end_year)+1), dps_list)
plt.show()

 

실제로 배당금을 지급한 연수가 얼마인지 코드로 확인하는 함수입니다.

def getActualDivGrowth(divs):
    div_history = divs.copy()
    div_history.reverse()
    div_growth_list = []
    for div_cur, div_before in zip(div_history, div_history[1:]):
        print(f'div_cur = {div_cur}, div_before = {div_before}')
        if div_before == 0:
            #print('div_before is 0')
            break;

        if div_cur >= div_before:
            div_growth_list.append(div_cur)
        else:
            #print('div_before is more than div cur')
            div_growth_list.append(div_cur)            
            break

    div_growth_list.reverse()
    return len(div_growth_list) - 1, div_growth_list

 

실행해 보겠습니다.

actual_div_growth_cnt, actual_div_growth_list = getActualDivGrowth(dps_list)
actual_div_growth_cnt, actual_div_growth_list

배당 성장 기간은 6년입니다.

 

배당 성장률을 계산해 보겠습니다.

 

CAGR 계산하는 함수입니다.

def getCAGR(div_history):
    cagr = (div_history[-1]/div_history[0]) ** (1/len(div_history)) - 1
    return cagr

 

실행해 봅니다.

cagr = getCAGR(actual_div_growth_list)
cagr

43%입니다. 굉장히 높은 성장률입니다.

 

시가 배당률 투자법에 의한 목표 주가를 계산해 보겠습니다. 과거 배당 정보를 이용해서 계산할 수 있습니다.

 

펀더멘탈 정보를 읽어 옵니다.

start_date = '20150501'
end_date = '20230222'
df_f = stock.get_market_fundamental(start_date, end_date, code, freq='d')

 

시가배당률을 그려 봅니다.

div_yields = savgol_filter(df_f.DIV, 51, 3)

plt.title(f'{name} - 시가배당률')
plt.plot(df_f.index.to_list(), div_yields)
plt.show()

 

주가 데이터를 수집합니다.

df_p = stock.get_market_ohlcv(start_date, end_date, code)

 

주가도 그려봅니다.

close_prices = savgol_filter(df_p.종가, 51, 3)

plt.title(f'{name} - 주가')
plt.plot(df_f.index.to_list(), close_prices)
plt.show()

 

주가와 배당률을 함께 그려 봅니다.

"""
주가 배당률 그리기
"""
fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('year')
ax1.set_ylabel('price', color=color)
ax1.plot(close_prices, color=color)

ax2 = ax1.twinx()

color = 'tab:blue'
ax2.set_ylabel('dividend yield', color=color)
ax2.plot(div_yields, color=color)
plt.title(f'[{name}] 주가 vs. 배당률')
plt.show()

직관적으로 보기에 주가와 시가배당률이 음의 상관관계가 있어 보입니다.

 

np.corrcoef(div_yields, close_prices)

 

그러나 실제 상관계수가 그리 높지는 않네요. 어쨌든 별로 중요한 수치는 아닙니다.

 

 

시가배당률 투자법에 의한 적정 주가를 계산해 보겠습니다.

 

공식은 다음과 같습니다.

 

현재 배당금을 시가배당률 최솟값으로 나누고 100을 곱하면 됩니다.

(현재 배당금) / (역사적인 시가배당률 최소값) * 100
df_cur_f = stock.get_market_fundamental('20230222', '20230222', code)
df_cur_f.DPS[0]

 

 

현재 배당금은 10,000원입니다.

 

목표 주가를 계산해 봅니다.

target_price = df_cur_f.DPS[0]/min(df_f.DIV) * 100
target_price

 

시가배당률 투자법에 의한 적정 주가는 1,886,792원입니다.

 

오늘은 파이썬 데이터 분석으로 금호석유 배당금과 배당 성장률, 그리고 주가를 전망해 보았습니다. 계산은 계산일 뿐입니다. '금호석유 주가가 상대적으로 많이 저렴한 상태다' 정도로 이해하시면 되겠습니다.

 

 

파이썬으로 개발한 배당주 적정 주가 계산기입니다.

 

 

프로그램이 필요하신 분은  다운로드해서 사용하세요.

 

▶▶▶적정 주가 계산기 다운로드하기◀◀◀

 

 

자세한 사용방법은 네이버 블로그에서 확인해 주세요.

 

▶▶▶적정 주가 계산기 사용방법 확인하기◀◀◀

 

 

코드에 궁금하신 점은 네이버 카페에 남겨 주세요.

 

코드장인의 코딩공방 네이버 카페 바로가기

 

 

 

지금까지는

아파트 가진 사람과 못 가진 사람의 빈부격차가 심화되는 시기였다면

 

앞으로는

데이터 분석 능력을 가진 사람과 그렇지 못한 사람의 빈부격차가 커질 가능성이 높지 않을까요?

 

※ 본 글은 특정 종목에 대한 추천 글이 아니며 모든 투자의 책임은 본인에게 있습니다.

 

감사합니다.