[python] 지수가중함수-EWM

[python] 지수가중함수-EWM updated_at: 2024-01-18 17:12

지수가중함수 (ewm)

DataFrame.ewm(com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=0, times=None, method='single')
ewm 은 지수가중함수 입니다. 지수가중함수는 오래된 데이터에 지수감쇠를 적용하여 최근 데이터가 더 큰 영향을 끼지도록 가중치를 주는 함수입니다.
보통 추가 메서드로 mean() 을 사용해서 지수가중평균으로 사용합니다.

인자값

기본적으로 가중치를 결정하는 요소는 alpha 로 표기되는 평활계수(감쇠계수) 입니다. com / span / halflife를 통해 자동 계산하도록 하거나, alpha를 통해 직접 설정할 수 있습니다.

  • com

질량중심 값으로 평활계수를 계산합니다. [ a = 1(1+com) ]

  • span

계산 기간으로 평활계수를 계산합니다. [ a = 2/(span+1) ]

  • halflife

반감기를 이용하여 평활계수를 계산합니다. [ a= e^(-ln(2) / halflife) ]

  • alpha

평활계수를 직접 입력합니다. [ 0 < a ≤ 1 ]

  • min_periods

계산을위한 최소 기간입니다.

  • adjust

상대적 가중치의 불균형을 해소하기위해 조정계수로 나눌지의 여부입니다. 대체로 값이 많을수록 adjust를 하는것이 유리합니다.

  • ignore_na

가중치를 계산할때 누락값을 무시할지 여부 입니다.

  • axis

계산을 수행할 축 입니다.

  • times

관찰에 해당하는 시간입니다. 단조증가 형태의 datetime64[ns] 형태여야합니다.

  • method

{single / table} 한 줄씩 계산할지(기본값) 아니면 numba engine을 사용해서 table단위로 계산할지 정할 수 있습니다.
numba 라이브러리를 import 해야하며 사용시 ewm(method='table').mean(engine='numba') 처럼 추가 메서드에 engine 설정을 해줘야합니다.

예제

macd (주식보조지표) 구하기

fast = 12
slow = 26
signal = 9
df = pd.DataFrame(rs) # rs는 database로 부터 가져온 값
fast = df['close'].ewm(span=fast, min_periods=fast - 1, adjust=True).mean()
slow = df['close'].ewm(span=slow, min_periods=slow - 1, adjust=True).mean()
macd = fast - slow
signal = macd.ewm(span=signal, adjust=False).mean()
diff = macd - signal
df = df.assign(fast=fast, slow=slow, macd=macd, signal=signal, diff=diff).dropna()
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글