calculate Exponential Moving Average with pandas

joh*_*ohn 7 python pandas

I try to calculate ema with pandas but the result is not good. I try 2 techniques to calculate :

The first technique is the panda's function ewn:

window = 100
c = 2 / float(window + 1)
df['100ema'] = df['close'].ewm(com=c).mean()
Run Code Online (Sandbox Code Playgroud)

But the last result of this function gives. 2695.4 but the real result is 2656.2

The second technique is

window = 100
c = 2 / float(window + 1)
df['100sma'] = df['close'].rolling(window).mean()
df['100ema'] = (c * df['close']) + ((1 - c) * df['100sma'])
Run Code Online (Sandbox Code Playgroud)

The result is 2649.1 it's closer than first technique but is always not good

The sma function give the good result

** EDIT **

The response is

df['100ema'] = pd.Series.ewm(df['close'], span=window).mean()
Run Code Online (Sandbox Code Playgroud)

小智 5

如果你想用 Python 计算 EWMA 或任何技术指标,我建议使用ta-lib

  • df 是我的数据框,“close”是股票的收盘价。我使用以下指令计算了不同时间段的 ema: >>> df['ema12'] = talib.EMA(df['close'],timeperiod=12) >>> df['ema18'] = talib.EMA(df ['close'],timeperiod=18) >>> df['ema25'] = talib.EMA(df['close'],timeperiod=25) (2认同)