Automatisierter Handel mit Python
Die Verwendung von Python beschleunigt den Handelsprozess und wird daher auch als automatisierter Handel / quantitativer Handel bezeichnet. Die Verwendung von Python wird seinen hochfunktionellen Bibliotheken wie TA-Lib, Zipline, Scipy, Pyplot, Matplotlib, NumPy, Pandas usw. zugeschrieben. Das Erkunden der vorliegenden Daten wird als Datenanalyse bezeichnet. Beginnend mit Python. Wir werden zunächst lernen, Daten mit der Quandl-API zu extrahieren.
Die Verwendung früherer Daten wird unser Schlüssel zur Backtesting-Strategie sein. Wie eine Strategie unter bestimmten Umständen funktioniert, kann nur anhand historischer Daten verstanden werden. Wir verwenden historische Daten, da sich die Trends an den Aktienmärkten im Laufe der Zeit wiederholen.
Arbeitsumgebung einrichten
Der einfachste Weg, um loszulegen, ist die Installation von Anaconda. Anaconda ist eine Distribution von Python und bietet verschiedene IDEs wie Spyder, Jupyter, __, ___ usw.
Quandl installieren
Quandl hilft uns beim Abrufen der historischen Daten des Bestands. Um quandl zu deinstallieren, geben Sie den folgenden Befehl in das Terminal ein -
pip install quandl
Hinweis: Das Quandl Python-Modul ist kostenlos, Sie benötigen jedoch einen Quandl-API-Schlüssel, um Daten herunterladen zu können. Um Ihren eigenen API-Schlüssel zu erhalten, müssen Sie ein kostenloses Quandl-Konto erstellen und Ihren API-Schlüssel festlegen.
Pakete importieren
Sobald Quandl installiert ist, besteht der nächste Schritt darin, Pakete zu importieren. Wir werden Pandas in diesem Tutorial konsequent einsetzen, da das Backtesting viele Datenmanipulationen erfordert.
Pandas als pd importieren importiere quandl als qd
Nachdem die Pakete importiert wurden, extrahieren wir Daten aus Quandl mithilfe des API-Schlüssels.
qd.ApiConfig.api_key = "<API-Schlüssel>"
Daten mit Quandl extrahieren
import
pandas as pd
import
quandl as qd
qd.ApiConfig.api_key
=
"API KEY"
msft_data
=
qd.get(
"EOD/MSFT"
,
start_date
=
"2010-01-01"
,
end_date
=
"2020-01-01"
)
msft_data.head()
Ausgabe:
Mit dem obigen Code werden die Daten der MSFT-Bestände vom 1. Januar 2010 bis zum 1. Januar 2020 extrahiert. Data.head() zeigt die ersten 5 Zeilen der Daten an.
Wichtige Terminologie: Man sollte verstehen, was die Daten darstellen und darstellen.
- Öffnen / Schließen - Der Eröffnungs- und Schlusskurs der Aktie.
- Hoch / Niedrig - Der höchste und niedrigste Preis, den die Aktie an einem bestimmten Tag erreicht hat.
- Adj_High / Adj_Close - Die Auswirkungen der gegenwärtigen Dividendenausschüttung, Aktiensplits oder anderer Kapitalmaßnahmen auf die historischen Daten.
Rendite berechnen
Die Rendite ist einfach der Gewinn oder Verlust, den die Aktie erzielt, nachdem der Händler / Investor Long- oder Short-Positionen genutzt hat. Wir benutzen einfach die Funktion pct_change()
import
numpy as np
close_price
=
msft_data[[
'Adj_Close'
]]
daily_return
=
close_price.pct_change()
daily_return.fillna(
0
, inplace
=
True
)
(daily_return)
Ausgabe:
Adj_Close Datum 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0,000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0,000117 [1090 Zeilen x 1 Spalten]
Formel für die tägliche Rückgabe = (Preis zu 't' - Preis zu 1) / Preis zu 1 (Preis zu einem bestimmten Zeitpunkt 't' - Eröffnungspreis) / Eröffnungspreis
Gleitende Mittelwerte
Das Konzept der gleitenden Durchschnitte wird den Grundstein für unsere auf Momentum basierende Handelsstrategie legen. Für die Finanzen müssen Analysten außerdem ständig statistische Kennzahlen über einen gleitenden Zeitraum testen, der als Berechnung des Bewegungszeitraums bezeichnet wird. Lassen Sie uns sehen, wie der rollierende Mittelwert über ein 50-Tage-Fenster berechnet werden kann, und das Fenster um 1 Tag verschieben.
adj_price
=
msft_data[
'Adj_Close'
]
mav
=
adj_price.rolling(window
=
50
).mean()
(mav[
-
10
:])
Datum 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, Typ: float64
Gleitende Durchschnitte helfen dabei, Datenanomalien oder -spitzen auszugleichen, und bieten Ihnen eine glattere Kurve für die Unternehmensergebnisse.
Zeichnen und sehen Sie den Unterschied:
import
matplotlib.pyplot as plt
adj_price.plot()
Ausgabe:
Beachten Sie den Unterschied:
mav.plot()
Ausgabe:
Zusammen planen:
import
matplotlib.pyplot as plt
adj_price.plot()
mav.plot()
Ausgabe: