Rolling and Expanding Windows For Dummies

Im heutigen Artikel werden wir einen Blick auf Rolling and expanding Windows werfen.

Am Ende des Beitrags können Sie diese Fragen beantworten:

  • Was ist ein rollendes Fenster?
  • Was ist ein expandierendes Fenster?
  • Warum sind sie nützlich?

Was ist ein rollendes oder expandierendes Fenster?

Hier ist ein normales Fenster.

Wir verwenden normale Fenster, weil wir einen Blick nach außen werfen wollen, je größer das Fenster, desto mehr von außen bekommen wir zu sehen.

Auch als allgemeine Faustregel gilt: Je größer die Fenster eines Hauses, desto besser war sein Aktienportfolio …

Genau wie echte Fenster bieten uns Datenfenster auch einen kleinen Einblick in etwas Größeres.

Ein sich bewegendes Fenster ermöglicht es uns, eine Teilmenge unserer Daten zu untersuchen.

Rolling Windows

Oft möchten wir eine statistische Eigenschaft unserer Zeitreihendaten kennen, aber da alle Zeitmaschinen in Roswell gesperrt sind, können wir keine Statistik über die gesamte Stichprobe berechnen und diese verwenden, um Einblicke zu gewinnen.

Das würde zu einer Voreingenommenheit in unserer Forschung führen.

Hier ist ein extremes Beispiel dafür. Hier haben wir den TSLA-Preis und seinen Mittelwert über die Vollstichprobe aufgetragen.

import pandas as pdimport matplotlib.pyplot as plt #Load TSLA OHLC df = pd.read_csv('TSLA.csv')#Calculate full sample meanfull_sample_mean = df.mean()#Plotplt.plot(df,label='TSLA')plt.axhline(full_sample_mean,linestyle='--',color='red',label='Full Sample Mean')plt.legend()plt.show()

Wenn wir in diesem Fall TSLA nur gekauft hätten, als der Preis unter dem Mittelwert lag, und es über dem Mittelwert verkauft hätten, hätten wir zumindest bis 2019 einen Mord begangen …

Aber das Problem ist, dass wir den Mittelwert zu diesem Zeitpunkt nicht gekannt hätten.

Es ist also ziemlich offensichtlich, warum wir nicht das gesamte Sample verwenden können, aber was können wir dann tun? Eine Möglichkeit, dieses Problem anzugehen, besteht darin, rollierende oder expandierende Fenster zu verwenden.

Wenn Sie jemals einen einfachen gleitenden Durchschnitt verwendet haben, dann herzlichen Glückwunsch – Sie haben ein rollendes Fenster verwendet.

Wie funktionieren rollierende Fenster?

Angenommen, Sie haben 20 Tage Bestandsdaten und möchten den Durchschnittspreis der Aktie für die letzten 5 Tage kennen. Was machen Sie?

Du nimmst die letzten 5 Tage, summierst sie und dividierst durch 5.

Aber was ist, wenn Sie den Durchschnitt der letzten 5 Tage für jeden Tag in Ihrem Datensatz wissen möchten?

Hier kann Rolling Windows helfen.

In diesem Fall hätte unser Fenster eine Größe von 5, was bedeutet, dass es für jeden Zeitpunkt den Mittelwert der letzten 5 Datenpunkte enthält.

Lassen Sie uns ein Beispiel mit einem sich bewegenden Fenster der Größe 5 Schritt für Schritt visualisieren.

#Random stock pricesdata = #Create pandas DataFrame from listdf = pd.DataFrame(data,columns=)#Calculate a 5 period simple moving averagesma5 = df.rolling(window=5).mean()#Plotplt.plot(df,label='Stock Data')plt.plot(sma5,label='SMA',color='red')plt.legend()plt.show()

Lassen Sie uns diese Tabelle aufschlüsseln.

  • Wir haben 20 Tage Aktienkurse in diesem Diagramm, beschriftet mit Aktiendaten.
  • Für jeden Zeitpunkt (der blaue Punkt) wollen wir wissen, was der 5-Tage-Durchschnittspreis ist.
  • Die für die Berechnung verwendeten Bestandsdaten sind der Abstand zwischen den 2 blauen vertikalen Linien.
  • Nachdem wir den Mittelwert von 0-5 berechnet haben, wird unser Mittelwert für Tag 5 verfügbar.
  • Um den Mittelwert für Tag 6 zu erhalten, müssen wir das Fenster um 1 verschieben, so dass das Datenfenster 1-6 wird.

Und das ist, was als rollendes Fenster bekannt ist, die Größe des Fensters ist festgelegt. Alles, was wir tun, ist es vorwärts zu rollen.

Wie Sie wahrscheinlich bemerkt haben, haben wir keine SMA-Werte für die Punkte 0-4. Dies liegt daran, dass für unsere Fenstergröße (auch als Lookback-Periode bezeichnet) mindestens 5 Datenpunkte für die Berechnung erforderlich sind.

Expandierende Fenster

Wo rollierende Fenster eine feste Größe haben, haben expandierende Fenster einen festen Startpunkt und integrieren neue Daten, sobald sie verfügbar sind.

So denke ich gerne darüber nach:

„Was ist der Mittelwert der vergangenen n Werte zu diesem Zeitpunkt?“ – Verwenden Sie hier rollende Fenster.

„Was ist der Mittelwert aller bis zu diesem Zeitpunkt verfügbaren Daten?“ – Verwenden Sie hier expandierende Fenster.

Expandierende Fenster haben eine feste untere Grenze. Nur die obere Grenze des Fensters wird nach vorne gerollt (das Fenster wird größer).

Visualisieren wir ein expandierendes Fenster mit den gleichen Daten aus dem vorherigen Plot.

#Random stock prices data = #Create pandas DataFrame from list df = pd.DataFrame(data,columns=) #Calculate expanding window meanexpanding_mean = df.expanding(min_periods=1).mean()#Calculate full sample mean for referencefull_sample_mean = df.mean()#Plot plt.plot(df,label='Stock Data') plt.plot(expanding_mean,label='Expanding Mean',color='red')plt.axhline(full_sample_mean,label='Full Sample Mean',linestyle='--',color='red')plt.legend()plt.show()

Sie können sehen, dass die SMA am Anfang etwas nervös ist. Das liegt daran, dass wir am Anfang des Diagramms eine kleinere Anzahl von Datenpunkten haben und wenn wir mehr Daten erhalten, wird das Fenster erweitert, bis schließlich der expandierende Fenstermittelwert zum vollständigen Stichprobenmittelwert konvergiert, da das Fenster die Größe des gesamten Datensatzes erreicht hat.

Zusammenfassung

Es ist wichtig, keine Daten aus der Zukunft zu verwenden, um die Vergangenheit zu analysieren. Rollierende und expandierende Fenster sind wichtige Werkzeuge, um „Ihre Daten vorwärts zu bringen“, um diese Probleme zu vermeiden.

Wenn Ihnen das gefallen hat, werden Sie diese wahrscheinlich auch mögen …

Finanzdatenmanipulation in dplyr für Quant-Händler

Verwendung der digitalen Signalverarbeitung in quantitativen Handelsstrategien

Backtesting-Bias: Fühlt sich gut an, bis Sie in die Luft jagen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.