0
我习惯于指数移动平均线(EMA)正在计算following方式:使用熊猫和EWMA
SMA: 10 period sum/10
Multiplier: (2/(Time periods + 1)) = (2/(10 + 1)) = 0.1818 (18.18%)
EMA: {Close - EMA(previous day)} x multiplier + EMA(previous day).
然而,当我运行pd.ewma(df['Close'])
我没有看到这种方法相匹配的输出。
下面的代码给了我期待的答案,但需要更长的时间才能运行。
任何人都有什么指示什么是正确的方式来利用这个库给我输出我期待?
import pandas.io.data as web
import datetime
import pandas as pd
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime.today()
f = web.DataReader("SPY", 'yahoo', start, end)
f['sma']=pd.rolling_mean(f['Adj Close'],10)
days=10.
alpha=(2./(days+1.))
d={}
for x in f[(f['sma']>0)].index:
if len(d)==0:
d[x] = f[(f.index==x)]['sma'].values[0]
else:
d[x] = (f[(f.index==x)]['Adj Close'].values[0] - d[dt_prior])*alpha + d[dt_prior]
dt_prior = x
pd.Series(d)
你的代码似乎是从一个不断更新的Web服务中读取数据。你能提供一些最小的,可重复的例子,预期的结果和实际结果? – Mephy