Moving Average

업데이트:

카테고리:

태그:

Moving Average에 대해 금융투자 실무 관점에서 정리한다.

SMA (Simple Moving Average)

가장 흔한 방법이며, 시험에 대한 반 평균 점수와 본인의 점수를 비교하며 어린 나이부터 자연스럽게, 알고 싶지 않아도 터득하는 개념이다.

실무에서는 20일 이동평균, 50일 이동평균, 200일 이동평균 등으로 활용되며, 이것을 바탕으로 단기간 이동평균이 그것보다 긴 기간의 이동평균을 상향 돌파할 때는 Golden Cross로, 하향돌파할 때를 Dead Cross 등으로 표현하기도 한다.

상당히 직관적이나, 평균을 계산할 때 모든 관측치에 동일한 중요도를 부여한다는 점이 사람이 기억을 처리하는 방식, 소위 내러티브(narrative)라고 하는 것과 부합하진 않는다. 특정 시점 이전의 값들은 모두 잊어버린다(가중치=0)는 것도 불편한 점 중 하나다.

계산은 단순하다. $k$개의 관측치를 평균한다고 하면, 각 시점 $t$에서의 ${SMA(k)}_{t}$는 다음과 같다.

\[SMA(k)_t = \frac{ x_{t-(k-1)} + x_{t-(k-2)} + \cdots + x_{t-1} + x_{t} }{k}\]

$t$시점을 기준으로 이전 $k$개의 관측치의 평균이다.

이렇게 설정하면 $t-k+1$이전의 값들에 대해서는 신경쓰지 않게 된다. 예전에 어떤 어마어마한 일이 있었든지 말이다. 단기 기억만 있고, 장기 기억은 없다. 하루하루 전략을 수정하는 초단타 영역에서는 일리가 있다. 하지만, 투자시계가 긴 투자자에겐 적절하진 않다는 것이 개인적인 생각이다.

WMA (Weighted Moving Average)

SMA는 계산에 대상이 되는 모든 관측치에 대해 $1/k$의 중요도를 부여한 것과 같다. 그런데 모든 관측치가 동일한 중요도를 갖는다는 것이 불편하다.

$k$개의 관측치를 평균할 때 각가의 관측치에 대해 중요도를 서로 다르게 줄 수 있다. 그 중요도를 $\omega$로 쓴다면

\[\{\omega_1, \omega_2, \cdots, \omega_k \}\]

로 표현할 수 있고, 이동평균은 다음과 같이 쓸 수 있다.

\[MA_t = \omega_1 x_{t-(k-1)}+ \omega_2 x_{t-(k-2)}+\cdots+\omega_k x_t\]

이제 중요한 것은 $\omega$를 어떻게 설정하느냐이다.

인간은 최근에 경험한 것을 더 잘 기억하는 경향이 있다. 반면, 과거의 그리 충격적이지 않은 사건들은 잊어가며 하루하루를 살아간다. 따라서 최근에 발생한 사건에 더 많은 가중치를 두는 것이 자연스러울 수 있다.

많이 사용하는 방법 중 하나는 과거의 기억을 지수함수적으로(exponentially) 지워가는 방법이다.

1880-1885년, 독일의 심리학자 헤르만 에빙하우스(Hermann Ebbinghaus)는 망각 곡선(Forgetting Curve)이라는 개념을 제안했다. 그는 “XEK”, “QMD”와 같은 무의미한 음절을 암기한 뒤 시간이 지나면서 얼마나 기억을 유지하는지 실험했고, 시간이 지남에 따라 기억이 지수함수적으로 감소한다는 사실을 발견했다. 학습 직후 몇 시간 안에 기억의 상당 부분이 사라지고, 시간이 지날수록 망각 속도가 완만해졌다. 오래된 기억은 처음보다 천천히 잊혀진 것이다.

이를 수학적으로 표현하면, 기억이 유지되는 비율 $R(t)$은

\[R(t)= e^{-\lambda t}\]

이다. 여기서 $\lambda \ge 0$는 망각 속도다. 이 망각 속도에 따라 $R(t)$의 함수 모양이 바뀌게 된다. $\lambda$가 클수록 $R(t)$함수는 더 가파르게 하락한다.

이 개념을 적용한 것이 EWMA(Exponentially Weighted Moving Average)이다. 최근 관측치에 더 많은 가중치를 주고, 과거 관측치일수록 가중치를 지수함수적으로 적게 주는 것이다. 이때, 감소하는 속도는 $\lambda$에 의존하게 된다.

Half-life(반감기)

$R(t)=e^{-\lambda t}$ 일 때 $R(h)=1/2 $이 되는 $h$를 반감기라고 한다. 즉,

\[e^{-\lambda h}=1/2 \Leftrightarrow \lambda = ln(2)/h\]

이다. 직관과 일치하듯, 반감기 $h$ 가 길수록 망각속도 $\lambda$는 작아진다.

반감기 $h$는 단일 관측치에 붙은 가중치가 절반으로 줄어드는 시점을 의미한다. 즉, $h$일 전의 데이터의 가중치가 오늘 데이터 가중치의 절반이라는 의미이다.

예를 들어, 반감기가 10일이라면,

  • 오늘 데이터 가중치 = 1

  • 10일 전 데이터 가중치 = 0.5

  • 20일 전 데이터 가중치 = 0.25

  • 30일 전 데이터 가중치 = 0.125

  • 40일 전 데이터 가중치 = 0.0625

이렇게 지수적으로 줄어든다. 즉, 반감기가 10일이라는 것은, 10일 전에 발생한 사건의 중요도가 오늘의 절반이라는 뜻으로 해석할 수 있다.

다시 EWMA의 정의로 돌아가서 생각해보면, EWMA는 과거 관측치를 지수적으로 줄어드는 가중치로 평균을 하는 것이다. $t$시점의 EWMA를 $m_t$라고 쓴다면,

\[m_t = \sum_{k=0}^{\infty}\omega_k x_{t-k}\]

이다. 여기서 $\omega_k$의 모양은 어떨지 계산해보자.

가중치 ${ \omega_k}$가 아래 조건들을 만족한다고 가정해볼 수 있다.

  1. $\omega_{k+1} = r \omega_k$ $\rightarrow$ $r$의 비율로 감소한다.
  2. $\sum_{k=0}^{\infty} \omega_k = 1$ $\rightarrow$ 합이 $1$이다.
  3. $\omega_0 > 0$ $\rightarrow$ 가장 최근 관측치에 대한 중요도는 양수이다.

위 조건을 모두 만족한다면,

\[\sum_{k=0}^{\infty}\omega_k= \omega_0 \sum_{k=0}^{\infty}r^k = \omega_0 \frac{1}{1-r}=1\]

이므로, $\omega_0=1-r$이다. 즉,

\[\omega_{k}= (1-r) r^k\]

이다.

편의상, $r \equiv \beta$로 표기하면

\[\omega_k = (1-\beta) \beta^k , ~~0 < \beta < 1\]

이 된다.

위 식을 조금 정리해보면

\[\begin{aligned} m_t &= (1-\beta)x_t + (1-\beta)\beta x_{t-1} + (1-\beta)\beta^2 x_{t-2} + \cdots \\ &= (1-\beta)x_t + \beta [(1-\beta)x_{t-1} + (1-\beta)\beta x_{t-2}+\cdots ]\\ &=(1-\beta)x_t + \beta m_{t-1} \end{aligned}\]

이다. 즉, $(1-\beta)$는 새로운 관측치 $x_t$에 주는 가중치이며, $\beta$는 평균을 계산할 때 이전 평균$m_{t-1}$에 이어가는 decaying 요소이다. 즉, EWMA는 현재 관측치($x_t$)와 과거 평균($m_{t-1}$)을 $(1-\beta)$와 $\beta$로 가중평균하며 섞는 재귀적인 식으로 표현할 수 있다.

반감기 $h$일 전 가중치가 오늘의 절반이라는 것은, 오늘의 가중치가 $(1-\beta)$이므로, $h$일 전 가중치 $\omega_h = (1- \beta)\beta^{h}=(1-\beta)/2$라는 뜻이므로

\[\beta^h = 1/2 \Rightarrow \beta = 2^{-1/h}\]

이다. 따라서 반감기가 길수록, 즉 $h$가 클수록 과거 평균($m_{t-1}$)의 중요도(가중치)는 작아진다.

기본 데이터 세트 설정

$N$개의 관측치가 있다고 가정한다. 여기서 $x$는 주가지수(SPX, NKY 등)의 종가라고 생각해도 좋다.

\[\{x_1, x_2, \cdots, x_N\}\]

통계학에서는 $N$을 무한대로 가정하기도 하나, 실제 현업에서는 데이터의 제한이 있기 마련이고, $N$은 유한한 값이 될 수 밖에 없다. 다루어야할 데이터가 많아질수록 계산의 속도와 관리의 편리함을 위해 $N$을 통제하는 것이 필요하다. 모든 데이터를 사용하기 보다는 실질적으로 의미가 있는 데이터만을 사용하는 것이다.

앞에서

\[\omega_k = (1-\beta)\beta^k\]

로 쓸 수 있었다. 그런데 유한 개의 표본($N$)에서는

\[S_N = \sum_{k=0}^{N-1} (1-\beta) \beta^k = (1-\beta)\frac{1-\beta^N}{1-\beta} = 1-\beta^N<1\]

이 된다. 따라서, 유한 개의 표본일 때는 가중치를

\[\omega_k^* = \frac{(1-\beta)\beta^k}{1-\beta^N}\]

으로 설정하여, 합이 $1$이 되도록 조정한다.

그렇다면, 반감기($h$)와 관측 세트의 개수($N$)사이에는 어떤 관계가 있는 것이 적절할까? 즉, 반감기에 따라 $N$을 어떻게 설정해야 적절한 것일까? 분명한 것은, 오래된 기억일수록 가중치가 적어지므로 데이터를 더 많이 활용할수록 그 효용은 점차 줄어든다는 것이다.

$\lim_{N \rightarrow \infty} S_N = 1$ 이며, $S_N < 1$이다. 이때 $S_N$은 전체 데이터의 얼마를 커버하는 지를 알려준다.

\[S_N = 1-\beta^N = 1- 2^{-N/h}\]

임을 이용하면

  • $N= h \rightarrow S_h = 1-2^{-1} =0.5$, 최근 $h$개 데이터가 전체 정보의 절반 차지
  • $N = 3h \rightarrow S_{3h} = 1-2^{-1/3} = 0.875$, 최근 $3h$개 데이터가 전체 정보의 87.5% 차지
  • $N=5h \rightarrow S_{5h} = 1-2^{-1/5} = 0.96875$, 최근 $5h$개 데이터가 전체 정보의 약 97% 차지
  • $N=7h \rightarrow S_{7h} = 1-2^{-1/7} \approx 0.992$, 최근 $7h$개 데이터가 전체 정보의 99% 차지

임을 알 수 있다.

실무에서는 $N \approx 3h \sim 5h$ 정도면 충분하다고 한다. 대략 전체 정보의 90~97%를 담을 수 있기 때문이다. 더 긴 관찰기간을 쓰면 꼬리 쪽의 미세한 비중을 더 포함시킬 뿐이고, 계산량은 늘어나지만 추가 정보는 거의 없다.

요즘에는 컴퓨터나 클라우드의 연산 능력이 매우 뛰어나기 때문에 큰 문제가 되지 않을 수 있으나, 그래도 관리하는 데이터가 어떻게 늘어날지 모르니 적절한 $N$을 설정하는 것은 중요하다고 할 수 있다.

실무에서 반감기($h$)와 관측 기간($N$)의 설정

투자자마다 투자 시계가 다르다. 어떤 투자자는 몇 초~몇 분이 될수도 있고, 어떤 투자자는 수개월, 또 다른 투자자는 몇 년을 설정하기도 한다.

만약 투자시계가 3-6개월이라면 어떨까? 이 말을 어떻게 해석할지에 대해서는 사람마다 생각이 다르겠으나, 의사결정을 할 때 최근 3-6개월의 데이터에 가장 민감하게 반응한다는 뜻으로 해석해도 무리는 없어 보인다. 그러면 EWMA에서 반감기 $h$를 설정할 때 다음과 같은 것을 생각해볼 수 있다.

반감기 $h$는 얼마나 빨리 과거 데이터를 잊을지를 결정하는 파라미터이다. 시장 관측치의 중요성이 절반으로 줄어드는 시점이기도 하다. 투자시계가 3-6개월이면, 보통 그 기간 동안 들어온 데이터의 영향력이 강해야 하고, 그 이전 데이터는 점차 희미해지는 것이 자연스럽다.

반감기를 투자시계 내 범위 안에서 설정하면, 투자자가 실제 중요하게 보는 기간이 이동평균 계산에 충분히 반영될 수 있다는 생각이다.

반감기를 투자시계와 동일하게, 혹은 투자시계의 절반 정도로 설정하는 것이 적절하다고 생각한다.

  1. 투자시계 전체를 반감기로 쓴다면, 투자시계 끝 시점의 데이터는 현재의 절반의 가중치를 갖게 된다. 그리고, 투자시계 밖에 있는 데이터는 작지만 여전히 의미있는 가중치들을 갖고 있다.
  2. 투자시계의 절반을 반감기로 쓴다면, 투자시계의 중간쯤에서 이미 절반의 가중치가 되므로, 투자 시계 안의 데이터를 더 집중적으로 반영할 수 있다는 생각이다. 이렇게 하면 실제로 중요하게 보는 3-6개월 안에서 가중치의 대부분이 소진된다.

나는 시그널 관점에서 이 글을 쓰고 있다. 최근 정보가 더 주요하다고 생각하고, 전환점을 빠르게 포착하는 것이 중요하다면, 반감기를 짧게 가져가는 것이 유리할 것이다.

그런데 만약 리스크 관리가 목적이라면, 과거 극단값까지 넓게 반영하는 것이 더 안정적인 이동 평균값을 산출하므로, 반감기를 길게 잡는 것이 적절하다고 볼 수 있다.

댓글남기기