brunch

You can make anything
by writing

C.S.Lewis

by 퀀트대디 May 16. 2021

주성분분석(PCA)

퀀트 팩터 모델링 #5.

# 주성분분석

주성분분석(PCA; Principal Component Analysis)은 앞서 다루었던 요인 분석의 특수한 케이스이다. PCA에서 팩터들은 자산 간의 공분산 행렬에 대한 고유벡터 분해로 인해 내생적으로 결정된다는 점에서 전통적인 요인 분석과는 완전히 다른 양상을 보여준다. PCA는 근본적으로 상관계수 행렬을 가장 잘 설명할 수 있는 벡터 공간에서의 기저(Basis)를 찾는다.


PCA에서 팩터들은 여러 가지 변수들의 선형적 결합이다. 다시 말해, 이러한 팩터들은 변수들의 결과이다. 이는 팩터가 변수의 원인이라는 요인 분석의 생각과는 완전히 반대의 생각을 가지고 있다. 아래의 그림은 PCA의 경로 분석을 직관적으로 보여주고 있는데, 요인 분석과는 다르게 화살표가 수익률에서 팩터로 향하는 것을 볼 수 있다.

PCA의 경로 분석

팩터들은 선형대수학을 통해 직접적으로 얻어지기 때문에, PCA에서는 전통적인 요인 분석과 다르게 팩터의 특정 구조를 선택하거나 가정할 필요가 없다. 또한, 요인 분석에서는 전체 분산이 공통부분과 고유 부분으로 나누어지는 반면, PCA는 자산들의 전체 분산을 설명한다.


PCA로부터 추출된 팩터들은 기본적으로 서로 직교성을 지니고 있다. 다시 말해, 이는 팩터 간의 상관관계가 존재하지 않는, 즉 겹치지 않는 정보를 가지고 있음을 의미한다. 또한 각각의 팩터들은 전체 분산 중 일부를 설명하고 있다. 첫 번째 주성분은 전체 분산 중 가장 많은 부분을 설명하고, 두 번째 팩터는 첫 번째 팩터와 직교하는 모든 벡터들 중 잔여 분산의 최대치를 설명할 수 있도록 설정된다. 이러한 과정을 반복하게 되면 팩터들은 계속해서 이전 팩터들과 직교하되 동시에 잔여 분산의 최대치를 설명할 수 있도록 설정된다.

PCA의 기본 원리



# PCA의 수학적 모델링

1) 특이값 분해를 통한 PCA 팩터 추출

PCA의 첫걸음은 바로 자산들 간의 공분산 행렬을 구하는 것이다. 결국 PCA는 이 공분산 행렬을 분해하여 서로 상관관계가 존재하지 않는 팩터들을 찾아낸다. 아래와 같이 공분산 행렬을 구할 수 있다면, 고윳값 분해를 통해 이를 다른 방식으로 표현할 수 있다.

여기서 E는 고유벡터(eigen-vectors)를 그리고 D는 고유값들(eigen-values)로 이루어진 대각행렬을 의미한다. 또한, 고유벡터는 그것의 전치행렬이 역행렬이 된다.

결국 PCA로 추출된 팩터는 자산 수익률과 고유 벡터를 곱하여 얻을 수 있으며, 팩터 간의 공분산 행렬은 고유값들로 이루어진 대각행렬이다. 따라서 주성분들은 서로 상관관계를 가지지 않게 되고, 그들의 분산은 고윳값들로 설명이 된다.


2) 주성분과 자산 간의 위험 기여도

주성분들이 어떻게 자산들과 관계를 맺고 있는지를 이해하기 위해서, 우리는 주성분에 대한 자산들의 위험 기여 프로파일을 평가해볼 수 있다. 정의상, 어떤 팩터에 대한 어떤 자산의 위험 기여도(Risk Contribution)는 베타(Beta)와 가중치(Weight)의 곱으로 나타내어진다. PCA로부터 우리는 팩터 수익률이 자산 수익률과 고유 벡터의 곱이라는 것을 알아냈다. 이는 다시 말해 i번째 고유 벡터가 가중치라는 것을 의미한다. 그렇다면 만약 i번째 주성분에 대한 자산들의 베타 벡터를 알아낼 수 있다면, 우리는 이 둘을 곱해 i번째 주성분에 대한 자산들의 위험 기여도를 계산할 수 있다.


i번째 주성분에 대한 자산들의 베타 벡터는 앞서 정의했던 공분산 행렬과 고유 벡터, 그리고 고윳값의 관계를 통해 다음과 같이 계산할 수 있다. 즉, 베타 벡터는 정확하게 i번째 고유 벡터와 일치한다.

따라서 이를 통해 위험 기여를 계산한다면 다음과 같은 결과를 얻을 수 있다. 즉, i번째 고유 벡터의 제곱은 i번째 주성분에 대한 자산들의 위험 기여도가 된다.

그렇다면 반대로 i번째 자산에 대한 주성분들의 위험 기여도는 어떻게 측정할까? 이 또한 방향만 반대일 뿐 마찬가지 방식을 따른다. 우선, PCA를 통한 결과로부터 우리는 자산 수익률을 팩터 수익률과 고유 벡터 전치 행렬의 곱으로 나타낼 수 있음을 알고 있다.

이때, 여기서 고유 벡터의 전치행렬은 이전과 마찬가지로 가중치를 의미한다. 따라서 만약 베타를 알 수 있다면, 또다시 이 둘을 곱하여 최종적으로 팩터의 위험 기여도를 계산할 수 있게 되며, 이때 i번째 팩터의 베타는 다음과 같이 계산이 가능하다.

결국 앞에서 구한 베타와 가중치를 곱하게 되면 PCA를 통해 추출해낸 주성분들의 위험 기여도를 계산할 수 있다.



# PCA를 활용한 팩터 모델링 예시

그렇다면 어떻게 PCA를 실제로 활용할 수 있을까? 주성분(Principal Component)이라는 통계적 팩터를 찾기 위해서는 우선 그것의 토대가 되는 수익률 데이터의 집합이 필요하다. 이러한 수익률 데이터는 여러 가지 자산들, 즉 멀티에셋 관점에서의 수익률이 될 수도 있고, 연역적으로 생각해낸 팩터 전략들의 수익률이 될 수도 있다.


여기서는 팩터 세계의 빌딩블록이라고 할 수 있는 가장 기본적인 팩터들인 베타(Beta)캐리(Carry)모멘텀(Momentum)밸류(Value), 그리고 변동성(Volatility) 팩터를 각각의 자산군 - 주식(Equity)채권(Bond)외환(Currency)원자재(Commodity) - 에 적용하여 20개 전략에 대해 1990년부터 2020년까지, 총 30년 동안의 백테스팅 데이터를 산출하고, 이러한 데이터에 PCA를 적용하여 총 20개의 주성분을 추출하였다.

팩터 유니버스

우선, 아래의 표는 팩터 유니버스를 통해 추출해낸 20개의 전략들이 각각의 주성분에 대해 어느 정도의 위험 기여를 하고 있는가를 나타내고 있다.

이 표는 각각의 주성분에 대해 어떤 전략이 어느 정도의 위험 기여를 하는지 한눈에 파악할 수 있어 매우 직관적이다.


또한, 우리는 PCA를 통해 추출해낸 주성분들, 즉 상관관계가 존재하지 않는 각각의 통계적 팩터들의 성과를 측정해볼 수도 있다. 아래의 표는 각 주성분들의 수익률과 위험, 성과 비율 등을 제시하고 있다.

생각보다 PCA에 의한 통계적 팩터들의 샤프비율이 높지 않고, 오히려 높은 변동성과 최대손실폭을 기록하고 있는데 이것은 어찌 보면 그렇게 놀랍지 않은 결과이다. 왜냐하면 PCA의 방법론은 합리적인 위험 프리미엄을 가지고 있는 팩터를 찾는 것보다는 본질적으로 분산을 가장 잘 설명하는 팩터들을 찾아내기 때문이다.



# PCA의 한계

PCA는 상관관계가 존재하지 않는 팩터들을 찾아낼 수 있는 가장 단순하고 일반적인 방법이지만, 이것은 몇 가지 문제점을 가지고 있다. 우선, 앞서 말했듯이 PCA는 통계적으로 가장 큰 분산을 설명할 수 있는 팩터를 찾아낸다. 그렇기 때문에 PCA를 통해 추출해낸 주요 주성분들은 낮은 변동성을 보이면서 중요한 위험 프리미엄을 가지고 있을 팩터들은 무시할 가능성이 있다.


또한 투자자들은 PCA 팩터들 간의 상관관계가 없다는 것이 팩터들 간의 독립성을 보장해 주지는 않는다는 사실을 주지해야 한다. 이러한 PCA의 한계는 특히 원래의 데이터 자료가 정규분포를 심각하게 훼손하는 경우에 매우 뚜렷하게 나타난다. 따라서, PCA에 의한 주성분들이 완전히 독립적이기 위해서는 입력 변수로 사용되는 데이터의 집합이 정규분포의 성질을 띄고 있어야만 한다.

PCA의 한계

마지막으로, PCA 기법은 여러 다른 통계적 팩터 모델링 기법들과 마찬가지로 팩터에 대한 직관적 해석이 쉽지 않다는 문제점을 가지고 있다. 비록 PCA를 통해 추출된 팩터들이 다른 거시경제적 변수들과 높은 상관관계를 보인다고 하더라도, 실질적으로 이러한 통계적 팩터들을 해석하는 것은 결국 과학보다는 예술의 영역에 가깝다. 결국 사용자의 직관과 상상, 그리고 통찰에 의한 해석이 필요한 부분이다.


다음에 계속...


매거진의 이전글 요인 분석
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari