熊猫的指数移动平均值

时间:2020-02-20 03:20:46

标签: python pandas

我有以下数据框:

我正在尝试计算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, 使用该功能的正确方法是什么?

对于我在投资平台上所做的验证,该函数给我的这些值是算术移动平均值的值

enter image description here

1 个答案:

答案 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,
])

四舍五入后哪个似乎与您的预期答案相符。