파이썬 퀀트투자 쉽게하기 - 4 프로그래밍 없이 백테스트 하기
본문 바로가기
파이썬(Python)/퀀트투자

파이썬 퀀트투자 쉽게하기 - 4 프로그래밍 없이 백테스트 하기

by 만초손겸수익 2021. 11. 29.

이번 시간에는 프로그래밍을 하지 않고, 손쉽게 백테스트 하는 방법에 대해서 포스트 해 보겠습니다.

 

퀀트투자는 말 그대로 계량투자를 말합니다. 일정한 조건으로 종목을 선별해서 규칙적으로 사고, 팔고(리벨런싱)을 하면서 장기간 복리수익을 기대하는 투자법입니다.

 

계량 조건은 간단한 PER, PBR 부터 매출액, 영업이익률 등 투자자 성향에 따라 여러 요소가 될 수 있습니다. 중요한 점은 백테스트를 통해 장기간 수익률이 괜찮은 요소로 투자를 해야 한다는 것입니다.

 

지난 포스트에서도 말씀 드렸듯이 시중에 판매되는 프로그램을 사용하셔서 백테스트를 해도 되지만, 더욱 간단한 방법으로 직접 백테스트를 하는 방법이 있습니다.

 

일단 저 PBR 기준으로 20개 종목을 선정 후 1년 후 수익률을 확인하는 백테스트 방법에 대해 알아 보겠습니다.

 


우선 아래 링크와 같이 'KRX' 홈페이지에 접속합니다.

 

http://www.krx.co.kr/

 

한국거래소

 

www.krx.co.kr

 

한국거래소(KRX) 홈페이지 캡쳐

한국거래소(KRX) 홈페이지 상단에 "정보 데이터 시스템" 메뉴를 클릭해서 들어갑니다.

 

KRX 정보데이터 시스템 캡쳐

KRX 정보데이터 시스템 왼쪽 메뉴에서 "주식 >> 세부안내 >> PER/PBR/배당수익률(개별종목)" 순으로 들어갑니다.

 

데이터 다운받기

"PER, PBR/배당수익률(개별종목)" 페이지에서 시장구분을 "전체"로 선택하고, 조회일자를 2020년 11월 27일로 선택후 오른쪽에 "조회" 버튼을 누릅니다. 해당 데이터가 나오면 오른쪽 상단에 다운로드 아이콘을 클릭해서 엑셀 파일로 다운로드 받습니다.

 

2021년 11월 26일자 데이터

 

2021년 11월 26일 데이터도 동일한 방법으로 다운로드 받습니다.(2021년 11월 27일은 토요일이므로 데이터가 없습니다. 그래서 금요일자 데이터를 다운로드 받습니다.)

 

다운로드 받은 2020년 11월 27일자 엑셀파일

우선 다운로드 받은 2020년 11월 27일자 엑셀파일을 엽니다.

 

'종목코드'라고 적힌 셀(A1)을 클릭하여 선택한 후 메뉴에서 '필터'를 클릭합니다. 오름차순으로 정렬을 해 주기 위하여 필터를 걸었습니다.

 

동일한 파일(2020년 11월 27일자 파일)에서 'PBR'을 숫자 오름차순으로 정렬해 줍니다. 오름차순은 낮은 수 부터 차례로 정렬해 주는 기능입니다. 저 PBR 20 종목을 고르기 위해 PBR이 낮은 순으로 정렬했습니다.

 

맨 아래 '-' 표시는 PBR이 0이하인 종목들입니다. 이 종목들은 삭제 하도록 하겠습니다.

 

PBR이 '-' 표시된 부분의 행을 선택 후 마우스 오른쪽 버튼을 눌러서 '행 삭제'를 해 주시면 됩니다.

 

이제는 1년 후의 주가를 비교하기 위해서 2021년 11월 26일 데이터를 2020년 11월 27일 엑셀파일로 가져 오겠습니다.

 

2021년 11월 26일 엑셀파일

2021년 11월 26일 엑셀파일의 시트 탭을 마우스 오른쪽 버튼으로 클릭해서 "이동/복사"를 선택합니다.

 

'대상 통합 문서'는 2020년 11월 27일자 엑셀파일을 선택해 주시고, 시트를 끝으로 이동하는 것을 선택합니다.

 

복사본 만들기에 체크하시고, 확인을 클릭합니다.

 

이제 2020년 11월 27일 파일에 시트가 2개가 보이는 것을 확인할 수 있습니다.

 

2020년 11월 27일자 데이터

 2020년 11월 27일자 데이터에 PBR이 낮은 순으로 정렬(오름차순)은 이미 했습니다. 이제 낮은 순으로 20개 종목만 선택합니다.

 

1년 후의 수익률을 확인하기 위하여 2021년 11월 26일자 종가를 옆에다 기록해 봅니다.

일일이 찾아보고 값을 넣을 수도 있지만, 위의 그림과 같이 수식을 사용하면 쉽게 1년 후 종가를 입력할 수 있습니다.

 

수식 입력 후 셀의 오른쪽 하단 모서리에 마우스를 갖다 대면 "+" 모양이 나타납니다. 그 상태로 아래로 내려주면 자동체우기 핸들이 적용되어 수식이 자동으로 입력됩니다. 

 

2021년 11월 26일 종가 옆에 수익률도 입력합니다. 위의 그림과 같이 수식을 입력 후 채우기 핸들을 이용하셔서 20개 종목 수익률을 모두 입력합니다.

 

맨 아래에는 평균을 입력 합니다. 직접 계산하셔서 입력하셔도 되고, "AVERAGE" 수식을 사용하셔도 됩니다.

 

#N/A 라고 적힌 종목은 상장폐지가 되었던지, 합병이 되어서 종목번호가 없어진 종목입니다. 보수적으로 백테스트를 하기 위하여 수익률은 -100%로 설정합니다. 

 

1년 후 총 수익률은 44.3%가 나왔습니다. 1억을 넣으면 4천 4백만원 정도의 금융수익이 발생한 것입니다.

 

이런식으로 15년 이상 백테스트를 진행하시면 됩니다.

 

 

백테스트를 진행하다 보면 수익률이 너무 큰 종목들이 있습니다. 이 종목들은 혹시 감자가 진행된 건 아닌지, 다른 문제가 있는 종목은 아닌지 아니면 Test 의 계산이 잘못 된 건 아닌지 확인해 보셔야 합니다.

 

개인적인 생각으로 백테스트는 최대한 보수적으로 진행해야 합니다. 하지만, 일일이 다 확인하며 15년~20년 치의 백테스트를 다 해보기란 시간이 너무 많이 걸립니다.

 

그리고 저 PBR만 기준으로 20년 동안의 백테스트를 진행해 보았지만, 만족할 만한 수익률이 안 나올 수도 있습니다. 이럴때는 종목을 선정하는 요소를 바꿔서 해 보아야 합니다.

 

저 PER 조건도 해 보고, 저 PBR과 저 PER 콤비네이션 등 이런 식으로 여러 조건으로 테스트를 모두 해 보아야 합니다. 또한 주식거래가 정지된 항목도 제외해야 하며, 감자 된 항목은 줄어든 주식수량 만큼 금액을 감해주어야 합니다.

 

'할수있다 퀀트투자'의 저자 '강환국'씨는 저 PBR 조건에서 0.2 이상만 투자를 한다고 하시더라구요. 이런식으로 가장 수익률을 극대화 할 방법을 찾기위해 많은 백테스트를 직접해 볼 필요가 있습니다.

 

그런데 이 포스트에서 알려드린 방법으로는 시간이 너무 많이 소요되고, 손도 많이 간다는 단점이 있습니다.

 


 

그래서 저는 파이썬이라는 프로그램을 사용했습니다. 

 

일단 코딩을 간단하게 하면, 그 다음에는 프로그램이 알아서 15년 이상 데이터를 백테스트 하고 결과도 정리해서 알려줍니다.

 

혹시 이번 글이 어려우셨나요? 나름대로 쉽게 쓴다고 썼는데 혹시라도 어려우셨더라도 너무 걱정하지 않으셔도 됩니다. 

 

파이썬으로 코딩하는게 더 쉽습니다.

 

그냥 따라하시면 됩니다. 모르셔도 제 블로그 보면서 똑같이 따라하시면 자동으로 백테스트를 할 수 있는 봇을 직접 쉽게 만들 수 있습니다. 

 

728x90
반응형

댓글