Hat jemand sonst Probleme mit dem neuen rolling.std()
in Pandas? Die veraltete Methode war rolling_std()
. Die neue Methode läuft gut, erzeugt aber eine konstante Zahl, die nicht mit den Zeitreihen übereinstimmt.Pandas Rolling Standardabweichung
Beispielcode ist unten. Wenn Sie Aktien handeln, können Sie die Formel für Bollinger Bänder erkennen. Die Ausgabe, die ich von rolling.std()
bekomme, verfolgt die Aktie Tag für Tag und ist offensichtlich nicht im Rollen.
Diese in den Pandas 0.19.1. Jede Hilfe wäre willkommen.
import datetime
import pandas as pd
import pandas_datareader.data as web
start = datetime.datetime(2012,1,1)
end = datetime.datetime(2012,12,31)
g = web.DataReader(['AAPL'], 'yahoo', start, end)
stocks = g['Close']
stocks['Date'] = pd.to_datetime(stocks.index)
stocks['AAPL_LO'] = stocks['AAPL'] - stocks['AAPL'].rolling(20).std() * 2
stocks['AAPL_HI'] = stocks['AAPL'] + stocks['AAPL'].rolling(20).std() * 2
stocks.dropna(axis=0, how='any', inplace=True)
können Sie die Ausgabe addieren Sie eigentlich erwartet? –
'stocks ['AAPL']. Rolling (20) .std()' gibt genau die gleiche Ausgabe wie 'pd.rolling_std (Stocks ['AAPL'], window = 20)' ... –
kann ich nicht reproduzieren hier: es klingt, als ob du "stocks ['AAPL'] sagst. rolling (20) .std()' ist konstant, aber ich sehe ein nicht konstantes, zeitlich variierendes Ergebnis. Zum Beispiel, Plotten, sehe ich viel dünnere Bands um die Juli 2012 Marke von denen um April 2012. –