앞으로도 전체 과정을 반복적으로 풀어나가는 식으로 HRP를 설명해볼 계획이다.
1: Tree Clustering부터 차근차근 설명해본 적도 있긴 한데, 이렇게 하니까 이해를 잘 못하더라고.
그래서 차라리 3:Recursive Bisection부터 설명하는 게 낫겠다 싶었다.
이 파트가 실질적으로 비중을 분배하는 부분이고, 나머지 1:Tree Clustering이나 2:Quasi-Diagonalization은 이를 위한 준비단계에 가깝기 때문이다.
그러니 ‘어떻게 반복적으로 weight allocation을 수행할까?’에 대해서 먼저 알아보자.
이 과정은 3:Recursive Bisection에서 수행되는데, 방법은 다음과 같다. (개인적으로는 종이에다가 예시 따라 적으면서 이해하는 걸 추천한다.)
“””
0. 모든 asset이 동일 비중으로 총합 1만큼의 weight를 갖고 있다고 생각하자.
- 9개의 asset이 있다고 가정하면,
[asset 1,2,3,4 … 9 ] = 1
(괄호 안에선 동일 비중)
이라고 생각할 수 있다.
1. 그리고 이걸 정확히 반으로 나눌 것이다. 왼쪽 절반, 오른쪽 절반을 각각 두 group으로 나누어(Bisect) 묶어준다.
- 10개면 [asset 12345], [asset 678910]
- 150개면 [asset 1~75], [asset 76~150] 같은 식으로 나눈다.
- 홀수면 하나가 남는데, 이건 왼쪽 group에 넣는다.
- 9개면 [asset 1~5], [asset 6~9]과 같이 나눈다.
- 이론 상 저렇게만 나눠도 상관관계가 높은 두 그룹을 묶은 효과가 난다. 2:Quasi-Diagonalization에서 이미 순서를 맞춰놨기 때문이다.
- 나중에 또 설명하겠지만, 2: Quasi-Diagonalization에서는 asset의 배열 순서를
1) 비슷한 asset끼리는 가까이
2) 독립적인 asset끼리는 멀리
3) 중요한 asset일수록 (= 다른 asset과의 유사도가 높을수록) list의 중간에
4) 독립적인 asset일수록 (= 다른 asset과의 유사도가 낮을수록) list의 양끝에
놓는 식으로 배열한다.
2. 이후 두 group 각각의 변동성을 계산한다.
- vol group_1(=asset[1~5]) = 0.6
- vol group_2(=asset[6~9]) = 0.4 와 같이 계산한다.
- group의 Volatility는 공분산행렬에 기반하여 정의된다. 식은 다음과 같다.
[작성예정 : Volatility 식]
3. 두 group의 변동성에 따라 각 group의 모든 asset에 weight를 곱해준다.
- 비율이 a : b라면 weight는 b : a 로 배분한다.
- 이후 weight를 1로 맞춰준다.
- 따라서 각 group의 weight는 b/(a+b), a/(a+b)가 된다.
- 예시의 경우 weight는
w[group_1] = 0.4/(0.6+0.4)=0.4
w[group_2] = 0.6/(0.4+0.4)=0.6이다.
Loop. 1~3의 과정을 반복적으로 수행한다. 나누어진 Group에 대해 다시 한 번 반으로 나누고, 변동성을 계산하고, weight를 부여하는 과정을 반복한다.
Group의 개수가 n개이면 Loop를 끝낸다.
- 반복적인 Bisection(1.~3.)을 통해
[[asset 1~9]] = [1]
-> [[asset 1~5], [asset 6~9]]
= [1[0.6:0.4]]
= [0.6:0.4]
->[[123],[45],[67],[89]]
= [0.6[1:1], 0.4[3:1]]
= [0.3, 0.3, 0.3, 0.1]
->[[12][3][4][5][6][7][8][9]]
= [0.3[2:1], …, 0.1[1:1]]
= [0.2, 0.1, …, 0.05, 0.05]
->[[1][2] … [8][9]]
= [.1 .1 .1 .15 .15 .15 .15 .05 .05]
Cf. Group의 원소가 2개뿐일 경우, weight는 1:1로 배분된다.
[Solution]
1x1행렬 A=[a]의 diag(A)=[a], tr(A)=a. 정의에 의해 vol1, vol2 = 1, 1이고 weight는 1:1로 배분.]
“””
HRP 또한 MV나 MD처럼 공분산행렬을 구하고, 공분산행렬의 역행렬에 기반한 값을 통해 비중을 분배한다.
하지만 HRP는 group 전체의 변동성을 구하고, 그 값을 group의 모든 원소에 곱해준 뒤, 반복적인 분할(Bisection)을 통해 점차 그 그룹의 범위를 좁혀나가(Recursion)는 식으로 자산의 비중을 조정한다.
이를 통해 HRP는 Markowitz’s curse (마르코비츠의 저주, data의 작은 오차로 인해 전체 포트폴리오의 변동이 심해지는 현상. 링크 참조.)를 극복하고, 더욱 Robust한 portfolio를 구축할 수 있다.
이 다음에는 Stage 1: Tree Clustering과 Stage 2: Quasi-Diagonalization에 대해 알아보겠다.
이 두 단계를 통해 HRP가 어떤 식으로 asset 간의 관계를 파악하는지, 또 이를 recursive bisection에 적용하기 위해 어떤 과정을 거치는지를 알아보려 한다.
'공부 : 금융공학, 금융, 통계, 공학, 경제 등' 카테고리의 다른 글
Hierarchical Risk Parity (HRP) 5. Tree Clustering. (0) | 2022.02.05 |
---|---|
Hierarchical Risk Parity (HRP) 4. 나머지 단계(Tree Clustering, Quasi-Diagonalization) 들어가기 전에. (0) | 2022.02.05 |
Hierarchical Risk Parity(HRP) 2. HRP Algorithm의 절차. (0) | 2022.02.05 |
Hierarchical Risk Parity(HRP) 1. Introduction 및 다른 Risk Parity 전략들 (0) | 2022.02.02 |
1. Class 'Strategy' (0) | 2022.01.31 |