카테고리 없음

시계열 데이터 전처리_이동평균_SMA/EMA

강블루 2023. 4. 7. 09:22

시계열 데이터는 시간에 따라 변하는 데이터를 말합니다. 시계열 데이터를 분석하기 전에는 일반적으로 시계열 데이터의 전처리를 해야 합니다. 이동평균은 시계열 데이터를 부드러운 추세(trend)와 계절성(seasonality) 성분으로 분해하는데 사용됩니다.

이동평균

이동평균(Moving Average)은 특정 기간 동안의 가격, 거래량, 수익률 등의 평균 값을 구하는 방법입니다. 이동평균의 구간을 크게 하면 추세를 보다 부드럽게 나타내며, 구간을 작게 하면 변동성이 큰 데이터에서 뾰족한 변화를 잘 잡아낼 수 있습니다.
간단하게 SMA를 적용한 예제 코드를 보면 다음과 같습니다.

 

위 코드에서 rolling() 함수는 이동평균을 계산하기 위한 함수입니다.

window 인자는 이동평균을 계산하기 위한 기간을 설정하는데, 위 코드에서는 3을 설정하여 3개의 데이터를 기반으로 이동평균을 계산하도록 했습니다.

EMA (Exponential Moving Average)란?
EMA(Exponential Moving Average)는 이동평균의 일종으로, 최근의 데이터에 높은 가중치를 부여하여 이동평균을 구하는 방법입니다.
EMA는 기존 이동평균 방법에서 발생하는 지연 현상을 최소화할 수 있으며, 주가 추세나 시계열 데이터 분석에서 자주 사용됩니다.
EMA 함수 구현하기

 

위 코드는 1000개의 랜덤 데이터를 생성하고, 이를 EMA 함수를 통해 window 크기가 10인 EMA를 계산하여 원본 데이터와 함께 시각화한 예제입니다.
Pandas Series 데이터에서는 ewm 함수를 통해 EMA를 계산할 수 있습니다. 이때, span 인자를 이용하여 이동평균의 기간을 정해줄 수 있습니다. 예를 들어, span=10으로 설정하면 window 크기가 10인 EMA를 계산할 수 있습니다.
위 코드에서 adjust 인자를 False로 설정해줌으로써, EMA 계산 시 가중치를 공식에 따라 계산합니다. 이를 조절하지 않으면, 처음 데이터에 대한 EMA 값이 정확하게 계산되지 않을 수 있습니다.
시각화 결과를 보면, EMA가 원본 데이터에 비해 더 부드러운 곡선을 보이는 것을 확인할 수 있습니다. 이러한 특성은 시계열 데이터를 예측할 때 노이즈를 줄이고 추세를 더 잘 파악할 수 있게 해줍니다.

 SMA (Simple Moving Average) 함수와의 차이점
EMA 함수와 SMA 함수의 차이점은 가중치입니다. SMA는 이동평균을 구할 때 모든 데이터에 동일한 가중치를 부여하지만, EMA는 과거 데이터에는 감쇠 가중치(decay weight)를 부여하여 최근의 데이터에 높은 가중치를 부여합니다.
EMA는 빠르게 변하는 시장에서의 민감한 반응과, 트렌드를 쉽게 파악할 수 있어 많은 트레이더들이 선호합니다. 반면에, SMA는 EMA보다 매끄러운 추세선을 보여주며, 장기적인 트렌드 파악에 더 용이합니다.

 

아래는 EMA 함수와 SMA 함수의 차이를 보여주는 코드입니다.

 

 

위 코드를 실행하면, 원본 데이터와 이동평균(SMA, EMA) 결과를 비교할 수 있습니다. 보다시피 EMA 함수를 적용한 결과가 보다 빠르게 데이터의 변화를 반영하고 있음을 확인할 수 있습니다.