Post List

2018년 11월 12일 월요일

Asset Allocation: Excel Practice (EW, MVP, MDP, Inv Vol, Risk Parity)



먼저 아래의 실습용 엑셀 파일을
다운로드 받아 주세요





먼저 covariance matrix 시트에는
실습에 사용될 10개 자산의 분산-공분산 매트릭스가 있습니다.
일별 수익률을 기준으로 연율화된 값입니다.



1. 동일비중





동일비중 포트폴리오 입니다.
모든 자산의 비중이 같으므로 설명할 내용조차 딱히 없습니다.



2. 최소분산 포트폴리오 (MVP)




포트폴리오의 분산을 최소화 시키는 포트폴리오 입니다.

분산은 w'Ωw로 나타낼 수 있으며
여기서 w는 비중의 벡터 형태, '는 전치행렬 형태,
Ω는 분산-공분산 행렬을 나타냅니다,

이를 엑셀로 나타내는 수식은 C23 셀에 나타낸 것과 같습니다.
먼저 엑셀에서 행렬을 곱하는 함수는 MMULT 이며,
전치행렬을 구하는 법은 TRANSPOSE 입니다.

따라서 

MMULT(TRANSPOSE(C11:C20),F11:O20)

연산은 w' * Ω 값을 나타냅니다.
해당 값을 다시 MMULT를 통해 w와 곱해주는 수식은 다음과 같습니다.

=MMULT(MMULT(TRANSPOSE(C11:C20),F11:O20),C11:C20)


또한 엑셀에서 행렬의 연산은 ctrl + shift + enter 를 통해 입력해주어야 하며,
이를 통해 수식의 양옆에 {} 기호가 생기게 됩니다.




동일비중으로 포트폴리오의 분산을 구할 경우 0.90%가 나오며,
표준편차는 루트값인 9.50% 값이 나오게 됩니다.

이번에는 엑셀의 해찾기 기능을 통해
포트폴리오의 분산이 최소화 되는 값을 찾아보도록 합니다.




엑셀의 해찾기 기능은 데이터 탭에 있습니다.
만일 해당 탭이 없는 분은
엑셀의 파일 - 옵션 - 분석 도구 - Excel 추가 기능 (이동) 후
분석 도구와 해 찾기 추가 기능을 체크해 주시면 됩니다.









먼저 목표셀은 포트폴리오 분산에 해당하는 D23 셀을 선택하며,
대상은 최소를 선택합니다.

변수 셀은 비중에 해당하므로 D11 부터 D20 까지 셀을 선택합니다.

제약조건으로는

1) 모든 비중이 0보다 클 것
2) 모든 비중의 합이 1일 것

이므로 이에 해당하는 제약 조건을 추가로 입력해 줍니다.

그 후 해찾기 버튼을 누르면
위에 입력된 목적함수, 제약조건에 해당하는 
최적의 값을 찾아주게 됩니다.




해당 조건을 만족하는 변수값 (D11:D20)이 변경되었음이 확인됩니다.
포트폴리오의 분산은 기존 0.90%에서 0.18%로 줄어들었으며,
표준편차는 9.50%에서 4.20%로 줄어들었습니다.


위의 방법으로 분산이 최소화되는 최적값을 찾을 수는 있습니다.

그러나 하나의 자산 비중이 75% 이상인 코너해 문제가 발생하게 됩니다.
따라서 각 자산별 최소 및 최대 비중 제약조건을 추가해 주도록 합니다.




Min Vol + Max 시트로 이동하도록 하겠습니다.

이번에는 개별 자산의 최소 비중이 5%, 최대 비중이 20%인 제약조건
추가해주도록 하겠습니다.

위와 같은 제약조건도 해찾기를 통해 매우 쉽게 추가할 수 있습니다.




역시나 목표는 포트폴리오의 분산에 해당하는D23 셀을 지정해 주며,
변수 셀은 비중에 해당하는 D11 부터 D20 까지의 셀을 지정해 줍니 다.

추가적인 제약조건으로 변수셀의 비중이
5% 이상 및 20% 이하일 것을 지정해주며,

비중의 합이 1인 제약조건 역시 추가해줍니다.




종목별 제약조건(최소 5%, 최대 20%)이 제대로 반영되어
비중이 계산되어 졌습니다.




동일가중, 최소분산, 제약조건하에서 최소분산의 ex-ante 변동성을 비교하면,
제약조건이 없는 최소분산 포트폴리오의 표준편차가 가장 낮으며,
제약조건이 추가될 경우 포트폴리오의 표준편차가 다소 올라감이 확인됩니다.



3. 최대분산효과 포트폴리오 (MDP)




MDP는 분산비율 (DR: Diversification Ratio)를
최대화하는 포트폴리오입니다.

먼저 분자 항목은 각 자산별 변동성의 단순 가중합을 나타냅니다.
분모 항목은 포트폴리오의 표준편차를 나타냅니다.

먼저 분자 항목을 구하기 위해서는
각 개별 자산의 변동성(표준편차)을 구해야 합니다.

분산-공분산 행렬에서 i행 j열 값은 σ(i,j)를 나타냅니다.
따라서 i=j인 셀의 값은 σii, 즉 (σi)^2 으로도 나타낼 수 있으며,
해당 값의 제곱근을 구한다면 개별자산의 표준편차인 σi를 나타내게 됩니다.

R11셀부터 R20셀 까지는 
분산-공분산 행렬의 대각행렬에 해당하는 값들의 제곱근을 통해 계산된
각 개별자산의 표준편차 값입니다.




먼저 분자에 해당하는 부분은
비중에 해당하는 C11:C20 셀과,
개별 표준편차에 해당하는 R11:R20 셀을 통해 구하며,
가중합을 구하는 함수인 SUMPRODUCT를 이용해 주도록 합니다.

=SUMPRODUCT(C11:C20,R11:R20)




분모의 경우 앞에서 포트폴리오를 계산한 방법과 동일하게
MMULTTRANSPOSE 함수를 이용하여 계산해주며,

분산이 아닌 표준편차이기에 SQRT 함수를 이용하여
제곱근 값을 계산해 주도록 합니다.


위에서 구한 분자와 분모를 통해 DR을 계산하면 1.63이 나오게 됩니다.
MDP 포트폴리오는 이 DR이 최대화 되록 해찾기를 통해 구해주도록 합니다.




목표는 DR에 해당하는 D25 셀을 입력해 주며,
max DR이 목표이므로 대상에 최대값을 선택해 줍니다.

변수 셀에는 비중에 해당하는 D11부터 D20까지 셀을 입력해주며,
제약조건은 기존과 동일하게 최소 5%, 최대 20%, 합 100%를 입력해 줍니다.




역시나 정해진 제약조건을 만족하는 값이 잘 계산되며,
DR역시 1.63에서 2.04로 증가하게 됩니다.



4. Inverse Volatility


흔히 Naive Risk Parity 라는 이름으로 알려진
역변동성 포트폴리오 입니다.

딱히 최적화기법이 필요없이 손쉽게 계산할 수 있습니다.




먼저 앞서 계산된 개별 자산의 표준편차의 역수를 구해주도록 합니다.





'개별 자산의 변동성의 역수 / 변동성 역수의 합'
값을 통해 역변동성 포트폴리오를 쉽게 계산할 수 있습니다.




표준편차와 비중간의 관계를 보면,
표준편차가 클수록 비중이 작고,
표준편차가 작을수록 비중이 큼이 확인됩니다.




5. Risk Parity


먼저 Marginal Risk Contribution(MRC)은
포트폴리오 변동성의 wi에 대한 편미분 값이며,

Risk Contribution(RC)는 MRC * Wi 값입니다.

리스크 패러티는 모든 자산의 RC 값이
동일하게 되는 포트폴리오를 의미합니다.




위의 Proof 를 살펴보면
MRC는 분산-공분산 매트릭스(Ω)와 비중(w)의 곱을
포트폴리오의 표준편차로 나눈 값으로 계산됩니다.




먼저 MRC에 해당하는 셀인 D11부터 D20까지의 셀을
드래그 하여 선택해 줍니다.

분산-공분산 행렬에 해당하는 J11부터 S20까지의 셀과
비중에 해당하는 C11부터 C20까지의 셀을
MMULT함수를 이용항 곱해준 후,

포트폴리오의 표준편차에 해당하는 C24 셀로 나누어 주도록 합니다.

ctrl + shift + enter를 통해 위 값을 계산해주면,
D11:D20셀 까지 자동으로 개별 자산의 MRC 값이 계산되게 됩니다.




RC는 MRC * W 이므로
C11셀과 D11셀을 곱하여 해당 자산의 RC를 구할 수 있으며,
E11부터 E20까지는 모든 자산의 RC 값이 계산됩니다.

단, 해당 값은 합이 1로 표준화되지 않은 값이므로,
'RC / RC의 합'을 통해 비중이 1이 되도록 표준화 해주도록 하며,
F11부터 F20까지의 셀이 해당 방법으로 계산된 RC 값입니다.

G11부터 G20까지의 셀은 목표가 되는 RC이며,
리스크 패러티의 경우 모든 자산의 RC가 10%로 동일합니다.




H11 셀의 값은 실제 RC와 목표 RC 간의 차이의 제곱값이며,
H21 셀은 해당 방법으로 구한 10개 자산의 차이의 제곱값의 합입니다.

리스크 패러티 포트폴리오는
모든 자산의 RC가 10%로 동일해야 합니다.

만일 실제로 RC가 10%로 동일하다면,
F11값은 0.10이 될 것이며, G11과의 차이는 0이 될 것입니다.

또한 모든 값의 차이가 0 이므로 차이의 합인 H21셀 또한 0이 될 것입니다.

그러나 현실적으로 해당 값이 0이 되는 것은 불가능하며,
해당 값이 최소가 되는 지점을 해찾기를 통해 구해주도록 합니다.
(제곱의 합이므로 음수가 될 수는 없겠죠?)



목표값은 제곱의 합에 해당하는 H21 셀을 선택해 주며,
변수 셀은 비중에 해당하는 C11부터 C20까지의 셀을 선택해 줍니다.

또한 제약조건으로는 비중의 합에 해당하는 C21셀이 1이 되도록 합니다.




해찾기로 계산된 결과를 보면
모든 자산의 RC값이 0.10으로 같으며
차이의 합이 거의 0에 가까움이 확인됩니다.

즉, 리스크 패러티를 만족하는 포트폴리오가 계산되었습니다.

목표 부분을 원하는 RC 값으로 입력한다면
Risk Budget 포트폴리오도 손쉽게 만들 수 있습니다.




하지만 엑셀로 매번 백테스트 할 수는 없으 코딩을 해야겠죠??? 

댓글 6개:

  1. 여기나오는 편미분, 공분산 등의 기초 내용을 이해하기 위해 들어야 되는 선수 수학 과목이 어떤 것이 있을까요? 미적분학, 이산수학, 선형대수학 정도 수강하면 될까요?

    답글삭제
    답글
    1. 글쎄요 저는 학교에서 미적을 안배운 세대고 혼자 배워서 잘 모르지만, 경영경제수학 정도만 해도 충분할 듯 합니다.

      삭제
    2. 답변 감사합니다. 잘 배우고 있어요~

      삭제
  2. 작성자가 댓글을 삭제했습니다.

    답글삭제
  3. 하나씩 하나씩 따라하면서 보고있는데 분산공분산 행렬과 공분산 행렬은 다른건가요...?

    답글삭제