Aktienmarktprognosen sind eine ebenso faszinierende wie komplexe Aufgabe, die Forscher und Anleger seit Jahrzenten gleichermaßen beschäftigt. Der Aktienmarkt wird jedoch von unzähligen Faktoren beeinflusst, was die Lösung dieses Problems zu einer Herausforderung macht.
In jüngster Zeit haben maschinelles Lernen und insbesondere Modelle des Langzeitgedächtnisses (Long Short-Term Memory, LSTM) vielversprechende Ergebnisse in diesem Bereich erzielt.
Was sind LSTM-Modelle?
LSTM-Modelle sind eine Art von rekurrenten neuronalen Netzen (RNN), die in der Lage sind, langfristige Abhängigkeiten zu erlernen, wodurch sie sich besonders für Zeitreihenprognosen wie Börsenvorhersagen eignen.
Im Gegensatz zu herkömmlichen RNNs, die unter der Problematik des verschwindenden Gradienten leiden, haben LSTM-Modelle eine besondere Architektur, die eine Speicherzelle und drei Gateways umfasst:
- das Input-Gate
- das Forget-Gate
- das Output-Gate
Dank dieser Struktur können sie sich Informationen über lange Zeiträume hinweg speichern und entscheiden, was sie festhalten oder verwerfen wollen, was sie für Aufgaben mit zeitlichen Abhängigkeiten, wie z. B. die Vorhersage von Aktienkursen, besonders geeignet macht.
Datenerfassung für LSTM-Modelle
Der erste Schritt bei jedem datengesteuerten Projekt, auch bei Aktienmarktprognosen, ist die Erhebung der erforderlichen Daten. In unserem Fall benötigen wir historische Aktienkurse, die aus verschiedenen Quellen bezogen werden können. Zwei der beliebtesten Quellen sind Yahoo Finance und Kaggle.
Yahoo Finance bietet eine Fülle von Informationen über verschiedene Aktien, einschließlich ihrer historischen Kurse. Um auf diese Daten programmatisch zuzugreifen, kann man Python-Bibliotheken wie yFinance verwenden.
yFinance wurde entwickelt, um historische Marktdaten von Yahoo Finance herunterzuladen, und ist einfach zu bedienen. Um etwa die täglichen Eröffnungs- und Schlusskurse einer bestimmten Aktie über einen bestimmten Zeitraum herunterzuladen, muss man die Download-Funktion verwenden und das Tickersymbol der Aktie, das Start- und Enddatum sowie die Häufigkeit der Daten (z.B. täglich) angeben.
Kaggle ist eine weitere gute Datenquelle für Aktienmarktprognosen. Dort finden sich zahlreiche von Benutzern hochgeladene Datensätze, darunter historische Aktienkurse für verschiedene Unternehmen. Diese Datensätze können manuell von der Website heruntergeladen oder programmatisch über die Kaggle-API abgerufen werden.
Bei der Datenerfassung ist es wichtig, den Zeitraum zu berücksichtigen, für den man Daten benötigt. Je mehr historische Daten vorhanden sind, desto mehr Informationen stehen dem Modell zur Verfügung, aus denen es lernen kann.
Mehr Daten bedeuten jedoch auch längere Trainingszeiten für das Modell. Zudem muss sichergestellt werden, dass die Daten sowohl Zeiten mit steigenden als auch mit fallenden Märkten umfassen, damit das Modell lernt, mit unterschiedlichen Marktbedingungen umzugehen.
Datenanalyse
Nachdem wir unsere Daten haben, besteht der nächste Schritt darin, sie zu untersuchen, um ihre Struktur und die wichtigsten Merkmale zu verstehen, die im Modell verwendet werden sollen.
Dieser Schritt, der häufig als explorative Datenanalyse (EDA) bezeichnet wird, ist von entscheidender Bedeutung, denn auf diese Weise hilft er uns, Einblicke in die Daten zu gewinnen und die nächsten Schritte der Vorverarbeitung und Modellerstellung zu planen.
Bei der Prognose von Aktienkursen konzentrieren wir uns in der Regel auf Merkmale wie:
- Eröffnungs- und Schlusskurse
- Höchst- und Tiefstkurse
- das Handelsvolumen
Der Eröffnungskurs ist der Preis, zu dem eine Aktie bei Markteröffnung gehandelt wird, während der Schlusskurs der Preis ist, zu dem der Markt geschlossen wird.
Der Höchst- und der Tiefstkurs sind die Höchst- und Tiefstkurse, zu denen die Aktie im Laufe des Tages gehandelt wurde, und das Handelsvolumen gibt die Anzahl der gehandelten Aktien an.
Visualisierungen spielen in der EDA eine entscheidende Rolle. Mit Hilfe von Liniendiagrammen können etwa die Trends der Eröffnungs- und Schlusskurse im Zeitverlauf dargestellt werden. Das kann dir helfen zu verstehen, ob die Aktie im Durchschnitt steigt, sinkt oder gleich bleibt.
Histogramme hingegen können dir helfen, die Verteilung der verschiedenen Merkmale zu verstehen. So lässt sich beispielsweise feststellen, dass das Volumen einer Aktie in der Regel innerhalb einer bestimmten Spanne liegt, aber gelegentlich aufgrund bedeutender Marktereignisse in die Höhe schießt.
Es ist nicht nur sinnvoll, einzelne Merkmale zu visualisieren, sondern auch die Beziehungen zwischen den verschiedenen Merkmalen zu untersuchen. Mit Hilfe von Streudiagrammen lässt sich unter anderem das Verhältnis zwischen Eröffnungs- und Schlusskursen darstellen, was uns einen umfassenden Einblick in die Volatilität der Aktie geben kann.
Verarbeitung von Daten
Die Vorverarbeitung der Daten ist ein entscheidender Schritt in jedem Projekt des maschinellen Lernens, einschließlich der Prognose des Kursverlaufs mit LSTM-Modellen. Es geht um die Umwandlung von Rohdaten in ein für das Modell verständliches Format.
Ein gängiger Vorverarbeitungsschritt ist die Skalierung der Daten. Diese ist wichtig, da Merkmale mit größeren Skalen den Lernprozess dominieren können, was zu einer suboptimalen Entwicklung führt.
Wenn wir beispielsweise zwei Merkmale haben, von denen das eine von 0 bis 1 und das andere von 1 bis 1000 reicht, könnte sich das Modell aufgrund seiner größeren Skala mehr auf das letztere Merkmal konzentrieren. Dies gilt selbst dann, wenn das erstere Merkmal für die Prognose-Aufgabe wichtiger ist.
MinMaxScaler ist eine beliebte Technik zur Skalierung von Daten. Es wandelt die Daten so um, dass alle Merkmale in einen bestimmten Bereich fallen, in der Regel 0 bis 1.
Dazu wird der Minimalwert jedes Merkmals subtrahiert und anschließend durch den Bereich dieses Merkmals dividiert. Auf diese Weise wird sichergestellt, dass alle Merkmale eine ähnliche Skala haben und dass kein einzelnes Merkmal den Lernprozess dominiert.
Ein weiterer wichtiger Vorverarbeitungsschritt ist die Aufteilung der Daten in Trainings- und Testsätze. Der Trainingsdatensatz wird zum Trainieren des Modells verwendet, während der Testdatensatz zur Bewertung der Entwicklung des Modells herangezogen wird.
Dieser Schritt macht es möglich, zu beurteilen, wie gut die Entwicklung des Modells bei unbekannten Daten verlaufen wird. Üblich ist eine Aufteilung von 80 % der Daten für das Training und 20 % für die Tests, aber die genaue Aufteilung kann je nach Größe und Eigenschaften des Datensatzes variieren.
Konstruktion des LSTM-Modells
Die Architektur des LSTM-Modells für die Prognose des Kursverlaufs umfasst in der Regel eine oder mehrere LSTM-Ebenen, gefolgt von einer Dropout-Ebene zur Regularisierung.
Die LSTM-Ebenen sind das Herzstück des Modells. Sie sind in der Lage, langfristige Abhängigkeiten in den Daten zu erlernen, was für Aufgaben der Zeitreihenprognose wie die Aktienmarktvorhersage entscheidend ist.
Die Dropout-Ebene wird für die Regularisierung verwendet, eine Technik, die eine Überanpassung verhindern soll. Eine Überanpassung liegt vor, wenn das Modell die Trainingsdaten zu gut erlernt, so dass es bei ungesehenen Daten eine schlechte Entwicklung nimmt.
Die Dropout-Ebene setzt bei jeder Aktualisierung während der Trainingszeit einen Teil der Eingabeeinheiten zufällig auf 0, was dir hilft, Overfitting zu verhindern.
Nachdem die Architektur des Modells festgelegt wurde, muss es kompiliert werden. Dies beinhaltet die Festlegung der Verlustfunktion und des Optimierers. Die Verlustfunktion misst, wie gut die Entwicklung des Modells auf den Trainingsdaten ist.
Eine gängige Wahl für die Verlustfunktion bei Regressionsaufgaben wie der Prognose von Aktienmärkten ist der mittlere quadratische Fehler (MSE), der große Fehler bestraft.
Der Optimierer ist der Algorithmus, der verwendet wird, um die Attribute des neuronalen Netzes wie Gewichte und Lernrate zu ändern, um die Verluste zu reduzieren. Optimierer wie Adam werden aufgrund ihrer Effizienz häufig verwendet.
Adam ist ein Algorithmus zur Optimierung der adaptiven Lernrate, der speziell für das Training eingehender neuronaler Netze entwickelt wurde. Es berechnet adaptive Lernraten für verschiedene Parameter, was es für Probleme mit großen Datenmengen oder Parametern effektiv macht.
Training des Modells
Nachdem das LSTM-Modell erstellt und kompiliert wurde, besteht der nächste Schritt darin, es anhand der Trainingsdaten zu trainieren. Dabei werden die Eingabedaten (z. B. historische Aktienkurse) in das Modell eingespeist und die Gewichtungen des Modells auf der Grundlage der Ausgabe der Verlustfunktion angepasst.
Zwei wichtige Hyperparameter, die während des Trainings eingestellt werden müssen, sind die Anzahl der Epochen und die Batchgröße. Die Anzahl der Epochen bezieht sich auf die Anzahl der Durchläufe, die der Lernalgorithmus durch den gesamten Trainingsdatensatz hat.
Jede Epoche ist eine Iteration über die gesamten Eingabedaten. Je mehr Epochen, desto mehr hat das Modell die Möglichkeit, aus den Daten zu lernen, aber falls die Anzahl der Epochen zu hoch ist, besteht die Gefahr der Überanpassung.
Die Batchgröße ist die Anzahl der Stichproben, die das Modell vorweist, bevor die internen Parameter des Modells (Gewichte und Verzerrungen) aktualisiert werden.
Falls du eine kleinere Batchgröße verwendest, werden die Modellgewichte häufiger aktualisiert, was zu einer schnelleren Konvergenz zu den optimalen Gewichten führen kann, aber auch zu einem stärker verrauschten Gradientenabstiegsprozess.
Andererseits kann eine größere Batchgröße dir eine genauere Schätzung des Gradienten zur Verfügung stellen, aber der Trainingsprozess kann langsamer sein.
Die Wahl der richtigen Epochenzahl und Batchgröße kann die Entwicklung des Modells und die Trainingszeit erheblich beeinflussen. Es ist oft eine Frage von Trial-and-Error, da es keine Einheitslösung gibt; die optimalen Werte können von den spezifischen Eigenschaften der Daten und des Modells abhängen.
Bewertung des Modells
Nachdem das Modell trainiert wurde, ist es an der Zeit, die Entwicklung des Modells anhand der Testdaten zu bewerten. Dazu wird das Modell verwendet, um Prognosen für die Testdaten zu tätigen und anschließend diese Prognosen mit den tatsächlichen Werten zu vergleichen.
Eine gängige Methode zur Visualisierung der Prognosen des Modells ist die Verwendung von Liniendiagrammen. Zum Beispiel kann man die tatsächlichen Aktienkurse und die prognostizierten Kurse im Zeitverlauf darstellen, um zu sehen, wie gut sie übereinstimmen. Das kann dir einen guten Eindruck davon geben, wie gut das Modell die Trends in den Daten erfasst.
Zusätzlich zur visuellen Überprüfung ist es wichtig, die Entwicklung des Modells anhand geeigneter Metriken zu quantifizieren. Bei Regressionsaufgaben, wie z. B. der Prognose von Aktienmärkten, werden häufig der mittlere quadratische Fehler (MSE) und der mittlere absolute Fehler (MAE) verwendet.
Der MSE misst die durchschnittliche quadratische Differenz zwischen den tatsächlichen und den prognostizierten Werten und gibt dir eine höhere Strafe für große Fehler. Der MAE misst die durchschnittliche absolute Differenz zwischen dem tatsächlichen und dem prognostizierten Wert, wobei alle Fehler unabhängig von ihrer Richtung und Größe gleich behandelt werden.
Fazit
Zusammenfassend lässt sich sagen, dass LSTM-Modelle einen vielversprechenden Ansatz für die Prognose von Kursverläufen an der Börse haben. Sie können die zeitlichen Abhängigkeiten in den Daten erfassen und haben eine gute Entwicklung bei dieser Aufgabe gezeigt.
Es ist jedoch wichtig, daran zu denken, dass die Prognose an der Börse ein komplexes Problem ist, das von vielen Faktoren beeinflusst wird, und kein Modell perfekte Vorhersagen garantieren kann.
Nichtsdestotrotz stellen dir die Fortschritte bei den LSTM-Modellen und beim maschinellen Lernen im Allgemeinen vielversprechende Möglichkeiten für künftige Forschungen und Anwendungen in diesem Bereich zur Verfügung.
Weitergehende Quellen
Hier findest du weitere Infos zu der Thematik:
- Towards Data Science: LSTM Time Series Forecasting
- Kaggle: Stock Market Analysis & Prediction using LSTM
- Analytics Vidhya: Stock Price Prediction using LSTM
- ScienceDirect: Stock Market Prediction using LSTM Models
- DataCamp: LSTM Python Stock Market
- Medium: Stock Prices Prediction using LSTM Model in Python