2017-07-19 10 views
5

Obecnie jestem w trakcie pisania kodu z pewnymi obliczeniami finansowymi. W szczególności niektóre wykładniczej średniej ruchomej. Aby wykonać zadanie Próbowałem Pandy i Talib:Exponential Moving Average Pandy vs Ta-lib

talib_ex=pd.Series(talib.EMA(self.PriceAdjusted.values,timeperiod=200),self.PriceAdjusted.index) 
pandas_ex=self.PriceAdjusted.ewm(span=200,adjust=True,min_periods=200-1).mean() 

Oboje działają dobrze, ale zapewniają różne wyniki na początku tablicy:

200 day EMA - Talib vs Pandas

Więc jest jakiś parametr zmienić się w EWMA pandy lub jest to błąd i powinienem się martwić?

góry dzięki

Luca

Odpowiedz

3

Dla EMA Talib, formuła brzmi:

Więc podczas korzystania pandy, jeśli chcesz, aby pandy EMA taka sama jak Talib, należy go używać jako:

pandas_ex = self.PriceAdjusted.ewm (span = 200, adjust = False, min_periods = 200-1) .mean()

Ustaw jako Fałsz dostosować zgodnie z dokumentem (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ewm.html), jeśli chcesz korzystać z tego samego wzoru jak Talib:

Kiedy dostosować True (domyślnie), ważone średnie są obliczane przy użyciu wag (1-alpha) (n-1), (1-alfa) (n-2), ..., 1-alfa, 1.

Gdy regulacja jest Fałszywe, ważone średnie są obliczane rekursywnie jako: weighted_average [0] = arg [0]; weighted_average [i] = (1-alpha) weighted_average [i-1] + alpha arg [i].

Można również odwołać się tutaj: https://en.wikipedia.org/wiki/Moving_average

PS: Jednak w moim projekcie, i jeszcze znaleźć kilka drobnych różnic pomiędzy Talib i pandas.ewm i nie wiem jeszcze dlaczego ...