[Strategy] Hierarchical Risk Parity


개요

Hierarchical Risk Parity라는 최적화 방식을 알아봅니다.

포트폴리오 최적화는 Harry Markowitz의 mean-variance optimization 방식이 널리 쓰여 왔습니다. Mean-variance optimization은 높은 수익률과 낮은 위험(높은 샤프 비율, 또는 수익-위험 비율)을 목표로 하는 효용 함수의 최대화 문제입니다. 이 때 목적 함수는 자산별 비중과 자산별 예상 수익률의 곱(수익률 예상치 가중평균)에서 투자자의 위험 회피 성향과 포트폴리오 변동성의 곱을 뺀 형태의 효용 함수입니다.

화면 캡처 2021-05-21 231400

이를 최대화하는 것은 공분산 행렬의 역행렬을 필요로 합니다. 최적 가중치는 다음과 같습니다. 편입된 모든 자산군의 위험 기여도 대비 포트폴리오 수익 기여도가 같다는 말이 됩니다.

화면 캡처 2021-05-21 231624

위의 식을 사용한다면 공분산 행렬의 역행렬이 필요한데, 이것이 문제입니다. 주식 시장 변동성과 시장 상관관계의 작은 변화에 민감하게 반응합니다. 자산군의 수익률 예상치도 들어가야 하는데, 이는 추측의 영역이라는 문제가 있습니다. 공분산 행렬을 구한다면 모든 자산군끼리의 상관관계를 구하고, 다시 그것의 역행렬을 구하기 때문에 계산량이 많습니다. 마지막으로, 모든 자산군의 상관관계를 고려하는 것은 실용적이지 않습니다. 예를 들어, 같은 산업군에서 비슷한 사업을 하는 주식끼리는 상관관계를 고려하는 것이 의미가 없습니다.

De Prado (2016)은 이런 문제를 개선했습니다. 그의 Hierarchical Risk Parity 방식은 Hierarchical Tree Clustering, Quasi-Diagonalization(Matrix Seriation), Recursive Bisection의 3가지 단계로 나뉩니다.

Hierarchical Tree Clustering

Hierarchical Tree Clustering 알고리즘을 사용하여 포트폴리오 내 자산을 다른 hierarchical cluster로 세분화합니다. 포트폴리오 내 자산 N개의 T기간 동안 데이터로 계산하여 항목을 cluster로 결합합니다.

TxN 형태의 수익률 행렬에서 NxN 형태의 상관관계 행렬을 구합니다. 그리고 correlation-distance 행렬을 정의하는데 다음의 형태로 됩니다. 두 자산의 거리를 나타낸 것이 됩니다.

화면 캡처 2021-05-22 154624

행렬 D에서 다시 다음 행렬을 정의합니다. 이 행렬은 한 자산과 포트폴리오 내 다른 자산의 유사도를 나타냅니다.

화면 캡처 2021-05-22 154803

Cluster 구성을 해 보겠습니다. Cluster를 U라고 하면 유사도가 가장 높은 것들끼리 묶이도록 위의 행렬 D_bar가 최소가 되는 pair를 잡습니다. 아래 그림에서는 첫 cluster에 a와 b가 묶일 것입니다.

화면 캡처 2021-05-22 155150

a와 b가 cluster로 묶인 것을 적용하여 거리 행렬을 다시 만들어야 합니다. Cluster를 한 개의 원소로 보고 다시 하는데, cluster 안의 원소들 중 거리가 가장 가까운 경우를 cluster까지의 거리로 잡습니다.

화면 캡처 2021-05-22 160818

예를 들어, (a,b) cluster와 c의 거리는 첫 행렬에서 볼 때 a와 c의 거리가 21이고 b와 c의 거리가 30이니 (a,b)와 c의 거리는 21이 됩니다. 여기서는 c, e가 (a,b) cluster와 거리가 같으니 다음 cluster로 묶입니다.

화면 캡처 2021-05-22 161156

그림으로 보면 cluster는 이런 형태로 나누어질 것입니다.

화면 캡처 2021-05-22 163753

Quasi-Diagonalization

Cluster를 명확하게 보여주기 위해서 재배치하는 것입니다. 유사한 자산이 가까이 배치되도록 합니다. 원래의 공분산 행렬에서 공분산이 큰 것을 대각(diagonal) 쪽으로 보내서 준 대각 행렬에(quasi-diagonal) 가깝게 만듭니다.

Recursive Bisection

편입 자산들의 실제 비중이 정해지는 단계입니다. 초기 비중은 1로 합니다. Tree Clustering이 끝난 상태에서 큰 cluster 1개와 나머지를 묶은 cluster 1개로 나누어진다고 볼 수 있습니다. 그 2개의 cluster에서 계속 하위 cluster로 내려가면서 quasi-diagonalization 단계를 거치고 새로운 행렬을 만드는 일을 반복합니다.

각 Tree Cluster는 하위 cluster (child cluster)를 가지는데, 그 child cluster는 왼쪽/오른쪽 cluster로(cluster V1, cluster V2) 나뉘기 때문에 binary tree 형태입니다. 각 child cluster에서 분산을 계산합니다. Quasi-diagonalization을 거쳤기 때문에 사실상 대각 행렬에 가깝고, inverse variance allocation이 최적이라는 것을 이용합니다.

화면 캡처 2021-05-22 165517

새 공분산 행렬에서 가중치를 구하기 위해서는 다음의 최적화를 해야 합니다.

화면 캡처 2021-05-22 171153

Minimum Variance를 목표로 하는 경우 가중치는 아래의 식처럼 됩니다. Diagonal일 경우 두번째 식처럼 될 것입니다.

화면 캡처 2021-05-22 171406

현재는 cluster 1개 아래에 2개의 child cluster가 있는 형태이니 N이 2가 됩니다. 가중치는 아래와 같아집니다.

화면 캡처 2021-05-22 171637

구한 가중치로 child cluster의 가중치를 계속 업데이트합니다.

화면 캡처 2021-05-22 170047

화면 캡처 2021-05-22 171845

참고

De Prado, M. L. (2016). Building diversified portfolios that outperform out of sample. The Journal of Portfolio Management, 42(4), 59-69. https://hudsonthames.org/an-introduction-to-the-hierarchical-risk-parity-algorithm/




© 2021.03. by JacobJinwonLee

Powered by theorydb