2017-07-19 121 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之间存在一些小的差异,不知道为什么还...