지난 포스트에서 KRX에서 영업일을 다운받아 DB에 저장하는 과정을 기록했다.
이제 드디어 데이터를 다운 받았다. 다행히 차단되지 않고, 한 번에 받았지만 아주 오래 걸렸다.
미리 받은 영업일을 데이터프레임을 가져오고, 다시 List로 저장 했다.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
from pykrx import stock
from datetime import datetime, timedelta
import pandas as pd
import numpy as np
import time
import sqlite3
# 영업일을 List로 가져오기
con = sqlite3.connect('krx_data.db')
df = pd.read_sql("SELECT * FROM dates", con)
dates = df['일자'].to_list()
print(dates)
def data_download(date):
codes = stock.get_market_ticker_list(date, market='ALL') # code list 만들기
corp = [] #Code와 Name을 저장할 List
for code in codes:
name = stock.get_market_ticker_name(code) #종목 이름 가져오기
corp.append([code, name]) #Code와 이름으로 리스트를 만들기
df1 = pd.DataFrame(data=corp, columns=['code', '종목명'])#code와 종목명을 데이터프레임으로 만들기
df1.index = df1['code'] #index를 코드로 만들기
df_f = stock.get_market_fundamental_by_ticker(date=date, market='ALL')#BPS, PER, PBR, EPS, DIV, DPS 가져와서 데이터 프레임 만들기
df_c = stock.get_market_cap_by_ticker(date=date, market='ALL')#종가, 시가총액, 거래량, 거래대금, 상장주식수 가져오기
time.sleep(1)
df = pd.merge(df1, df_c, left_index=True, right_index=True) #종목명, 종가, 시가총액, 거래량, 거래대금, 상장주식수
df = pd.merge(df, df_f, left_index=True, right_index=True) #위에 df + PER, PBR...
#column은 '종목명', '종가', '시가총액', '거래량', '거래대금', '상장주식수', 'BPS', 'PER', 'PBR', 'EPS', 'DIV', 'DPS'
df['일자'] = np.array([date]*len(df))
df = df.set_index('일자')
return df
# 데이터 받아서 데이터프레임으로 합치고, DB에 저장
try:
for n, date in enumerate(dates):
print(date)
if n == 0:
t_df = data_download(date)
else:
t_df = pd.concat([t_df, data_download(date)])
time.sleep(1) #혹시나 차단될 수 있으니깐
print(t_df)
con = sqlite3.connect("krx_data.db")
t_df.to_sql('fundamental', con, if_exists='append')
except:
pass
|
cs |
영업일을 받는 과정은 너무나 힘들고, 손이 많이 갔지만, 만들어진 영업일로 재무데이터를 가져오는데는 시간은 좀 걸렸지만 어려움이 상대적으로 덜 했다.
이제 맘껏 백테스트를 해 볼 수 있어서 다행이다. 이렇게 노력만 조금 하면 원하는 것을 얻을 수 있는 세상에 태어난 것에 감사한다.
728x90
'파이썬(Python) > 퀀트투자' 카테고리의 다른 글
퀀트투자 - 환율데이터 DB에 저장하기, KOSPI와 상관관계 확인해 보기 그리고 사기꾼과 욕심에 관한 내 생각 (0) | 2022.09.29 |
---|---|
퀀트투자 - KRX에서 KOSPI 지수, PER, PBR 다운로드 받아서 DB에 저장하기 (0) | 2022.09.27 |
퀀트투자 - KRX에서 영업일 다운로드 받기 (2) | 2022.09.23 |
퀀트투자 - 통계적인 관점에서 백테스트 수익률 분석 (1) | 2022.09.21 |
퀀트투자 분할매수 백테스트(파이썬) (2) | 2022.08.31 |
댓글