brunch

You can make anything
by writing

C.S.Lewis

by 퀀트대디 Dec 15. 2020

포트폴리오 최적화를 위한 수학 도구상자

# 최적화와 선형대수학

최적화는 이제 금융에서도 매우 익숙한 개념이 되어버렸지만, 최적화는 본래 공학으로부터 나온 개념이다. 최적화의 본질은 결국 일련의 주어진 제약조건들 하에서 목적함수를 최대화 혹은 최소화하기 위해 우리가 결정할 수 있는 인자들을 얼마로 설정해야 하는가에 답해주는 것이며, 따라서 최적화를 위해서는 수학을 사용하는 것이 필수적이다.


여기서는 포트폴리오 최적화 모델을 다루기에 앞서 필요한 수학적 개념들을 살펴볼 것이다. 최적화의 영역에서는 여러 가지 수학 분야 중에서도 특히 선형대수학이 매우 큰 힘을 발휘한다. 그만큼 선형대수학에 대한 이해가 있다면 사실 최적화 기법을 이해하는 것은 그리 어렵지 않다. 앞으로 다루게 될 최적화 모델들은 모두 이러한 선형대수학 프레임워크 안에서 작동한다.



# 포트폴리오 최적화를 위한 수학적 표현

우선 우리는 포트폴리오를 구성하기 위해 N개의 자산이 주어져 있다고 가정한다. 최적화를 위해 선형대수학이 필요한 이유는 단일한 한 개의 자산이 아닌 수많은 자산들을 다루기 때문이고, 이런 와중에 각 자산들의 속성값들, 즉 수익률과 변동성, 상관계수가 자연스럽게 일련의 시리즈 혹은 집합을 이루고 있기 때문이다. 다시 말해, 어떤 단일한 값이 아닌 일련의 값들로 이루어진 것들을 다루기에, 선형대수학은 최적화 문제를 해결하기 위해 없어서는 안 될 도구가 된다.


1) 수익률 (Returns)

우선 N개의 자산에 대한 수익률은 아래와 같이 N X 1의 열 벡터(Column Vector)로 표현할 수 있다. 여기서 위 첨자 T는 해당 행렬의 전치행렬(Transpose)을 의미한다. 일반적으로 벡터나 행렬을 나타내기 위한 기호는 아래의 경우처럼 볼드체를 사용할 것이다. 만약 수식에 볼드체가 보인다면 '아, 이건 단일 값이 아닌 벡터나 행렬이겠구나.'라고 해석을 하면 된다.


2) 기대 수익률 (Expected Returns)

기대 수익률은 실제 수익률이 아닌 투자자가 추정하고 있는 해당 자산으로부터 수익률의 기댓값이다. 이 또한 N X 1의 열 벡터로 표현할 수 있다.


3) 변동성 (Volatility)

각각의 자산에 대한 변동성은 다음과 같이 N X 1의 변동성 벡터로 표현이 가능하다.


4) 샤프 비율 (Sharpe Ratio)

샤프 비율은 자산이나 포트폴리오의 성과를 나타내는 대표적인 지표이다. 각각의 자산에 대한 샤프 비율 또한 N X 1의 열 벡터로 표현이 가능하다.


5) 변동성 대각행렬 (Diagonal Matrix of Volatility)

대각행렬이란 주대각선 성분을 제외한 다른 모든 성분이 0인 행렬을 의미한다. 주대각선 성분을 각 자산의 변동성으로 채워 넣는다면 이 대각행렬은 변동성 대각행렬이 되며, 우리는 이를 람다(Lambda)라는 그리스 문자를 써서 표현할 수 있다.

변동성 대각행렬을 사용한다면 아래와 수식을 사용하여 아주 간단하게 샤프 비율을 계산할 수 있다.


6) 상관계수 행렬 (Correlation Matrix)

상관계수는 어떤 두 자산 간의 상관관계를 나타내는 지표이다. 따라서 이 상관계수라는 것은 수익률이나 변동성처럼 벡터로 표현할 수 없으며, 다음과 같이 N X N 형태의 행렬로 표현이 가능하다. 다만, 어떤 동일한 두 자산의 상관계수는 1이므로, 상관계수 행렬에서 대각선 성분들은 모두 1이 된다.


7) 공분산 행렬 (Covariance Matrix)

상관계수라는 개념을 떠올리면 같이 생각나는 개념이 바로 공분산이다. 공분산 또한 다음과 같이 N X N 형태의 행렬로 표현할 수가 있다. 여기서 공분산 행렬은 그리스 문자인 시그마(Sigma)를 사용해서 표현한다.


8) 가중치 (Weights)

포트폴리오 최적화는 결국 각각의 자산들에 대해 얼마만큼 가중치를 주어야 하는지를 알려준다. 또한 자산별 가중치를 안다면, 우리는 포트폴리오의 수익률이나 변동성을 계산할 수 있다. 그만큼 가중치는 포트폴리오 최적화에서 매우 중요한 값이며, 이 가중치 또한 N X 1 형태의 열 벡터로 표현이 가능하다.


9) 기타

포트폴리오 최적화 계산 과정에서는 이따금씩 계산의 편리성을 위해 1과 0만으로 구성된 벡터가 필요할 때가 있다. 여기서는 두 가지 벡터를 소개할 텐데, 하나는 모든 성분이 1인 열 벡터이고 다른 하나는 j번째 성분만 1이고 나머지 성분은 0으로 구성된 열 벡터이다. 이 두 가지 벡터 모두 N X 1의 형태를 가진다.



# 포트폴리오 수익률과 변동성, 그리고 민감도

우리는 지금까지 포트폴리오 최적화를 위해 필요한 기본적인 수학적 표현들을 살펴보았다. 수학이라는 도구의 힘이 매우 강력한 이유는 보다 고차원적인 개념들을 단순한 수학적 형태로 치환시켜 우리에게 보여주기 때문이다. 또한 만약 파이썬과 같은 직관적인 프로그래밍 언어를 사용한다면 이러한 수학적 표현들을 실제 코드로 쉽게 바꾸어 실무적으로도 편리하게 사용할 수 있도록 구현할 수 있다.


여기서는 실제 최적화 모델을 본격적으로 다루기에 앞서, 포트폴리오 수익률과 변동성 같은 개념들이 선형대수학이라는 도구를 통해 어떻게 간단하게 표현될 수 있는지 살펴볼 것이다.


1) 포트폴리오 수익률 (Portfolio Return)

포트폴리오의 수익률은 각 자산들의 수익률을 가중치별로 가중평균한 값이며, 아래와 같이 나타낼 수 있다.


2) 포트폴리오 기대수익률 (Expected Portfolio Return)

자산별 기대수익률과 마찬가지로 포트폴리오 기대수익률 또한 투자자가 생각하는 포트폴리오 수익률의 기댓값을 의미한다.


3) 포트폴리오 변동성 (Portfolio Variance)

아래의 수식은 포트폴리오의 변동성을 나타내고 있다. 자산별 가중치 벡터와 공분산 행렬이 있다면 포트폴리오 변동성을 쉽게 계산할 수 있다.


4) 베타 (Beta)

우리가 흔히 알고 있는 베타계수이다. 전체 포트폴리오 대비 각 자산의 베타계수를 열 벡터의 형태로 표현할 수 있다.


5) 포트폴리오 수익률과 변동성의 가중치별 민감도

마지막으로 각 자산별 가중치의 변화에 따른 포트폴리오 전체의 수익률과 변동성에 대한 민감도를 계산할 수 있다. 즉, 이것은 각 자산의 가중치를 한 단위 변화시켰을 때 포트폴리오의 수익률과 변동성이 얼마만큼 변화하는지에 대한 지표이다. 이를 계산하면 포트폴리오의 수익률과 변동성에 어떤 자산이 얼마만큼의 기여를 하고 있는지를 직관적으로 파악할 수 있다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari