Python(パンダ付き)を使用して、インテル(INTC)の日次株価データの20日間指数移動平均(EMA)を計算しようとしていますPandas =これにはさまざまな方法があり、Pandasで実行されるstockstatsも試しましたが、株式/金融のWebサイトから取得したのと同じEMAを返すことはありません。
私は終値を再確認しましたが、それらは一致しますが、EMAは常に「間違った」ものを出します。
これは私が使用しているCSVです: INTC Stock Data
これには、2016年4月20日から2018年2月1日までのIntelの株(ティッカー:INTC)の日次日付、月名、始値、高値、安値、終値、日平均、およびボリュームが含まれます。
MarketWatch や Fidelity のようなより大きな在庫の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日間EMAでany金融サイトは$ 45.65です。また、EMAを計算しようとする日付に関係なく、間違った数値を取得します。 5日間のEMAを試してみるだけでも、間違いです。
この件についてチュートリアルを読んだり、見たり、フォローしたりしましたが、その結果も、金融サイトで見つけた承認済み/公開済みのEMAと一致しません。チュートリアルとビデオを作成している人々は、Pandaが数値を計算した後、それらを互いにチェックすることはありません。そして、私は私の番号が一致する必要があります。
どのようにすれば、インターネット上の他のすべての金融サイトがEMAのために得ている同じ数値に到達できますか?私は古い/確定したデータを使用しており、私の終値と日付はそれらと同じであるため、これは調整された終値とは何の関係もないと思います。
日付が昇順になるように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でした。