指数移动平均值熊猫与Ta-lib

时间:2017-07-19 09:22:25

标签: python pandas ta-lib

我目前正在撰写涉及一些财务计算的代码。更特别是一些指数移动平均线。为了完成这项工作,我尝试过Pandas和Talib:

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,或者它是一个bug,我应该担心吗?

提前致谢

卢卡

1 个答案:

答案 0 :(得分:4)

对于talib ema,公式为:

所以当使用熊猫时,如果你想让pandas ema和talib一样,你应该将它用作:

pandas_ex = self.PriceAdjusted.ewm(跨度= 200,调整=假下,min_periods = 200-1).mean()

如果您想使用与talib相同的公式,请根据文档(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ewm.html)将adjust设置为False:

  

当adjust为True(默认值)时,使用权重(1-alpha)(n-1),(1-alpha)(n-2),...计算加权平均值, 1-alpha,1。

     

当adjust为False时,递归计算加权平均值:   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:但是,在我的项目中,我仍然发现talib和pandas.ewm之间存在一些细微差别,并且不知道为什么......

相关问题