본문 바로가기

공부 : 금융공학, 금융, 통계, 공학, 경제 등

Hierarchical Risk Parity(HRP) 1. Introduction 및 다른 Risk Parity 전략들

Hierarchical Risk Parity(HRP)에 대해 알아보려고 한다. 내 생각엔 꽤나 좋은 risk 분배 방법인 것 같은데, 아직 한국어로 이를 설명한 글이 없었다. 그래서 한국어로 HRP 알고리즘의 특징에 대해 간단히 설명해보고, 이 알고리즘이 어떠한 방식을 통해 risk를 분배하는지 알아보려고 한다.

  먼저 HRP에 대한 아이디어를 처음 고안한 De Prado(2016)의 논문을 보도록 하겠다. 아래 링크를 따라서 논문을 다운로드하면 된다. 근데 영어 + 수식 + 코드 snippet으로 글을 적어놔서, 이해하기 어려울 수도 있겠다. (일단 나는 어려웠다.) 그래서 우선 이 글을 읽어본 후, 아이디어가 마음에 든다 싶으면 따로 글을 읽어보는 걸 추천한다.

 

López de Prado, Marcos and López de Prado, Marcos, Building Diversified Portfolios that Outperform Out-of-Sample (May 23, 2016). Journal of Portfolio Management, 2016; https://doi.org/10.3905/jpm.2016.42.4.059. , Available at SSRN: https://ssrn.com/abstract=2708678 or http://dx.doi.org/10.2139/ssrn.2708678

  1. Hierarchical Risk Parity 개괄. Introduction.

 

 Hierarchical Risk Parity (앞으로 HRP라 줄여 말하겠다.) 는 리스크 분배를 위한 방법 중 하나이다. 각 자산이 portfolio 내의 다른 자산과 얼마만큼의 유사도를 지녔는지를 구한 뒤 , 이를 감안하여 각 자산의 비중을 구하는 것이 가장 큰 특징이다. 이를 통해 자산 간 상관관계를 고려한 allocation이 가능하고, 높은 상관관계로 인해 portfolio가 risk diversification을 충분히 구현하지 못하는 경우를 막아준다.

 

 이해를 위해 예시를 들어 보자. 리스크를 최대한 분산한 포트폴리오를 만들어 볼 건데, 우리가 보유할 수 있는 종목은

  • 삼성전자
  • 삼성전자 우(선주)
  • SK하이닉스
  • 포스코
  • 신한금융지주

의 5개뿐이라고 가정하자.

 이때 risk의 분산을 위해 여러가지 전략을 생각할 수 있다. 가장 쉽게 떠오르는 것은 각 자산을 동일 비중으로 분배(EQually Weighted) 하거나, 시가총액의 비율로 나누는 것(Market Cap Weighted, MCW)이다.

 

 하지만 이 전략들을 저 포트폴리오에 적용하는 건 어딘가 석연찮다. 적어도 risk 분산 측면에서는 그렇다.

 이 경우 삼전-삼전우-하이닉스만 60% 넘게 담는 포트폴리오가 나올 건데, risk 측면에서 이것이 적절해보이지는 않는다. Sector 이슈에 너무 민감하게 반응할 뿐더러, 애초에 삼전과 삼전우는 같은 회사이다. 비슷한 sector, 비슷한 종목을 굳이 몇 배로 담을 필요는 없을 것이다.

 

 이와 같은 실수는 몇몇 Risk Parity 전략에서도 나타난다. Portfolio의 비중을 각 자산이 지닌 risk에 따라 분배하는 전략을 risk parity라고 하는데, 대표적인 것이 Inversed Volatility (IV), Minimum Variance (MV), Maximum Diversification (MD) 등이다.

 [IV]

 [MV]

 [MD]

 

 이중 IV는 Inversed Volatility, 즉 변동성의 역수를 포트폴리오의 비중으로 삼는 방법이다.

  삼전:삼전우:하닉:포스코:신한의 변동성이 4:4:4:2:1이라면, 포트폴리오 비중을 0.25:0.25:0.25:0.5:1로 잡는 식이다.

 하지만 IV 또한 자산 간의 상관관계를 고려하지는 않는다. 따라서 IV를 쓰더라도 우리가 원하는 결과가 나오지는 않는다. 삼전과 삼전우, 하이닉스의 비중이 이전보다야 줄었지만, 셋을 거의 똑같이 1:1:1로 담는다는 건 변하지 않는다.

  그 결과 앞서 말한 EQW, MCW와 비슷한 문제가 발생한다. 명확한 이유 없이 비슷한 주식(삼전-삼전우)을 2배로 담아야 하는데, 이것이 딱히 리스크 분배에 도움이 된다고는 할 수 없다.

 

 이를 감안한 포트폴리오를 짜기 위해선 공분산과 공분산행렬의 개념을 알아야 한다. 

 

  상관관계를 분석하기 위해 일반적으로는 공분산행렬 (covariance matrix)을 활용한다. 공분산행렬은 2차원 행렬에 각 표본들의 분산/공분산을 나타내는 방법 중 하나로써, 자산 i(의 수익률)의 분산을 ii번째 원소에, 자산 i와 자산 j(의 수익률) 간의 공분산을 ij번째 원소에 집어넣는 식으로 행렬이 구성된다.  

 

  공분산행렬을 이용하면 각 자산 간의 상관관계를 보다 계량적으로 분석하고, 이를 감안한 포트폴리오를 구성할 수 있다.

 예를 들어 가격의 움직임이 비슷한 두 자산은 분산 및 다른 자산과의 공분산이 비슷하게 나타날 것이다.

 반대로 두 자산의 가격의 움직임이 딱히 비슷하지가 않다면, 두 자산의 분산 및 다른 자산과의 공분산 또한 상관성을 크게 띄지 않을 것이다.

 

 이같은 insight를 포트폴리오의 비중 조절에 접목시킨 것이 MV(Minimum Volatility)나 MD(Maximum Diversification) 등이다. 이들은 자산 가격의 변화를 공분산행렬로 나타내어, 이 값들을 통해 최적의 weight를 찾아낸다.

 

 접근 방식은 다르지만, 위의 두 방법 모두 해석적인 해를 구할 수 있다. 고등학교 수학에서처럼 방정식 등으로 구해진 정확한 해를 해석적 접근법 (analytic method), 위와 같은 방법이 불가능해 컴퓨터 계산으로 해가 존재하는 구간만을 구하는 것을 수치적 접근법 (numerical method)라고 하는데, MV나 MD는 해석적 접근법을 통해 그 값을 구할 수 있다.

 두 방법 모두 연립방정식을 통해 최적의 자산 배분을 계산할 수 있다. 이때 공분산행렬을 연립방정식의 계수로써 사용할 수 있다. 따라서 MV와 MD의 optimum ratio는 공분산행렬에 기반한 연립방정식을 풂으로써 구할 수 있다. (이에 대한 증명은 통계수학에서 배울 수 있다.)

 

 이러한 접근을 통해 분산도 감안하고, 상관관계도 완벽하게 분석한 포트폴리오를 구축할 수 있다. 게다가 주어진 표본(각 자산의 가격 변화)에 대한 최적의 해(최적의 비중)또한 정확하게 존재한다. 그렇다면 이것이 최고의 방법이냐.

 

 아니다. 사실 그럴 수가 없다. 표본 자체에 오차가 가득하기 때문이다. 특히나 금융 데이터는 더욱 그렇다. 자산의 가격은 순간적인 이슈에 아주 예민하게 반응하며, 그 값이 자산의 가치를 완벽하게 대표한다고도 할 수 없다. 자산의 가격 변화가 자산의 가치를 정확하게 따라가는 것도 아니고 말이다.

 

 이런 오차는 위에서 설명한 Risk Parity 기법들에게 특히나 취약하다. 이건 직접 예시로 확인하는 게 나을 것 같다.

 

 일일 변동성이 6.25%(=0.0625, 1/16)인 비트코인과,

 일일 변동성이 0.025%(=0.00025, 1/4000)인 단기채로 구성된 포트폴리오를

 IV(inversed volatility) 전략으로 구축해보자.

 

 이때 두 자산의 변동성이 1/16, 1/4000이므로,

 변동성의 역수는 각각 16, 4000이다.

 따라서 두 포트폴리오의 비중은 16:400 = 1:250이다.

 

 이미 뭔가 좀 이상한 것 같지만 계속 해보자.

 사실 단기채의 변동성이 0.04%(=0.0004)였던 것이다.

 

 따라서 변동성의 역수를 16, 2500으로 수정했고,

 포트폴리오의 비중 또한 16:2500 = 1:167.5로 수정했다.

 

 이렇게 아주 작은 오차에도 비중 조절의 결과가 크게 다르게 나오는 것을 마르코비츠의 저주(Markowitz’s curse)라고 한다.

 특히 이 문제는 asset의 수가 많을수록, 변동성의 값이 작아질수록 심해진다.

 이는 IV, MV, MD 기법 모두가 지닌 구조적인 문제점 때문인데, 이들 모두가 공분산행렬의 역행렬을 통해 자산의 weight 값을 얻어내기 때문이다. 특히나 각 값이 0에 가까워질수록, 그 값의 역수는 무한대로 발산한다. 오차가 커질 수밖에 없다.

 

 HRP (Hierarchical Risk Parity, 계층적 리스크 패리티)는 이러한 고민을 해결하기 위해 2016년 De Prado가 처음 고안한 기법이다. HRP는 다른 risk parity 방법들처럼 공분산행렬에 기반해 상관관계를 고려하면서도, 여러 번에 걸친 allocation을 통해 Markowitz의 저주를 해결한다.

 

 앞으로 몇몇 페이지를 통해 HRP의 작동방식과 그 performance, 그리고 HRP를 실제 투자에 Backtest한 결과를 알아보려고 한다. 한국어 자료가 없길래, 그냥 내가 만들었다. 다들 도움이 되었음 좋겠다.