web-dev-qa-db-ja.com

パンダのEMAが株式のEMAと一致していませんか?

Python(パンダ付き)を使用して、インテル(INTC)の日次株価データの20日間指数移動平均(EMA)を計算しようとしていますPandas =これにはさまざまな方法があり、Pandasで実行されるstockstatsも試しましたが、株式/金融のWebサイトから取得したのと同じEMAを返すことはありません。

私は終値を再確認しましたが、それらは一致しますが、EMAは常に「間違った」ものを出します。

これは私が使用しているCSVです: INTC Stock Data

これには、2016年4月20日から2018年2月1日までのIntelの株(ティッカー:INTC)の日次日付、月名、始値、高値、安値、終値、日平均、およびボリュームが含まれます。

MarketWatchFidelity のようなより大きな在庫のWebサイトを見ると、それらの数値は私のものと一致しません。彼らはお互いに一致しますが、私には一致しません。

例えば...

df2['Close'].ewm(span=20,min_periods=0,adjust=False,ignore_na=False).mean()

または...

df2['Close'].ewm(span=20, min_periods=20, adjust=True).mean()

または...

df2["Close"].shift().fillna(df["Close"]).ewm(com=1, adjust=False).mean()

2018年2月1日のEMAを$ 44.71、$ 47.65、$ 46.15などのように実際の20日間EMAany金融サイトは$ 45.65です。また、EMAを計算しようとする日付に関係なく、間違った数値を取得します。 5日間のEMAを試してみるだけでも、間違いです。

この件についてチュートリアルを読んだり、見たり、フォローしたりしましたが、その結果も、金融サイトで見つけた承認済み/公開済みのEMAと一致しません。チュートリアルとビデオを作成している人々は、Pandaが数値を計算した後、それらを互いにチェックすることはありません。そして、私は私の番号が一致する必要があります。

どのようにすれば、インターネット上の他のすべての金融サイトがEMAのために得ている同じ数値に到達できますか?私は古い/確定したデータを使用しており、私の終値と日付はそれらと同じであるため、これは調整された終値とは何の関係もないと思います。

8
Rob M

日付が昇順になるようにDataFrameを並べ替えます。データは日付順に降順であるため、最初に日付を並べ替えない場合、ewmの計算ではearliestが指数関数的に重み付けされます最新の日付ではなく、最も古い日付(あるはずです)。

import pandas as pd

df = pd.read_csv('intc_data.txt', parse_dates=['Date'], index_col=['Date'])
df['backward_ewm'] = df['Close'].ewm(span=20,min_periods=0,adjust=False,ignore_na=False).mean()
df = df.sort_index()
df['ewm'] = df['Close'].ewm(span=20,min_periods=0,adjust=False,ignore_na=False).mean()
print(df[['ewm', 'backward_ewm']].tail())

収量

                  ewm  backward_ewm
Date                               
2018-01-26  45.370936     48.205638
2018-01-29  45.809895     48.008337
2018-01-30  46.093714     47.800794
2018-01-31  46.288599     47.696667
2018-02-01  46.418256     47.650000

これは Marketwatch と一致し、2018-02-01のEWMA(20)は46.42でした。

enter image description here

18
unutbu