퀀트투자 - KRX에서 KOSPI 지수, PER, PBR 다운로드 받아서 DB에 저장하기
본문 바로가기
파이썬으로 만든 것들/퀀트투자

퀀트투자 - KRX에서 KOSPI 지수, PER, PBR 다운로드 받아서 DB에 저장하기

by Squat Lee 2022. 9. 27.

퀀트투자 실험을 진행하면서 KOSPI 지수와 비교할 일이 있을 것 같아서 다운로드 받아서 DB에 저장했다.

 

KOSPI 지수를 다운 받는건 생각보다 간단하다. 그리고 시간도 1초 정도 걸린다.

1
2
3
4
5
6
7
8
9
from pykrx import stock
import sqlite3
 
 
df_kos = stock.get_index_fundamental('20030101''20220831''1001')
con = sqlite3.connect('krx_data.db')
df_kos.to_sql('kospi_index', con=con, if_exists='replace')
 
print(df_kos)
cs

Data를 DB에 저장했다. 다운받는데 시간이 얼마 걸리지 않으니 if_exists 옵션은 'replace'로 설정했다.

DB에 제대로 저장된 걸 보니 뿌듯해졌다.

 

퇴근하고 저녁 늦게 코딩을 했지만, 생각보다 더 빨리 끝나서 뭔가 재미있는 것을 좀 더 만들어 보기로 했다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sqlite3
import pandas as pd
import matplotlib.pyplot as plt
 
 
con = sqlite3.connect("krx_data.db")
df_kos = pd.read_sql("SELECT 날짜, 종가, 등락률, PER, PBR FROM kospi_index", con)
 
df_kos['날짜'= pd.to_datetime(df_kos['날짜'])
# df_kos['날짜'] = df_kos['날짜'].dt.strftime('%Y%m%d')
df_kos = df_kos.set_index('날짜')
 
plt.rcParams['figure.figsize'= (169)
 
fig, ax1 = plt.subplots()
ax1.set_xlabel('DATE')
ax1.set_ylabel('KOSPI')
ax1.plot(df_kos.index, df_kos['종가'], color='blue', label='KOSPI INDEX')
ax1.legend(loc='upper right')
 
ax2 = ax1.twinx()
ax2.set_ylabel('PER')
ax2.plot(df_kos.index, df_kos['PER'], color='red', label='KOSPI PER')
ax2.legend(loc='lower right')
 
 
plt.show()
 
cs

pykrx로 kospi 지수를 다운로드 받으면 KOSPI Index 뿐만 아니라 PER, PBR도 다운로드가 된다.

 

갑자기 코스피지수와 코스피 PER의 상관관계가 궁금해져서 그래프를 그려봤다.

 

KOSPI INDEX는 범위가 3000까지 가고 PER은 30까지 가서 단위가 맞지 않아서 그래프 축을 2개로 그렸다.

KOSPI 지수 VS KOSPI PER

 

PER이 KOSPI 지수보다 좀 더 빨리 선행하는 것을 확인할 수 있다. 그리고 중요한 사실을 한 가지 발견했다. PER이 KOSPI 지수보다 위에 있으면 항상 하락장이 왔다. 그런데 그것도 두개의 데이터가 범위가 다르니 내가 올바로 판단 했는지는 모르겠다. 

 

이 그래프는 나중에 저PBR x 저DPS 조건으로 20개 종목의 수익률과 각종 지수들을 비교하기 위해서 연습삼아 만들어 본 것이다.

 

시간은 걸렸지만, 나름 재미있는 작업이었다. 

 


 

항상 생각하지만, 인터넷에는 많은 정보가 다 있다. 똑똑한 사람이 이미 만들어 놓은 정보를 갖다 쓰기만 하면 된다. 좀 더 부지런한 사람이 이런 정보를 활용할 수 있다는 것 자체가 너무 마음에 든다.

 

고등학교 시절에 영어공부를 하던 때가 생각이 난다. 영어 교과서는 있지만 실제로 원어민이 어떻게 발음하는지 궁금했다. 하지만 그 당시 우리집 경제 여건이나 내 사정상 영어테이프를 구할 수도 없었고, 영어테이프가 있다는 사실을 알지도 못했다.

 

그 당시엔 돈이 곧 학업성적이었다. 돈 있는 집 애들은 학원이며, 과외를 했기에 당연히 그런거에 대한 기회가 없는 아이들보다 공부를 더 잘 확률이 높았다.

 

지금은 세상이 달라졌다. 내가 산간 오지에 있더라도 마음만 먹으면 공부를 잘 할 수 있다. 요즘 세상에서 돈이 없어서 지식을 얻지 못한다는 말은 거짓말이 되어 버렸다. 게으른 것이다. 

 

파이썬은 2~3년 전에 독학으로 시작했다. 책을 몇 권 구입하고, 도서관에서 빌려서 보기도 했다. 그리고 인터넷에 무궁무진한 정보를 틈날 때 마다 찾아보고 활용하고 있다.

 

우리 회사에서 프로그래밍을 배워보고 싶어 하는 사람은 꽤 있다. 나에게 문의를 한 사람도 몇 몇 있다. 하지만, 아무도 시작조차 하지 못했다. 나는 다 이해한다. 왜냐하면 사람이란 그렇게 진화를 했기 때문이다.

 

우리의 뇌는 생존을 위해서 진화를 했고, 뇌에 에너지가 많이 가게 되면 배고픔을 느끼게 되어 생존에 분리해진다. 뇌는 최대한 효율적이고, 게으르기 위해 노력한다. 그래야 에너지를 최소한으로 소비하기 때문이다. 그리고 사람은 새로운 것을 배우기가 힘들다. 수만년 전 우리 조상들이 새로운 것을 도전하게 되면 죽을 확률이 높아진다. 처음보는 맹수가 신기하다고 다가 가거나 처음보는 독초를 먹어 본 조상들은 이미 다 죽어서 유전자를 물려주지 못했기 때문이다.

 

사람이란 원래 그렇다. 하루종일 일하고, 집에서 집안일 하고, 애들하고 놀아주고 그러고 나서도 이렇게 코딩 하는 사람은 정상이 아니다. 집에오면 게임하고, 티비보며, 유튜브 보는 사람이 정상이다. 

 

불평등한 세상에 태어나서 나 스스로의 노력으로 점점 평등해 질 수 있다는 사실에 너무나 감사한다.

728x90
반응형

댓글