파이썬으로 구현하는 로보어드바이저 (윤성진, 리준, 이유리, 조민기, 허재웅) - 안전 고려 사항이 없는 고층 빌딩 건축 설명서 (서평)

오렌지사과키위 2024. 9. 4. 17:59

최근 들어 국내에 퀀트 투자에 대해 조금 더 깊게 소개하는 책들이 출판되는 듯합니다. 개인적으로 반가우면서도 한편으로는 달갑지 않습니다. 장기적으로 주식 시장의 전체 수익은 고정되어 있다고 볼 수 있습니다. 시장 전체 수익은 기업이 얼마나 잘 버느냐에 달린 것이지, 개별 투자자가 얼마나 투자를 잘하느냐와는 무관하다고 볼 수 있습니다. 주식 투자는 한정된 수익을 나누어가지는 포지티브 섬(positive sum) 게임이기 때문입니다.

주식 투자는 채권 투자에 비유할 수 있습니다. 부도가 날 가능성이 없는 채권이라면 발행 시점에 미래의 모든 수익이 결정됩니다. 어떤 투자자는 신규 발행된 채권을 매수해서, 만기까지 보유하는 투자 전략을 사용합니다. 또 다른 투자자는 시가가 변하는 채권을 사고팔면서 시세 차익을 얻으려고 합니다.

해당 채권으로 얻은 투자자의 모든 수익을 합해보면, 채권 발행 시점에 정해진 수익과 동일합니다. 주식은 채권에 비해 불확실성이 더 높기에 지금은 짐작하기 어려운 수익의 총합이 숨겨진 채권이라 볼 수 있습니다. 투자자는 채권 매매처럼 시세 차익을 얻기 위해 주식을 매매합니다. 참고: 불확실성과 결정론은 다릅니다. 인간은 누구나 죽게 되지만, 언제 죽을지는 불확실합니다.

지금까지 유용했던 특정 퀀트 투자 전략이 널리 알려진다면, 해당 전략을 사용하는 개개인의 수익은 줄어들 가능성이 높습니다. 경우에 따라서는 해당 전략의 약점을 공략하는 투자 전략이 개발되어 시장 대비 손실이 발생할 수도 있습니다.

이러한 이유로 퀀트 투자자는 자신이 사용하는 투자 전략의 노출을 꺼리게 됩니다. 사용하는 전략이 정말 유용하든 그렇지 않든 세세하게 널리 알려서 이득이 될 가능성은 낮습니다. 참고: 라면 회사가 신규로 개발하는 고추장 라면이 시식회에서 어떤 평가를 받았든, 그 결과가 경쟁사에게 알려지는 것은 불리합니다.

퀀트 투자를 학문적으로 연구하는 분이나 퀀트 투자 관련 서비스를 제공하여 수익을 얻는 분이라면 어느 정도 공개함으로써 이득을 얻을 수 있지만, 실제 투자하는 개별 투자자는 그렇지 못합니다.

수익의 규모가 방대하여 전략이 널리 알려져 투자자가 몰리더라도 단기간에 수익이 줄어들 가능성이 낮거나, 어떤 이유로든 시장 대비 초과 수익이 발생할 수밖에 없는 구조에 바탕을 둔 투자 전략이 장기적으로 유용성을 유지할 가능성이 높습니다. 

퀀트 투자 프레임워크의 기초

퀀트 투자 프레임워크(책에서는 로보어드바이저)를 단계적으로 구성한다고 하겠습니다. 먼저 데이터와 시뮬레이터가 필요합니다.

  • 단계 1. 신뢰성 있는 데이터의 수집과 가공
  • 단계 2. 현실적인 시뮬레이터 구현

데이터와 시뮬레이터가 있다면 백테스트를 해 볼 수 있습니다. 전략 a. 시총 상위 50개 종목을 동일비중으로 분기 단위로 리밸런싱해 볼 수도 있고, 전략 b. 최근 1달 내 1년 신고가를 찍은 상승률 상위 30 종목을 시총가중으로 월 단위 리밸런싱해 볼 수도 있습니다.

퀀트 투자 입문서나 퀀트 투자 서비스는 대개 단계 1 + 단계 2 수준의 내용을 소개하거나 서비스로 제공합니다. 투자 전략 개발은 개개인에 맡기는 방식입니다.

투자 전략은 수없이 만들 수 있습니다. 전략 a와 전략 b를 혼합하면 새로운 전략 c를 만들 수 있기 때문입니다. 이 때문에 퀀트 투자자는 효용이 있을 법한 투자 전략을 효율적으로 추리고, 많은 백테스트 결과를 신뢰성 있게 비교 평가할 수 있어야 합니다.

주식 투자 관련 도메인(domain) 지식과 통계학 지식이 필요한 이유는 여기에 있습니다. 거시 경제와 업종에 대한 지식이나 기업의 재무제표를 이해하는 것은 연역적 도메인 지식에 해당되고, 통계학적 신뢰도를 분석하는 것은 귀납적 지식에 해당됩니다. 참고: 퀀트투자에 대한 몇 가지 오해에 대하여

투자 전략의 혼합과 최적화

다양한 투자 전략을 백테스트하고 분석한 결과를 얻게 되면, 가장 좋아 보이는 하나의 투자 전략이 아니라, 상호 보완이 가능한 복수의 투자 전략을 혼합하는 방향으로 나갈 수 있습니다. 투자 전략의 백테스트 결과는 신뢰성 분석을 충분히 거쳤더라도 과적합 가능성이 존재하기 때문입니다.

백테스트는 지난 시험 성적이라 할 수 있습니다. 한 반에 30명의 학생이 있다고 하겠습니다. 각각은 나름 자신의 시험 준비 전략으로 공부할 것입니다.

기출문제를 풀면서 공부하는 학생도 있을 테고, 본인이 지난 시험에서 부족하다고 느낀 부분을 개념부터 다시 공부하는 학생도 있을 것입니다. 어떻게 하면 연필을 잘 굴려서 정답을 맞힐까 고민하는 학생도 있을 것입니다. 수학 시험은 3번이 답인 경우가 많았기에, 잘 모르면 3번을 찍겠다는 결심한 학생도 있을 것입니다.

지난 시험에서 상위권인 1등 ~ 3등은 다음 시험에서도 좋은 성적을 거둘 수 있을까요?

학교에서 영어나 수학 같은 과목은 지식을 계속해서 누적하면서 학습합니다. 1학년에 배운 지식이 2학년 공부의 바탕이 되고, 2학년에 배운 지식은 3학년 과정을 공부하는 기초가 됩니다. 

지식의 누적이 중요한 과목은 지난 시험의 점수와 다음 시험의 점수 간에 상관성이 높습니다. 투자는 어떻까요? 수익률을 시험 성적이라고 본다면, 투자는 불확실성이 높은 즉, 운이 많이 관여하는 시험이라 할 수 있습니다. 만일 그렇지 않다면, 지난 1년간 가장 높은 수익률을 보인 펀드나 ETF에 투자하면 시장 수익률을 훌쩍 뛰어넘을 수 있을 것입니다. 참고: 운과 실력의 성공 방정식 (마이클 모부신)

이 때문에 다른 투자 전략을 압도하는 장기적으로 안정적인 하나의 투자 전략을 발견하지 않는 한, 유용해 보이는 복수의 투자 전략을 혼합할 필요성이 생깁니다. 지난 시험 1등에만 투자할 것이 아니라, 1등, 2등, 3등에 적절히 분산해서 투자하는 것이 합리적일 수 있습니다. 투자 전략을 혼합하면 포트폴리오의 위험도 낮출 수 있습니다.

수많은 투자 전략에 대해 각각 어느 정도의 비중으로 투자할지 결정해야 최종 투자 전략이 완성됩니다. 투자자의 투자 목적이나 투자 성향을 반영하여 개별 투자 전략의 비중을 결정하는 것을 포트폴리오 최적화라고 합니다. 참고: 포트폴리오 최적화로 답에 대한 힌트를 얻을 수 있는 질문의 예 (포트폴리오 비주얼라이저 활용)

  • 단계 3. 개별 투자 전략의 정적 가중치를 결정하는 포트폴리오 최적화 엔진 구현

평균-분산 최적화(Mean-variance optimization; MVO)블랙 리터만 모델(Black-Litterman model)은 포트폴리오 최적화 기법입니다. 참고: 최적화는 주어진 목적 함수(objective function)를 최대화/최소화하는 매개 변수(parameters)를 찾는 과정입니다. 투자자가 MDD가 -20%를 넘지 않으면서 지난 20년간 수익률이 가장 높은 투자 전략의 조합을 찾기 위해, 이런저런 백테스트를 수행한다면 수동으로 최적화를 하는 것입니다.

포트폴리오 최적화는 조금 깊이가 있는 퀀트 투자 책에 설명되어 있습니다. 최적화 방법에 대한 설명과 함께 실행해 볼 수 있는 프로그램 코드도 소개하는 책도 있습니다.

투자 전략의 동적 혼합과 최적화

기본적인 포트폴리오 최적화 기법은 최적화 대상이 되는 기본 요소의 투자 비중을 정적으로 결정합니다. 기본 요소가 종목이라면 종목별 투자 비중이 나오고, 기본 요소가 투자 전략이라면 전략별 투자 비중이 나오게 됩니다. 참고: 종목과 투자 전략은 구분할 필요가 없습니다. 삼성전자라는 종목은 삼성전자에 투자하는 전략으로 볼 수 있습니다.

개별 투자 전략을 백테스트해 보면, 어떤 구간에서는 시장 대비 높은 수익률을, 또 다른 구간에서는 시장 대비 낮은 수익률이 나올 수 있습니다. 장기적으로는 시장 대비 초과 수익이 나는 유용한 투자 전략이지만, 상황에 따라 그 유용한 정도는 다를 수 있습니다.

투자 전략 sᵢ에 대해, 투자 비중에 해당하는 가중치 상수 wᵢ를 찾아내는 것이 포트폴리오 최적화입니다. 조금 더 확장하면 wᵢ 대신 상황에 따라 가변적인 가중치 vᵢ를 찾아내는 문제로 바꿀 수 있습니다.

  • 단계 4. 개별 투자 전략의 동적 가중치를 결정하는 포트폴리오 최적화 엔진 구현

상황에 따라 개별 투자 전략의 비중을 바꾸기 위해서는 두 가지가 필요합니다. 어떤 상황인지 추정할 수 있는 모델과 각각의 상황에 사용할 개별 투자 전략의 비중입니다.

복잡하게 느낄 수 있지만, 따지고 보면 특별한 것은 아닙니다. 금리의 변동이 개별 전략의 성과와 관련성이 높다고 하겠습니다. 어떤 투자 전략은 금리 인상기에 특히 유용하고, 또 다른 투자 전략은 금리 인하기에 더 효과적일 수 있습니다.

보유한 투자 전략의 성과가 금리 변동에 영향을 받는다면, 최근 회의에서 금리가 인상된 경우, 금리가 유지된 경우, 금리가 인하된 경우 세 가지로 나누어서 따로 정적 혼합 포트폴리오 최적화를 수행할 수 있습니다. 최근 금리가 인상되었다면, 전략 1에 70%, 전략 2에 30%로 투자하고, 최근 금리가 인하되었다면, 전략 1에 20%, 전략 2에 80% 투자하라는 전략이 만들어질 수 있습니다.

동적 혼합 포트폴리오 최적화는 유용할 수도 있고, 그렇지 않을 수도 있습니다. 동적 혼합 포트폴리오는 주어진 데이터를 상황에 따라 나누기 때문에, 개별 상황에서의 최적화에 사용할 수 있는 데이터의 양이 줄어들기 때문입니다.

<파이썬으로 구현하는 로보어드바이저>는 위에서 설명한 1 단계 ~ 4 단계 모두를 파이썬 코드와 함께 소개하는 흔치 않은 책입니다. 퀀트 투자 전반에 대한 설명 위주의 책으로는 김성진의 <퀀트의 정석>이 참고할 만합니다. 참고: 퀀트의 정석 (김성진 = 퀀트대디) - 투자는 어디 숨었니? 퀀트 분야의 지도 같은 책 (서평)

<파이썬으로 구현하는 로보어드바이저>에서는 동적 혼합 포트폴리오 최적화를 멀티 팩터 전략으로, 김성진의 <퀀트의 정석>에서는 팩터 포트폴리오 프레임워크로 소개하고 있습니다. 참고: 동적 혼합 포트폴리오 최적화는 제가 붙인 이름입니다. 종목/팩터/자산/전략을 따로 구분할 필요는 없습니다. 전략이 가장 일반화된 포트폴리오의 최소 구성 요소이기 때문입니다.

개인적인 생각

책의 전반적인 주제와 구성은 나무랄 바 없으며, 실제 구현에 사용한 파이썬 코드도 적절한 수준으로 설명하고 있습니다.

(책의 주요 내용에 대해서는 다른 서평을 참고하기 바랍니다.)

기대에 비해 아쉬운 점이 꽤 있습니다. 5명의 저자 모두 관련 분야 종사자이고, 몇몇은 수학을 전공하였습니다. 저자들의 경력에 비추어 볼 때 퀀트 투자에서 중요하게 고려해야 하는 과적합과 통계적 유의성 평가에 대한 이야기가 전혀 없는 것은 이해하기 어렵습니다. MDD나 샤프 비율, 소르티노 지수에 대한 소개와 개별 백테스트 결과를 정리한 수치를 제시하는데 그치고 있습니다.

개별 백테스트의 기간은 대체적으로 충분히 길지 않고, 포트폴리오 편입 대상이 되는 종목의 선정 방식과 비교 벤치마크는 합리적이라 보기 어렵습니다. 저 PER, 저 PBR과 같은 팩터 전략을 소개할 때에는 고정된 66개 종목을 대상으로 10%를 선정하여 5년도 안 되는 짧은 기간 동안 백테스트한 결과를 제시하고 있습니다. 참고: 이 정도면 제대로 된 백테스트라고 보기 힘듭니다.

고층 빌딩을 설계하는 방법을 설명하면서, 안전한 빌딩을 건설하기 위해 고려해야 하는 사항은 누락한 책이라 할 수 있습니다. 책에서 설명한 백테스트는 신뢰성이 높지 않으니 참고만 하는 게 좋을 수 있습니다. 참고: 가치가 없는 책이라는 뜻은 아닙니다.

저자들과 생각이 다른 부분을 몇 가지 짚어보면 다음과 같습니다. (저자들과 생각이 다르다는 의미이지, 제 생각이 옳다는 이야기는 아닙니다.)

상관성이 높은 자산으로 포트폴리오를 구성하면 위험이 증폭된다.

상관성이 아무리 높더라도 분산 투자하면 포트폴리오의 위험은 항상 유지되거나 줄어듭니다. 극단적으로 동일한 지수를 추종하는 두 ETF를 반반씩 편입하면 상관성은 최대이지만, 포트폴리오의 위험은 변하지 않습니다.

예를 들어 수익률은 가장 높고 변동성은 가장 낮으면서 다른 자산과의 상관성이 없는 자산이 존재한다면 해당 자산을 100%로 선택할 것이다.

다른 자산과 상관성이 없다면, 특정 자산의 성과가 가장 좋더라도 추가로 자산을 편입하면 포트폴리오 전체 위험은 줄어들 가능성이 높습니다.

마켓 타이밍 전략은 시장의 흐름을 정확히 예측할 수 있다는 가정에 기반하여 이익을 창출하려고 시도한다.

마켓 타이밍 전략은 확률적으로 예측한 결과로 초과 이익을 달성하려는 전략입니다. 초과 이익을 낼 수 있다면, 예측이 항상 정확할 필요는 없습니다.

룩백 기간(lookback perid)은 자산 배분 시점을 기준으로 최근 3년에서 5년 사이로 정한다.

룩백 기간은 자산 또는 전략의 시장 대비 유효성을 충분히 판별할 수 있을 만큼 긴 기간이 적절할 수 있습니다. 특정한 기간으로 고정할 필요는 없습니다. 자산에 따라서 효과가 높은 룩백 기간이 다를 수 있습니다.

자산 배분 전략에서 자산군 투자 비율을 선정하기 위해서는 (1) 투자자의 위험 허용도 내에서 투자할 자산의 위험 수준 범위를 정하고 (2) 위험 수준별로 자산군을 정한 후 (3) 자산군 별로 투자 비율을 정한다.

자산 배분 전략에서 자산의 투자 비중을 톱다운(top-down) 방식으로 정할 필요는 없습니다. 위험도는 개별 자산보다는 전체 자산 관점에서 평가하는 것이 합리적일 수 있습니다. 전체 자산의 안정성과 수익률을 높이려는 게 자산 배분 전략의 목표이기 때문입니다.

위험도가 5와 1인 두 자산을 반반 혼합하면 위험도가 3이 될 수 있습니다. 경우에 따라서는 위험도가 3인 단일 자산에만 투자하는 것보다 유리할 수 있습니다. 만일 그렇지 않다면, 주식과 채권을 적절히 혼합한 전략을 만들 수 없을 수도 있습니다. 주식이라는 자산이 투자자의 허용 위험도를 이미 넘을 수 있기 때문입니다.

투자 유니버스 정의 시, 수수료율이 고려된다면 해외 주식 ETF와 같이 수수료율이 높은 ETF는 배제할 수 있다.

수수료 그 자체는 자산 배분 관점에서 큰 의미가 없습니다. 수수료(상황에 따라서는 세금 포함)를 제한 실수익률을 기준으로 삼으면 되기 때문입니다.

편집

백테스트 결과를 보여주는 그래프는 로그 스케일이 아니어서 시간에 따른 성과의 상대 비교가 어렵습니다. 그래프 축의 이름이 불충분하거나 잘못된 경우도 있습니다. 표의 경우, CAGR이나 MDD를 퍼센트(%)로 표기하지 않고 않습니다. 결과를 이해하기 쉽게 보여주기 위한 편집에 신경을 충분히 쓰지 않은 듯합니다.

정리하며

<파이썬으로 구현하는 로보어드바이저>는 국내에 출판된 퀀트 투자 소개서 중에서는 드물게 상당히 깊은 내용까지 담고 있는 책입니다. 파이썬 코드도 함께 제시하기에 퀀트 투자 전략을 도출하는 시스템을 직접 구축해보고자 하는 분에게 실용적인 도움이 될 수 있습니다. 참고: 퀀트 투자 자체에 대한 설명이 간결한 편입니다.

이 책은 퀀트 투자와 관련한 프레임워크 구현 방법 위주로 소개하기에 책의 내용만으로는 시스템을 완전하게 구축해서 사용하기에 부족할 수 있습니다. 도출된 전략을 사용하기 위해서는 신뢰성 평가를 거쳐야 하는데, 이에 대한 설명은 거의 없습니다.

실제 사용할 시스템을 구축하고자 하는 분이라면 통계적 분석 방법과 다양한 퀀트 투자 전략을 소개하는 책이나 글을 참고하여 경험을 쌓을 필요가 있습니다. 퀀트 투자에서의 과적합과 통계적 유의성 평가에 대해서는 아래 두 권의 책을 참고하기 바랍니다.

간단한 통계적 유의성 평가의 예는 아래 글을 참고하기 바랍니다.

함께 읽으면 좋은 글:

도움이 되었다면, 이 글을 친구와 공유하는 건 어떻까요?

facebook twitter kakaoTalk naver band