- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在编写涉及一些财务计算的代码。尤其是一些指数移动平均线。为了完成这项工作,我尝试了 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()
它们都工作正常,但它们在数组的开头提供不同的结果:
所以有一些参数需要更改为 pandas 的 EWMA 或者这是一个错误,我应该担心吗?
提前致谢
卢卡
最佳答案
对于 talib ema,公式是:
所以在使用pandas的时候,如果你想让pandas ema和talib一样,你应该这样使用:
pandas_ex=self.PriceAdjusted.ewm(span=200,adjust=False,min_periods=200-1).mean()
如果要使用与talib相同的公式,请根据文档(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ewm.html)将adjust设置为False:
When adjust is True (default), weighted averages are calculated using weights (1-alpha)(n-1), (1-alpha)(n-2), ..., 1-alpha, 1.
When adjust is False, weighted averages are calculated recursively as:weighted_average[0] = arg[0]; weighted_average[i] = (1-alpha)weighted_average[i-1] + alphaarg[i].
您也可以引用这里: https://en.wikipedia.org/wiki/Moving_average
PS:但是,在我的项目中,我仍然发现 talib 和 pandas.ewm 之间存在一些小差异,并且还不知道为什么......
关于python - 指数移动平均线 Pandas vs Ta-lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45186262/
我是一名优秀的程序员,十分优秀!