Moving Average
카테고리: arithmetic
태그: 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}$가 아래 조건들을 만족한다고 가정해볼 수 있다.
- $\omega_{k+1} = r \omega_k$ $\rightarrow$ $r$의 비율로 감소한다.
- $\sum_{k=0}^{\infty} \omega_k = 1$ $\rightarrow$ 합이 $1$이다.
- $\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개월이면, 보통 그 기간 동안 들어온 데이터의 영향력이 강해야 하고, 그 이전 데이터는 점차 희미해지는 것이 자연스럽다.
반감기를 투자시계 내 범위 안에서 설정하면, 투자자가 실제 중요하게 보는 기간이 이동평균 계산에 충분히 반영될 수 있다는 생각이다.
반감기를 투자시계와 동일하게, 혹은 투자시계의 절반 정도로 설정하는 것이 적절하다고 생각한다.
- 투자시계 전체를 반감기로 쓴다면, 투자시계 끝 시점의 데이터는 현재의 절반의 가중치를 갖게 된다. 그리고, 투자시계 밖에 있는 데이터는 작지만 여전히 의미있는 가중치들을 갖고 있다.
- 투자시계의 절반을 반감기로 쓴다면, 투자시계의 중간쯤에서 이미 절반의 가중치가 되므로, 투자 시계 안의 데이터를 더 집중적으로 반영할 수 있다는 생각이다. 이렇게 하면 실제로 중요하게 보는 3-6개월 안에서 가중치의 대부분이 소진된다.
나는 시그널 관점에서 이 글을 쓰고 있다. 최근 정보가 더 주요하다고 생각하고, 전환점을 빠르게 포착하는 것이 중요하다면, 반감기를 짧게 가져가는 것이 유리할 것이다.
그런데 만약 리스크 관리가 목적이라면, 과거 극단값까지 넓게 반영하는 것이 더 안정적인 이동 평균값을 산출하므로, 반감기를 길게 잡는 것이 적절하다고 볼 수 있다.
댓글남기기