我有以下数据框:
我正在尝试计算13个周期的指数移动平均值,但结果根本不匹配,我正在使用以下代码尝试获取结果:
stockdata['sma'] = stockdata['close'].rolling(window = 13, min_periods=13).mean()
stockdata['ema'] = stockdata['close'].ewm(span=13, adjust=False).mean()
简单介质运行良好,只有指数移动介质没有提供正确的值
移动平均值的计算在“关闭”列中完成
ativo close sma ema
0 PETR4 28.18 NaN 28.180000
1 PETR4 28.63 NaN 28.244286
2 PETR4 28.39 NaN 28.265102
3 PETR4 29.18 NaN 28.395802
4 PETR4 28.93 NaN 28.472116
5 PETR4 29.13 NaN 28.566099
6 PETR4 29.48 NaN 28.696656
7 PETR4 30.13 NaN 28.901420
8 PETR4 29.72 NaN 29.018360
9 PETR4 29.42 NaN 29.075737
10 PETR4 29.36 NaN 29.116346
11 PETR4 29.75 NaN 29.206868
12 PETR4 30.55 29.296154 29.398744
在数据框中,最旧的数据位于顶部,而最新的数据位于下面
13的指数移动平均值的正确值应为29.53, 使用该功能的正确方法是什么?
对于我在投资平台上所做的验证,该函数给我的这些值是算术移动平均值的值
答案 0 :(得分:1)
问题是,您假设跨度为13的EMA仅查看最后13个数据点,而 ...并非如此,它看起来会超过该日期,只需对过去的数据点使用较小的权重...
如果您使用PETR4的收盘价的最后一个月并采用其13天EMA,您将获得预期的结果:
flush.size
并且:
closing_price = pd.Series([
30.00, 29.62, 29.29, 29.65, 29.30,
28.03, 28.80, 28.85, 28.94, 28.45,
28.18, 28.63, 28.39, 29.18, 28.93,
29.13, 29.48, 30.13, 29.72, 29.42,
29.36, 29.75, 30.55,
])
四舍五入后哪个似乎与您的预期答案相符。