Wir werden ein End-to-End-Projekt mit Support Vector Machines implementieren, um den Handel für uns zu leben. Wahrscheinlich haben Sie schon einmal von dem Begriff Aktienmarkt gehört, von dem bekannt ist, dass er das Leben von Tausenden gemacht und das Leben von Millionen zerstört hat. Wenn Sie mit der Börse nicht vertraut sind, können Sie einige grundlegende Dinge über Märkte surfen.

Verwendete Tools und Technologien: 

  • Python
  • Sklearn- Support Vector Classifier
  • Yahoo Finanzen
  • Jupyter-Notebook
  • Blauverschiebung

Schritt für Schritt Umsetzung

Schritt 1: Importieren Sie die Bibliotheken

Python3

# Machine learning
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
  
# For data manipulation
import pandas as pd
import numpy as np
  
# To plot
import matplotlib.pyplot as plt
plt.style.use('seaborn-darkgrid')
  
# To ignore warnings
import warnings
warnings.filterwarnings("ignore")

Schritt 2: Bestandsdaten lesen

Wir werden die von der Yahoo Finance-Website heruntergeladenen Aktiendaten lesen. Die Daten werden im OHLC-Format (Open, High, Low, Close) in einer CSV-Datei gespeichert. Um eine CSV-Datei zu lesen, können Sie die Methode read_csv() von Pandas verwenden.

Syntax : 

pd.read_csv(filename, index_col)

Hinweis: Wir haben die Daten der letzten 1 Jahr von Reliance Industries Trading In NSE von der Yahoo Finance Website heruntergeladen.

Verwendete Datei:

Python3

# Read the csv file using read_csv 
# method of pandas
df = pd.read_csv('RELIANCE.csv')
df

Ausgabe:

Schritt 3: Datenaufbereitung 

Die Daten mussten vor der Verwendung verarbeitet werden, sodass die Datumsspalte als Index dafür dienen sollte 

Python3

# Changes The Date column as index columns
df.index = pd.to_datetime(df['Date'])
df
  
# drop The original date column
df = df.drop(['Date'], axis='columns')
df

Ausgabe:

Schritt 4: Definieren Sie die erklärenden Variablen

Erklärende oder unabhängige Variablen werden verwendet, um die Wertantwortvariable vorherzusagen. Das X ist ein Datensatz, der die Variablen enthält, die für die Vorhersage verwendet werden. Das X besteht aus Variablen wie „Open – Close“ und „High – Low“. Diese können als Indikatoren verstanden werden, anhand derer der Algorithmus den Trend von morgen vorhersagt. Fühlen Sie sich frei, weitere Indikatoren hinzuzufügen und die Leistung zu sehen

Python3

# Create predictor variables
df['Open-Close'] = df.Open - df.Close
df['High-Low'] = df.High - df.Low
  
# Store all predictor variables in a variable X
X = df[['Open-Close', 'High-Low']]
X.head()

Ausgabe:

Schritt 5: Definieren Sie die Zielvariable

Die Zielvariable ist das Ergebnis, das das maschinelle Lernmodell basierend auf den erklärenden Variablen vorhersagt. y ist ein Zieldatensatz, der das richtige Handelssignal speichert, das der maschinelle Lernalgorithmus vorherzusagen versucht. Wenn der Kurs von morgen höher ist als der Kurs von heute, dann kaufen wir die betreffende Aktie, andernfalls haben wir keine Position in der Aktie. Wir speichern +1 für ein Kaufsignal und 0 für eine Nein-Position in y. Dazu verwenden wir die Funktion where() von NumPy.

Syntax:

np.where(condition,value_if_true,value_if_false)

Python3

# Target variables
y = np.where(df['Close'].shift(-1) > df['Close'], 1, 0)
y

Ausgabe:

Schritt 6: Teilen Sie die Daten in Trainieren und Testen auf

Wir teilen die Daten in Trainings- und Testdatensätze auf. Dies geschieht, damit wir die Effektivität des Modells im Testdatensatz bewerten können

Python3

split_percentage = 0.8
split = int(split_percentage*len(df))
  
# Train data set
X_train = X[:split]
y_train = y[:split]
  
# Test data set
X_test = X[split:]
y_test = y[split:]

Schritt 7: Support Vector Classifier (SVC)

Wir verwenden die SVC()-Funktion aus der sklearn.svm.SVC- Bibliothek, um unser Klassifikatormodell mit der fit()-Methode für den Trainingsdatensatz zu erstellen.

Python3

# Support vector classifier
cls = SVC().fit(X_train, y_train)

Schritt 8: Genauigkeit des Klassifikators

Wir werden die Genauigkeit des Algorithmus im Zug berechnen und den Datensatz testen, indem wir die tatsächlichen Werte des Signals mit den vorhergesagten Werten des Signals vergleichen. Die Funktion precision_score() wird verwendet, um die Genauigkeit zu berechnen.

Eine Genauigkeit von über 50 % der Testdaten deutet darauf hin, dass das Klassifikatormodell effektiv ist.

Schritt 9: Strategieumsetzung

Wir werden das Signal (Kauf oder Verkauf) mit der Funktion cls.predict() vorhersagen.

Python3

df['Predicted_Signal'] = cls.predict(X)

Berechnen Sie die tägliche Rendite 

Python3

# Calculate daily returns
df['Return'] = df.Close.pct_change()

Berechnen Sie Strategierenditen

Python3

# Calculate strategy returns
df['Strategy_Return'] = df.Return *df.Predicted_Signal.shift(1)

Kumulative Renditen berechnen

Python3

# Calculate Cumulutive returns
df['Cum_Ret'] = df['Return'].cumsum()
df

Berechnen Sie die kumulierten Renditen der Strategie

Python3

# Plot Strategy Cumulative returns 
df['Cum_Strategy'] = df['Strategy_Return'].cumsum()
df

Zeichnen Sie die Renditen der Strategie im Vergleich zu den ursprünglichen Renditen

Python3

import matplotlib.pyplot as plt
%matplotlib inline
  
plt.plot(Df['Cum_Ret'],color='red')
plt.plot(Df['Cum_Strategy'],color='blue')

Ausgabe:

Wie Sie sehen können, scheint unsere Strategie die Performance der Reliance-Aktie vollständig zu übertreffen. Unsere Strategie (blaue Linie) lieferte im letzten Jahr eine Rendite von 18,87 % , während die Aktie von Reliance Industries (rote Linie) im letzten Jahr nur eine Rendite von 5,97 % lieferte  .

Backtesting-Ergebnis

1. TKS

Stock Return Over Last 1 year -  48%
Strategy result - 48.9 %

2. ICICI-BANK

Stock Return Over Last 1 year -  48%
Strategy result - 48.9 %

           

Bereitstellung einer Strategie für den Live-Markt

Die codierte Strategie kann einfach auf dem Live-Markt eingesetzt werden und kann auch an einer beliebigen Anzahl von Daten an allen Börsen rückgetestet werden. Die Bereitstellung kann einfach über die BlueShift-Plattform erfolgen. Es ist eine interaktive Plattform mit Live-Daten-Feed und Verbindungen über verschiedene Broker. Sie können Backtests auf der BlueShift-Plattform beliebig oft mit Daten von verschiedenen Börsen durchführen. 

Fazit 

  • Der Strategieanbieter verspricht Renditen während des Live-Marktes. Derzeit habe ich das Modell nur auf der Grundlage der Niveaus des Vortages trainiert, aber um die Genauigkeit des Modells zu erhöhen, fügen wir auch verschiedene technische Indikatoren zum Trainieren des Modells hinzu, wie RSI, ADX, ATR, MACD, Stochastik und viele mehr. 
  • Um mehr Genauigkeit auf dem Live-Markt zu erzielen Deep Learning hat sich beim Handel auf einem Live-Markt als sehr effektiv erwiesen. Wir können unsere Trades automatisieren, indem wir Reinforcement Learning und auch Stacked LSTM verwenden, was zu einem exponentiellen Anstieg unserer Strategierenditen führt.

Hinweis: Echtes Geld sollte nicht eingesetzt werden, bis das Backtesting der Strategie abgeschlossen ist und ohne vielversprechende Renditen durch die Strategie während des Papierhandels