호돌찌의 AI 연구소
article thumbnail

개인 투자자가 퀀트 투자를 시작하는 데 있어 제일 난이도가 높은 부분은 양질의 주식 종목의 데이터 수집과 품질 검수 부분이라고 생각합니다. 이 부분에 있어 양질의 데이터와 백테스팅을 하는데 도움을 주는 플랫폼으로 젠포트가 있습니다. 퀀트 투자 입문하는데 다양한 팩터와 조건식 함수를 바탕으로 전략을 구현 및 검증을 하고 실전 매매하는데 꽤나 간편한 도구로 평가를 받고 있는데, 유튜브 "할 수 있다! 알고 투자" 채널을 운용중이신 강환국 작가님 나오는 내용을 바탕으로 젠포트에서 구현을 시작해보겠습니다. 

 

 

전략 소개


다루고자 하는 전략은 아래 영상을 바탕으로 작성하고자 합니다. 아래 영상은 21년 5월에 나온 영상임을 참고해주시길 바랍니다. 이 글을 읽고 따라하기 전에 한번 보시는 것을 추천드립니다. 

 

https://youtu.be/rlTMJwsXl0w

 

여러 나라 주식시장에서 소형주 효과 (smallcap effect)는 좋은 수익을 안겨다 준다고 알려져 있습니다. 물론 소형주 매매 전략은 큰 금액을 운용하기 상대적으로 어렵지만 아마 퀀트 투자를 시작하는 데 있어 타임프레임이 짧은 전략 대비 난이도가 쉬운 편이라 가장 접근하기 쉬운 전략이라 많이 생각됩니다. 이를 바탕으로 구현을 하기 전에 영상에 나오는 유진 파마가 제시하는 팩터들을 한번 정리해보겠습니다. 

 

 

팩터 소개


1. 소형주

한국 주식시장 시가총액을 10 분위로 나누었을 때 복리 수익이 시가총액 하위 10%가 뛰어나다는 것을 보여주고 있습니다.

 

 

2. PBR

주식 투자 시 기초적인 가치 분석 지표 중 하나인 PBR은 주가를 주당순 자산으로 나눈 것인데, 쉽게 설명하면 주가가 해당 주식에 대한 순자산에 비해 1주당 몇 배로 거래되고 있는지 측정하는 지표입니다. 낮으면 낮을수록 싸다고 생각할 수 있습니다. PBR이 낮을 수록 복리수익이 높게 나타난 것을 알 수 있습니다. 

 

3. 성장률과 수익성

성장률이 낮은 기업이 좋다고 소개를 하는데, 보통 반대로 생각하기 쉽지만 성장성이 큰 기업은 유상증자나 부채가 큰 경우도 있고 기대감이 커서 추후에 과한 낙폭을 불러일으킬 수 있다고 이야길 합니다. 또한 수익성 부분은 높은 기업을 이야길 하였고, 작가님은 GP/A를 활용하였습니다. 아래 10분 위수는 자산성장률(낮을수록 좋음)과 GP/A(높을수록 좋음)의 평균 순위를 매긴 결과라고 합니다. 

 

위의 팩터들을 종합하면 시총이 낮은 소형주이면서, 가치주 & 자산 성장이 낮으면서 수익성이 뛰어난 기업들을 우선적으로 보겠다는 컨셉인 전략이라고 생각하면 됩니다. 이런 컨셉을 바탕으로 여러 가지 전략을 구현할 수 있지만 이번 글은 영상에 나온 대로 구현해보겠습니다. 

 

 

젠포트로 전략 구현하기


1. 테스팅 기간 설정 및 기본 조건

아래 그림과 같이 세팅을 하였습니다. 2007년 1월 2일부터 2022년 9월 13일까지 테스팅 기간으로 선정하였습니다. 

2. 매수 타점 및 종목 비중 설정

타점은 전일 종가 그대로 활용하였고 20 종목을 매수하도록 하였습니다. 복리로 불어난 수익은 최대 500 종목까지 보유하여 예수금을 최대한 쓰도록 하였습니다. 참고로 종목수는 최대 50개(매수 비중 2%)까지 지정이 가능합니다. 종목수가 늘어나면 mdd가 상대적으로 줄어들지만 수익률도 떨어질 수 있습니다. 또한 백테스트 소요 시간이 길어지는 점 참고하시면 되겠습니다. 

 

3. 매도 타점 설정 및 종목 보유일 설정

특이한 조건 없이 20 영업일(1개월) 최대한 보유하게 세팅하였습니다. 매도 타점은 전일 종가로 간편하게 두었습니다. 

 

4. 매매대상 유니버스 설정

은행, 지주사, 인터넷은행, 중국기업을 제외하여 세팅을 하였습니다. (개인 취향에 가깝다고 생각하시면 됩니다.)

 

5. 매수 조건 식

아래와 같이 세팅을 하였습니다. 설명하면 다음과 같습니다. 따로 다른 조건식마다 함수를 적용하지 않고 AND 조건으로 연결하였습니다. 

 

A : {영업이익} > 0 
B : {트레일링매출} > 3,000,000,000
C : {시가총액} > 40
D : {일별주가상승률}*{일별주가상승률} <= 625
E : {종가} > 1,000
F : 비율('{총발행주식수}*{종가}',{오름차순}) <= 20
G : {KOSDAQ 지수_종가}/이동평균({KOSDAQ 지수_종가},{20일}) > 1

A ~ C : 직전 분기 영업이익이 나면서, 상장폐지 종목을 최소화시키기 위한 매수 조건식입니다.

D : 전일 +/- 25% 이상의 변동성을 보인 종목을 제외하였습니다. 간단하게 이야길 하면 전일 상한가, 하한가 간 종목을 제외하였다고 생각하면 됩니다. 

E : 동전주를 제거하기 위함입니다.

F : 시가총액 하위 20% 종목을 보겠다는 뜻입니다. 

G : 기본적인 마켓타이밍은 소형주를 매매하는 데 있어 매매 횟수가 잦아지기 때문에 20일 이동평균선을 상회할 때에만 매수한다고 설정하였습니다. 마켓타이밍 글 레퍼런스는 여기를 참고해보시면 좋을 것 같습니다. 

 

 

6. 우선순위

가장 중요한 부분이라고 할 수 있는 우선순위입니다. 아래 식 전체로는 내림차순으로 정하였습니다. 4번에서 유니버스로 설정한 2200여 개의 종목들 중에서 5번의 매수 조건식으로 필터링 후, 우선순위를 적용하여 20 종목을 사서 20일 보유한다는 뜻입니다. 비율 함수를 적용시켰는데, 개인적으로 작은 정수 값으로 떨어지는 순위 함수보다 정도의 개념을 더 선호하기 때문에 비율 함수로 적용하였습니다. 참고로 아래 우선순위에서 순위로 전부 바꾸고, 전체 오름차순으로 백테스팅을 하면 결과는 비슷하게 나타납니다. 

# 전체 내림차순 정렬
비율({주가순자산률(PBR)},{내림차순}) + 비율({자산성장율(YOY)},{내림차순}) + 비율({GP/A},{오름차순})

 

7. 매도 조건 식

5번 매수 조건 식 G에서 부호만 바꾸었습니다. Kosdaq 지수가 20일 이동평균선을 하회할 때 보유 종목을 전일 종가 기준으로 매도한다는 뜻입니다. 

 

전략 Performance


위와 같이 구현했을 때 결과는 아래와 같습니다. 작년 코스닥 소형 지수 index가 제 기억상으로 7월 중순에 고점을 찍고 내려왔는데, 올해는 퍼포먼스가 좋지 않음을 알 수 있습니다. 

 

위의 전략에서 소형주의 효과를 조금 더 극대화시켜보도록 하겠습니다. 위의 5번 매수 조건식에서 시가총액 하위 20% 추출하는 F 조건식을 빼고 아래와 같이 2차 정렬을 활용해보겠습니다. 

{시가총액} (오름차순)
[2차: 비율({주가순자산률(PBR)},{내림차순})+비율({자산성장율(YOY)},{내림차순})+비율({GP/A},{오름차순}) (내림차순)]

이 뜻은 지정한 유니버스 내에서 매수 조건식을 적용 후 시가총액 하위 50개의 종목을 고른 후, 2차 정렬을 적용해 재 정렬 후 20개의 종목을 매수한다는 뜻입니다. 그 결과는 아래와 같습니다. 

수익률 흐름은 비슷하지만 cagr이 조금 더 높았고, 낙폭이 처음 전략보다는 줄어들었습니다. Sharpe Ratio도 2.08에서 2.57로 조금 개선이 되었음을 알 수 있습니다. 

 

최근 기준으로 소형주 전략을 여러 개 만들어보면 다수의 전략이 최근에 좋지는 않습니다. 하지만 본인만의 아이디어를 바탕으로 구현해서 수익을 창출하고 계신 개인 투자자분들도 있을 것이라 생각됩니다. 이 글이 젠포트를 처음 접하시는 분들에게 조금이나마 도움이 되면 좋겠습니다. 또한 반응이 좋다면 여러 전략을 구현해보는 컨텐츠로 찾아보겠습니다. 틀린 점이나 궁금한 점이 있으면 댓글 달아주시면 감사하겠습니다. 

 

 

*추가)

유진 파마 ver 1이 base 전략이고, ver 3이 시총 하위 20% 적용 조건을 제외하고 2차 정렬을 사용한 전략입니다. #1 이 붙은 것은 비율 함수에서 순위 함수를 적용한 것입니다. 아래 캡처본을 확인해주시면 됩니다. 

전략 비교 누적 수익률
전략 수식 비교

 


아래는 블로그 주인장의 토스 익명 후원 링크입니다. 글이 너무 너무 도움되거나 흡족스러웠다면 후원해주시면 감사하겠습니다.

https://toss.me/hotorch

 

hotorch님에게 보내주세요

토스아이디로 안전하게 익명 송금하세요.

toss.me

 

profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!