본문 바로가기

퀀트

[퀀트 프로젝트] 멀티팩터 포트폴리오

5. 목차

파트 5는 이전 파트에서 간단하게 살펴보고 검증한 팩터들을 조합하여 최종적인 포트폴리오를 만드는 단계입니다. 

  • Step 1: 멀티팩터 포트폴리오가 무엇인지 그리고 멀티팩터 포트폴리오로 유명한 조엘 그린블라트의 마법공식을 사용해서 국내주식으로 구성해보겠습니다.
  • Step 2: 팩터들의 결합 방법에 대해 알아보겠습니다.
  • Step 3: 최종 포트폴리오를 설정하고 이를 구성할 종목을 선정하겠습니다.

5.1 멀티팩터 포트폴리오

  • 밸류 팩터와 퀄리티 팩터는 종종 상반되는 경향을 보이지만, 둘다 각각의 이유로 높은 수익률을 제공합니다.
  • 이 두 팩터를 적절히 조합함으로써, 합리적인 가격에 내재 가치가 높고 우수한 주식을 선별할 수 있습니다.
 
 

국내 종목 데이터로 상관관계 표를 만들어보면, 벨류 지표인 PBR(Price to Book Ratio)과 퀄리티 지표인 GPA(Gross Profitability Asset) 사이에는 -0.1367의 음의 상관관계가 있는 것을 확인할 수 있습니다.

우측 아래의 그래프를 보면 가치 지표(PBR)이 낮을수록 우랑성 지표(GPA)이 낮은 모습을 확인 할 수 있습니다.

  • , 가치주일수록 우량성은 떨어짐! 

 

 

 

 

이를 이용해서 밸류 팩터와 퀄리티 팩터간의 관계를 표로 나타내보겠습니다.

 

 

 

 

밸류 팩터와 퀄리티 팩터를 바탕으로 주식을 분류하면, 다음과 같이 네 가지 유형으로 나눌 수 있습니다:

  1. 저밸류-저우량성 주식 (1번): 주가가 저렴하지만 우량성이 낮은, 전형적인 가치주입니다.
  2. 고밸류-저우량성 주식 (2번): 주가가 비싸고 우량성도 떨어지는, 투자하기에 불리한 종목입니다.
  3. 고밸류-고우량성 주식 (3번): 우량성은 높지만 주가도 높은, 전형적인 우량 주식입니다.
  4. 저밸류-고우량성 주식 (4번): 우량성이 뛰어나면서도 주가가 저렴한, 이상적인 우량가치주입니다.

이 중 우리가 찾고자 하는 이상적인 투자 대상은 바로 4번, 저밸류-고우량성 주식입니다. 이는 높은 수익성합리적인 가격을 모두 갖춘 최적의 투자 기회를 나타냅니다.

 

 

 

 

 

그럼 각각의 팩터들 중에서 어떤 지표를 사용하고 어떻게 결합해서 포트폴리오를 만들어야할까요?

 

 

 

고담 캐피탈의 설립자이자 전설적인 투자자 조엘 그린블라트마법 공식이 이에 대한 답이 될 수도 있을 것 같습니다.

 

 

  • 우량가치 종목을 선정하는 대표적인 전략 중 하나는 조엘 그린블라트가 제시한 마법 공식입니다.
  • 그린블라트는 고담 캐피탈의 설립자이자 전설적인 투자자로, 자신의 저서 《주식 시장을 이기는 작은 책》에서 투자 시 고려해야 할 두 가지 중요한 지표를 강조합니다.
  • 이 두 지표를 효과적으로 결합함으로써, 투자자들은 뛰어난 성과를 달성할 수 있다고 주장합니다.

  • 조엘 그린블라트의 마법 공식은 밸류 지표인 이익 수익률과 퀄리티 지표인 투하자본 수익률을 활용합니다.
  • 두 지표에 대한 순위를 각각 매긴 후, 이 순위들의 합이 가장 낮은 상위 30~50개 종목을 선정하여 1년간 보유한 뒤, 주기적으로 리밸런싱을 실시하는 전략입니다.
    • 그린블라트는 17년 간의 테스트 기간 동안, 마법 공식이 연간 30.8%의 수익률을 기록했으며, 이는 같은 기간 동안의 S&P 500 평균 연간 수익률을 크게 상회한다고 주장했어요! 너무 공식이 간단해서 놀랍지 않나요?

이익 수익률 & 투하자본 수익률 공식

  • 이익 수익률은 기업의 이자 및 법인세 차감 전 이익(EBIT)을 기업 가치로 나누어 계산합니다.
  • 투하자본 수익률은 같은 이익을 총 투하자본으로 나누어 구합니다.
  • 이제 재무제표 데이터를 기반으로 국내 시장에서 마법 공식 포트폴리오를 구성해 봅시다!

재무제표 데이터를 불러온 후, 데이터 전처리 과정을 거쳐 각 종목에 대한 이익 수익률과 투하자본 수익률을 계산합니다.

 

 

 

 

뚝딱뚝딱..

 

그러면 왼쪽의 데이터 프레임 완성!

 

  • 그린블라트의 방법에 따라 다음 단계를 진행합니다: 1) 지정된 두 열에 대해 각각 순위를 매깁니다. 2) 이 두 순위를 합산하여 새로운 합계 순위를 생성합니다. 3) 합계 순위를 기준으로 오름차순으로 정렬한 후, 상위 20개 종목을 선택합니다.

국내 종목 마법 공식 포트폴리오 완성! 그래프를 그려보면 마법공식에 선택된 종목들이 투하자본 수익률과 이익 수익률이 둘 다 높은 오른쪽 위에 포진한 모습을 볼 수 있다.

 


 

 

이제 팩터 결합 방법에 대해서 살펴보겠습니다.

 

 

 

'이미 다룬 것 아닌가?' 하고 생각 하실 수 있는데요. 

 

 

 

1)단순히 순위를 매긴 다음 2)합산하고 3)오름차순으로 종목을 선정하는 것에는 문제가 있을 수 있습니다!

 

 

5.2 팩터 결합 방법

 

  •  적은 종목을 다룰때는 문제가 사소해 간단하고 효율적으로 사용할 수 있습니다.
  • 하지만 이를 많은 종목을 다루는 포트폴리오에서 사용한다면 큰 문제점이 발견할 수 있습니다.

왼쪽 그림은 각  밸류 지표의 순위 히스토그램입니다.

순위 매기기의 주요 이점 중 하나는 극단적인 값의 영향을 줄이고 데이터의 분포를 더 균일하게 만드는 것입니다.

  • 예를 들어, PBR 값이 매우 높거나 낮더라도 순위는 1위, 2위, 3위로 표시되므로 극단값의 영향력이 감소합니다.

그러나, 각 지표별 최대값이 다를 때, 실제 활용 가능한 데이터 수의 차이로 인해 발생하는 문제를 볼 수 있습니다.

  • 예를 들어, 보시는 것처럼 DY(배당수익률)에 누락된 데이터가 많으면 실제 순위는 제한적 범위 내에서만 나타납니다.
  • 국내 기업은 배당을 너무 안 줘서 빈 데이터 많은 것 같네요 (T.T)

각 팩터(DY, PBR, PCR, PER, PSR)에 동일한 비중(20%)을 부여하여 포트폴리오를 구성한다고 가정하면, 순위의 범위가 다르기 때문에 결과에 왜곡이 발생할 수 있습니다.

  • 이해를 돕기 위해 예시를 들자면,
  • 모든 지표의 순위 범위가 1부터 10000까지인 반면, 어떤 지표의 순위 범위가 1부터 10까지인 경우, 해당 지표의 영향력은 상대적으로 줄어들게 되겠죠!

  • 각 팩터별로 순위를 매긴 후, 이를 z-score로 정규화하는 접근법은 데이터 간 왜곡 효과를 제거하고 안정적인 포트폴리오 구성을 가능하게 합니다.
  • 이 방식은 다양한 지표들의 분포를 표준화하여, 모든 팩터가 포트폴리오에 공정하게 기여할 수 있도록 합니다.
    • 이러한 이유로 AI 모델을 돌릴 때도 꼭 전에 데이터를 정규화 시킨다는 사실!

 

이제 팩터 결합 방법도 알았으니 최종 포트폴리오를 만들어봅시다!

 

 

제 최종 포트폴리오에는 이전 파트에서 살펴본 벨류 팩터, 모멘텀 팩터, 퀄리티 팩터를 모두 사용할 거예요. 

 

 

5.3 최종 포트폴리오

  • 팩터 결합 방식에 따라, ROE, GPA, CFO의 각 순위를 z-score로 변환하고 이를 합산하여 z_quality컬럼을 생성합니다.
  • 마찬가지로 DY, PBR, PCR, PER, PSR을 이용하여 z_value컬럼을 형성합니다.
  • 또한, 12개월 수익률과 꾸준함을 나타내는 K_ratio를 활용해 z_momentum컬럼을 구성합니다.

 

 

 이제 z_quality, z_value, z_momentum동일한 비중으로 합산해서 투자결정을 판가름할 하나의 컬럼을 만들건데요!

그 전에 z_quality, z_value, z_momentum 컬럼의 스케일이 다르니 또 한번 각각 정규화를 시켜줍시다!

 

 

  • 각 팩터 간의 상관관계를 분석한 결과, 상관관계가 매우 낮음을 확인했습니다.
    이는 여러 팩터를 함께 사용할 경우 분산 효과를 기대할 수 있음을 의미하죠!
    따라서, 이들 모든 팩터를 포트폴리오 구성에 활용하는 것이 좋을 것이라는 확신을 얻었습니다!

 

  • 최종적으로, 'z_quality', 'z_value', 'z_momentum'에 각각 0.3의 비중을 주어 이 세 가지 팩터를 종합한 'qvm' 값을 생성합니다.
  • 'qvm' 값이 낮은 상위 20개 종목에 대해서는 'INVEST' 컬럼을 'Y'로 표시하고, 나머지 종목에 대해서는 'N'으로 표시합니다.
    • 이 비중은 개인의 투자 선호에 따라 조정할 수 있습니다.
  • 다음 파트에서 API를 통한 자동 매매에 활용할 수 있도록 선정된 20개 종목은 엑셀 파일로 저장합니다!

 

 

포트폴리오 종목코드가 들어있는 엑셀파일!

 

내 트레이딩 봇의 코드 구조

  • 포트폴리오 모듈들과  포트폴리오 구축 스크립트(portfolio_builder.py)에 해당하는 파트가 이로써 끝났습니다!

 

 

요리조리봐도 완벽한 종목들을 구했으니 트레이딩 해보러 가봅시다!

 

 

Hurray! 이제 부자되는 건가요?ㅎㅎ