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.  

Warum Python für die Entwicklung einer automatisierten Handelsstrategie verwendet wird1

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) 
  
print(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() 
  
print(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: