파이썬으로 마법의 공식 구현하기 1 - 종목 데이터, PER 가져오기
본문 바로가기
파이썬으로 만든 것들/마법의 공식

파이썬으로 마법의 공식 구현하기 1 - 종목 데이터, PER 가져오기

by Squat Lee 2021. 5. 26.

조엘그린블란트의 마법의 공식은 상당히 유명합니다.

 

PER과 ROA를 이용해서 종목을 골라내는 방법이죠.(엄밀히 말하면 실제 마법의 공식과 약간 다릅니다.)

 

우리나라에서는 맞지 않다고 하시는 분이 많은데, 예전에 엑셀 매크로로 10년치 데이터를 백테스트 해 보니 평균 수익률이 꽤 높더라구요. 

 

저는 마법의 공식으로 실제로 투자를 해서 23%, 15% 수익을 4개월만에 달성한 적도 있습니다.

 

코로나 폭락장 이전부터 폭락장이 이어지는 내내 마법의 공식으로 투자를 했는데, 투자 수익률이 나쁘지 않았습니다. 더구나 오래 보유하고 있으면 수익률이 많이 상승하는 경험도 있었습니다.

 

좀 더 마법의 공식을 쉽게 하기 위해서 파이썬으로 구현을 했었습니다. 본업이 바빠서 한동한 투자에 손을 놓고 지내다가 다시 마법의 공식을 파이썬으로 구현하기로 했습니다.

 

주말동안에 열심히 코딩을 해서 위와 같이 자동으로 마법의 공식이 정리되어 엑셀로 저장되는 코드를 만들었습니다.

 

이제부터 마법의 공식을 만드는 파이썬 코드에 대해 기록해 보겠습니다.

 

마법의 공식을 이용하기 위해서 우선 종목 코드가 필요합니다.

 

예전에는 KRX에서 엑셀을 다운로드 받아서 판다스의 read_excel로 데이터를 불러왔는데, 검색해 보니 어느 능력자께서 KRX 데이터를 자동으로 가져오는 라이브러리를 만드셨더라구요.

 

필요한 모듈은 이정도 입니다.

 

pykrx는 krx데이터를 가져올 수 있는 라이브러리입니다.

 

'종목코드'와 'PER'을 가져올 수 있는 함수입니다.

 

tickers = stock.get_market_ticker_list(date, market='ALL')

 

종목 리스트를 가져오는 함수인데, 파라미터로 날짜를 입력하면 됩니다. 옵션으로 'ALL'을 넣으면 코스피, 코스닥 전부 가져올 수 있습니다.

 

corp=[]

for ticker in tickers:
corp_name = stock.get_market_ticker_name(ticker)
corp.append([ticker, corp_name])

 

데이터프레임을 만들기 위해 종목코드(ticker)와 종목이름(corp_name)을 리스트(corp)에 저장하는 코드입니다.

 

df = pd.DataFrame(data=corp, columns=['종목코드', '종목명'])
df = df.set_index('종목코드')

 

데이터프레임을 만들때 위에서 만든 리스트를 데이터로 넣고 컬럼명을 '종목코드', '종목명'으로 각각 지정해 줍니다.

그리고 '종목코드' 컬럼은 인덱스로 설정해 줍니다.(PER 데이터를 가져와서 데이터를 합칠(merge) 할 거기 때문에...)

 

df_f = stock.get_market_fundamental_by_ticker(date, market='ALL')

df = pd.merge(df, df_f, left_index=True, right_index=True)

return df

 

stock.get_market_fundamental_by_ticker는 날짜 파라미터를 넣으면 PER, EPS, BPS... 등의 데이터를 가져올 수 있습니다. 여기서 가져오는 데이터에는 종목이름이 없기 때문에 위에 만든 'df'와 합쳐줘야 합니다.

 

pd.merge를 사용해서 각 데이터프레임의 인덱스로 합쳐주고 df를 반환합니다.

 

다음 포스트는 ROA를 가져오는 코드에 대해서 설명하겠습니다.

 

 

2021.05.27 - [파이썬/Python Project] - 파이썬으로 마법의 공식 구현하기 2 - ROE 가져오기

 

파이썬으로 마법의 공식 구현하기 2 - ROA, ROE 가져오기

지난번 포스트에 이어서 이번에는 ROA를 웹에서 가져오는 방법을 기록하겠습니다. 지난번 포스트는 아래 링크를 참고하세요 ↓ 2021.05.26 - [파이썬/Python Project] - 파이썬으로 마법의 공식 구현하기

dotsnlines.tistory.com

 

 

CAGR(연복리 수익률) 30%를 목표로 하는 파이썬 퀀트투자법이 궁금하시다면 아래 링크를 클릭해 보시기 바랍니다.

2021.11.21 - [집구석 강의/파이썬 퀀트투자 쉽게하기] - 파이썬 퀀트투자 쉽게하기 - 1. 들어가는 글

 

파이썬 퀀트투자 쉽게하기 - 1. 들어가는 글

퀀트투자는 참으로 매력적인 투자방법입니다. 일정한 기준으로 종목을 선별해서 일정한 기간 후에 기계적으로 매도하고, 다시 같은 방법으로 매수합니다. 이런 작업을 계속해서 반복하다 보면

dotsnlines.tistory.com

 

728x90
반응형

댓글