2017-07-19 61 views
5

我目前正在編寫涉及一些財務計算的代碼。更特別的是一些指數移動平均線。要做到我試圖大熊貓和塔里布工作:指數移動平均熊貓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() 

他們都做工精細,但它們提供了在陣列的開頭不同的結果:

200 day EMA - Talib vs Pandas

因此,有一些參數更改爲熊貓的EWMA或它是一個錯誤,我應該擔心?

在此先感謝

盧卡

回答

3

對於塔里布EMA,計算公式爲:

因此,使用熊貓的時候,如果你想使EMA一樣大熊貓talib,您應該將其用作:

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

請根據您是否要使用相同的公式爲塔里布文檔(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ewm.html)將調整爲假:

當調整爲True( (1-α)(n-1),(1-alpha)(n-2),...,1-alpha,1

當調整爲假,加權平均值遞歸地計算爲: weighted_average [0] = arg [0]; weighted_average [i] =(1-alpha)weighted_average [i-1] + alpha arg [i]。

您也可以參考這裏: https://en.wikipedia.org/wiki/Moving_average

PS:不過,在我的項目,我仍然發現塔里布和pandas.ewm之間存在一些小的差異,不知道爲什麼還...