계량투자 실험실 Quantlab

추적오차의 통제

BM에 대한 추적오차를 통제해야 할 때가 종종 있다. 특히 기관투자자들에게는 추적오차 관리가 굉장히 중요한 업무인 경우가 많다. 이 포스트에서는 추적오차 통제에 대한 대수적 해법 (Algebraic solution)을 제시하였다. 그리고 이전 포스트에서 제시한 Global Fixed-income Allocation Model (글로벌 채권배분 모형, GFAM)에 적용하여 그 유효성을 검증해보았다.

BM이 US Aggregate 인 경우의 추적오차 통제성능
compare_te_agg


Formulation

사후적 추적오차(ex-post tracking error)는 말 그대로 이미 발생한 일이고, 사후적인 통제가 불가능하다. 따라서 일반적으로 추적오차를 통제하기 위해서는, 포트폴리오 비중조절 등을 통해 현재 시점에서의 사전적 추적오차(ex-ante tracking error)를 일정 범위 내에서 관리하는 경우가 많다. 하지만 이 경우, 실질적인 평가대상인 사후적 추적오차와의 괴리가 불가피하게 발생하게 된다. 이 포스트의 아이디어는, 사후적 추적오차를 기반으로 사전적 추적오차를 Rolling 업데이트하는 것이다.

아이디어

Rolling 추적오차 = 사후적(11M) + 사전적(1M) < 목표 추적오차


사전적 추적오차의 통제

우선 사전적 추적오차부터 통제해보자. 미리 정해진 투자전략에 의해 개의 종목의 포트폴리오가 주어졌고, BM의 종목별 비중을 알고 있다고 가정한다.

우리는 포트폴리오와 BM 간의 비중조절이 사전적 추적오차 에 어떤 영향을 미치는 지 살펴볼 예정이다.

포트폴리오에 만큼 투자(이 값을 포트폴리오 전체비중이라고 부르자)하고, 나머지 비중 를 BM에 투자한다면, 최종 포트폴리오 벡터 와 초과비중 벡터 는 다음과 같이 결정될 것이다.

따라서 연률화 계수 와 공분산 행렬 에 대해서, 사전적 추적오차 는 다음과 같이 의 함수로 나타낼 수 있다. (사전적 추적오차에 대한 자세한 설명은 여기를 참고)

여기서 은 포트폴리오에 100% 투자했을 때(BM에 투자하지 않는 경우, 즉 )의 사전적 추적오차를 뜻하며, 최종 포트폴리오가 가질 수 있는 추적오차의 최대값이 된다. 결국 최종 포트폴리오의 사전적 추적오차는 포트폴리오 전체비중 의 크기에 선형적으로 비례하게 된다.


Algebraic solution

논의를 진행하기 위해서는 다음의 변수들이 필요하다.

여기서 Safety buffer 의 의미는, 추적오차를 좀더 여유있게 관리하기 위해 약간의 Margin을 준 것이라고 이해하면 된다. 예를들어 목표 추적오차가 5%로 주어졌다고 하고, Safety buffer를 80%로 설정한다면, 우리는 Rolling 추적오차를 약 4% (= 5% x 80%) 수준에서 관리하게 되는 것이다.

이제 사전적 추적오차가 일 만큼 반영된 Rolling 추적오차 를 다음과 같이 구성해보자.

우리의 목적은, 다음의 두 가지 제약조건(Constraints)을 만족하는 포트폴리오 전체비중 의 최대값을 찾는 것이 된다.

이 문제는 본질적으로 최적화 문제(Optimization problem)에 속한다. 하지만 제약조건이 실수 에 대한 단순 2차함수로 되어 있기 때문에, 다음과 같이 Algebraic solution 를 쉽게 구할 수 있다.

여기서 로 치환하면,


eta_shape


Filtering

위에서 구한 포트폴리오 전체비중 는 두 가지 측면에서 약점이 있다.

  1. 가 포함되어 있이기 때문에, 주위에서 가 급격하게 0으로 수렴(위의 차트 참조)한다. 운용 측면에서 보면, 사후적 추적오차 가 다소 큰 상황에서, 포트폴리오 편입/편출의 변동이 과도할 수도 있음을 의미한다.

  2. Rolling 추적오차 에 사전적 추적오차가 반영되는 비중이 사후적 추적오차에 비해 상대적으로 작기 때문에, 단기적인 변동성 국면에는 다소 취약할 수 있다.

따라서 이들 약점을 일정부분 보완하기 위해, 다음의 Filter를 추가하였다.

  1. Smoothing Filter: 부근에서 포트폴리오 전체비중 의 변화를 부드럽게 조정

  2. Short-term Alert Filter: 사전적 추적오차가 단기적으로 목표 추적오차를 넘지 않도록, 를 보수적으로 결정


Smoothing Filter

부근에서 포트폴리오 전체비중 의 변화가 크기 때문에, 실제 운용하는 과정에서 포트폴리오 관리가 매우 불안정해질 가능성이 높다. 이를 보완하기 위해, 어떤 값 () 에서 에 접하는 새로운 지수(Exponential) 함수 를 설계한다.

eta_and_smoothershape


간단한 수식전개를 통해 는 아래와 같이 도출된다.

따라서 기존의 는 다음과 같이 새로운 비중 으로 변환된다.


eta_smoothedhape

이와 같은 변환 Smoothing Filter라고 부르도록 하자.


값의 의미

값은 가 기존(filtering 이전)의 비중 와 얼마나 유사한 지를 나타내는, 일종의 Tuning factor 이다. 가 0에 가까울 수록 가 된다. 다음은 의 변화에 따른 의 형태를 보여주고 있다.

eta_by_k


Short-term Alert Filter

최근 며칠간 금융시장의 변동성이 급등했다고 가정해보자. Rolling 추적오차 는 연간 총영업일수 를 Rolling 하며 사전적 추적오차의 일부(일)만을 반영하기 때문에, 최근에 발생한 변동성의 반영은 미미할 것이다. 따라서 변동성이 크게 상승하는 구간에는, 매우 보수적인 관점에서 단기적인 변동성을 감안할 필요성이 생긴다.

우선 단기적인 사전적 추적오차라고 정의하고, 다음과 같이 포트폴리오 전체비중 의 함수로 나타내보자.

전개과정은 과 완전히 동일하다. Short-term 공분산 행렬 로 바뀌었을 뿐이다. EWM (Exponentially Weighted Moving Method)를 써도 되고, 가장 최근의 수익률 데이터를 활용한 샘플 공분산 행렬 를 써도 큰 상관은 없다. 참고로 이 포스트에서는, 는 12개월 샘플 공분산 행렬, 는 1개월 샘플 공분산 행렬을 쓰고 있다. 그리고 마찬가지로 는 단기적인 사전적 추적오차의 최대값이 된다.

단기적인 사전적 추적오차 가 다음의 제약조건을 만족한다고 해보자.

마찬가지로 우리는 위의 제약조건을 만족하는 중 최대값을 찾을 것이고, 이는 다음과 같이 쉽게 도출된다.

변동성이 급등하는 구간에서 단기적인 사전적 추적오차의 최대값 는 꽤나 큰 값일 것이므로, 는 다소 보수적인 비중으로 해석된다. 우리는 보다 더 작은 값으로 포트폴리오 전체비중을 결정할 것이다.

이제 기존의 포트폴리오 전체비중 (즉, 이전 단계에서 에 Smoothing Filter 가 적용된 값)은 다음과 같이 새로운 비중 으로 변환된다. 이러한 변환을 Short-term Alert Filter 라고 하자.


Final Solution

이제까지 전개한 것을 종합해보자. 최종비중은 가 된다.

여기서,


Application

이제까지 셋업한 추적오차 통제 방법론을 실제 포트폴리오 전략에 적용해보자. 이 포스트에서는 모멘텀 기반의 글로벌 채권배분 전략인 GFAM (Global Fixed-income Allocation Model)에 적용해보았다. 아래 백테스트에서 공통적으로 사용하고 있는 설정들은 다음과 같다.


Filtering 효과

우선 이 포스트에서 설계한 두 가지 Filter들의 효과를 확인해보자. GFAM에 목표 추적오차 =3% 로 백테스트 하였고, Smoothing Filter와 Short-term Alert Filter를 차례로 추가 적용하였다. BM은 AGG (US Aggregate bond ETF) 로 하였다. 아래 오른쪽 차트는 사후적(1년) 추적오차를 측정한 것이다.

compare_filters


Validation

여러가지 목표 추적오차에 대해서, 추적오차 통제가 제대로 되는 지를 확인한다. Smoothing Filter와 Short-term Alert Filter를 모두 적용하였다. 아래의 각 투자지표에 대해서는 투자성과의 측정을 참고한다.

공통적으로 다음을 알 수 있다.

[CASE 1] BM = AGG (US Aggregate bond)

compare_te_agg
stats_agg

[CASE 2] BM = HYG (US High yield bond)

compare_te_hy

[CASE 3] BM = ACWI (MSCI All country)

compare_te_acwi
comments powered by Disqus