HTS에서 기본적으로 가격 Smoothing을 위해 제공하는 Low-pass(저역 통과) 디지털 필터에는 다음과 같은 3가지가 있다.
- 단순 이동 평균,
.
- 가중 이동 평균,
, where
.
- 지수 이동 평균,
, where
.
이 글에서는 각 이동 평균 별로 주파수 도메인에서 어떤 특성을 갖고 있는지에 대해서 얘기해 보려 한다.
약간의 신호처리 기본에 대해 얘기하자면 위와 같은 입출력 관계는 다음과 같은 콘볼루션 식으로 나타낼 수 있다.
, where
.
그리고 위와 같은 LTI(Linear Time Invariant) 시스템의 z 도메인에서의 응답(Response)
은 다음과 같다.
.
이 시스템의 주파수 응답은
, where
로 정의 된다. 이 주파수 응답의 의미는 위 시스템(
)에 복소 주기 수열(고유 벡터)
이 입력으로 인가됐을 때의 출력에 대한 고유값(
을 의미한다.
이제 각 이동 평균 별로 주파수 응답에 대해서 보자. Magnitude Response (진폭 응답?),
을 보도록 하겠다. L = 4를 사용하도록 하겠다. -6 dB에 빨간 직선을 그은 것은 그 지점이 진폭이 반(
)이 되는 지점으로 여길 기준으로 주파수가 Cut-off 되는 것으로 판단한다.
먼저 단순이동평균 :
.

단순 이동 평균의 진폭 및 위상 응답
x축은 Normalized Frequency라고 해서 Radian값을
로 나눈 값이다. 각주파수로 생각하면 되는데 1이 의미하는 바는
즉 반주기(
)인데 이는 Nyquist frequency 때문에 차트 상에서 2개의 Bar를 의미한다고 보면 된다. 위 그림에서 보면 알겠지만 0.5와 1에서 진폭 응답이 0(
dB)임을 볼 수 있다. 즉 단순 이동평균은 4개 Bar(
) 및 2개 Bar(
)의 주기를 갖는 데이터는 완전히 날려 버리는 성질을 갖고 있다. 물론 이 필터를 사용하는 목적은 Low pass, 즉 낮은 주파수의 데이터를 통과시키는 것이기는 하지만 4일 이동 평균에서 2일 및 4일 주기의 정보를 완전히 날려버리는 것은 의도하지는 않았을 것이다. Cut-off 주기는 대략 봤을 때 0.3
radian, 즉 1/0.3*2= 6.67 Bars 정도 되는 것을 알 수 있다.
다음으로 가중 이동평균
의 주파수 응답을 보자.

가중이동평균의 진폭 및 위상 응답
다행이 이 필터는 4 Bars 및 2 Bars의 주기를 갖는 정보를 완전히 날려버리지는 않는 것을 볼 수 있다. Cut-off 주기는 약 0.35
radian, 즉 5.71 Bars 정도 되는 것을 알 수 있다.
이번에는 지수 이동 평균
(
)을 보도록 하자.

지수이동평균의 진폭 및 위상 응답
전체적으로 가중이동평균과 비슷한 모습을 보이나 가중 이동평균과 같은 출렁임은 없다. Cut-off 주기는 약 0.29
radian, 즉 6.9 Bars 정도 되는 것을 알 수 있다. 가중이동평균에 비교하면 주파수를 좀 일찍부터 자르는 경향이 있는 것을 볼 수 있다.
각 이동평균별로 다른 주파수 응답 특성을 보이는데 어떤 디지털필터를 사용할지 판단하는데 위와 같은 분석이 도움이 되었으면 한다.
각 이동 평균들이 얼마나 빠르게 시세를 따라가는지를 보려면 위상응답을 분석해야 하는데 이는 다음에 얘기하도록 하겠다.
위 그림을 그리기 위해 사용한 매틀랩 코드는 다음과 같다.
L = 4;
% Simple Moving Average
b1 = ones(L, 1)/L;
figure;
freqz(b1);
hold on
plot(0:0.01:1, -6*ones(size(0:0.01:1)), ‘r’);
% Weighted Moving Average
b2 = (L:-1:1)/sum(L:-1:1);
figure;
freqz(b2);
hold on
plot(0:0.01:1, -6*ones(size(0:0.01:1)), ‘r’);
% Exponentially Weighted Moving Average
alpha = 2/(L+1);
b3 = [alpha];
a3 = [1, -(1-alpha)];
figure;
freqz(b3, a3);
hold on;
plot(0:0.01:1, -6*ones(size(0:0.01:1)), ‘r’);
덧 : 그런데 좀더 공부해 보니 단순 이동평균의 4일/2일 주기를 완전히 날려버리는 성질도 좋네요. 리플이 커서 그렇지. 이런 부분은 Elliptic Filter나 Chebyshev Type II 필터 아니면 원하는 스펙으로 디자인한 FIR필터를 사용하여 개선할 수 있습니다.
Recent Comments