Dieser Artikel beschreibt ein Studienprojekt. Er ist keine Anlageberatung und keine Empfehlung zum Kauf oder Verkauf von Wertpapieren. Vergangene Daten sind kein Garant für zukünftige Entwicklungen.
Ein Modell mit 66 % Trefferquote klang gut, hatte aber nichts gelernt. Erst mit gründlichem Feature Engineering und passenden Metriken wurde sichtbar, was funktioniert: ein schwaches, aber erkennbares Signal. Eine hohe Trefferquote sagt wenig, solange man sie nicht mit den richtigen Kennzahlen prüft.
Die Frage: Rauf oder runter?
Im Team wollten wir eine eingegrenzte Version der Frage beantworten, wann man ein- oder aussteigen sollte: für die Tesla-Aktie vorhersagen, ob der Kurs am nächsten Tag steigt oder fällt.
Technisch ist das eine binäre Klassifikation. Das Modell muss nur die Richtung treffen, nicht den genauen Kurs.
Die Daten: Kurse und Stimmung
Reine Kursdaten waren uns zu wenig. Das Modell sollte auch das Umfeld und die Nachrichtenlage kennen:
Datenaufbereitung: die unsichtbare Hauptarbeit
Bevor wir ein Modell trainieren konnten, mussten die Daten sauber sein:
- Fehlende Werte: Lücken bei den Kurswerten (Eröffnung, Schluss, Hoch, Tief) wurden per Forward Fill mit dem letzten bekannten Schlusskurs aufgefüllt, fehlendes Volumen auf 0 gesetzt.
- Kennzeichnung: Aufgefüllte Tage (z. B. Wochenenden und Feiertage ohne Handel) wurden mit einem eigenen Merkmal markiert, damit das Modell sie unterscheiden kann.
- Klassenverteilung: Weil Wochenenden und Feiertage mit dem letzten Schlusskurs aufgefüllt wurden, ändert sich der Kurs an diesen Tagen nicht. Sie zählen daher als „nicht gestiegen“, also zur Klasse „fällt“. Das trägt zum Übergewicht dieser Klasse bei.
- Ausreißer: Ein unplausibler Volumen-Ausschlag beim NASDAQ im Mai 2025 wurde per Recherche durch den korrekten Wert ersetzt.
- Überflüssiges: Volumen-Merkmale ohne Aussagekraft (nur Nullwerte) wurden entfernt.
- Zusammenführung: Am Ende stand ein Datensatz mit 3.302 Einträgen von Januar 2017 bis Januar 2026 und 46 Merkmalen: 41 aus Marktdaten, 4 aus Stimmungsdaten und 1 Markierung.
Von 56 auf 303 Features
Ein einfacher Ansatz mit 56 Features (Merkmalen, aus denen das Modell lernt: die 46 Merkmale plus 9 Tagesrenditen; mitgezählt ist auch das binäre Zielmerkmal, das das Modell vorhersagt) stieß schnell an seine Grenzen. Also haben wir im Feature Engineering, dem gezielten Ableiten neuer Merkmale, deutlich tiefer gegraben:
- Marktindikatoren für Trend (langfristig), Momentum (Tempo), Volatilität (Risiko) und Historie (letzte Woche).
- Stimmungsmerkmale: Wie hat sich die Nachrichtenlage über Tage und Wochen entwickelt, gab es plötzliche Ausschläge?
- Auswahl: Mit Spearman-Korrelation wurden redundante Merkmale entfernt, per Mutual Information die aussagekräftigsten vorsortiert und anschließend per Recursive Feature Elimination (schrittweises Aussortieren unwichtiger Merkmale) die relevantesten ausgewählt.
Training & Ergebnis
Für das Training haben wir die Daten chronologisch aufgeteilt (70 % Training, 15 % Validierung, 15 % Test) und normalisiert. Bei Zeitreihen ist die chronologische Aufteilung Pflicht, denn ein Modell darf nie „in die Zukunft schauen“. Als Algorithmus kam XGBoost zum Einsatz, ein verbreitetes Verfahren aus vielen kombinierten Entscheidungsbäumen. Optimiert wurde es über eine Grid-Search, also das systematische Durchprobieren von 324 Hyperparameter-Kombinationen (Kombinationen von Modelleinstellungen).
Die Falle: 66 % Trefferquote, aber nichts gelernt
Das einfache Modell erreichte auf den Testdaten eine Accuracy (Trefferquote) von 0,6606. Das klingt ordentlich, aber das Modell hat für jeden einzelnen Tag „fällt“ vorhergesagt. Weil im Testzeitraum zwei Drittel der Tage tatsächlich nicht gestiegen sind, sah die Trefferquote gut aus. Precision (wie oft ein vorhergesagtes „steigt“ stimmt) und Recall (wie viele steigende Tage erkannt werden) lagen für „steigt“ bei 0, der MCC (Matthews Correlation Coefficient) ebenfalls bei 0. Der MCC zeigt auch bei ungleich verteilten Fällen, ob ein Modell besser als Raten ist: 0 entspricht Zufall, 1 einer perfekten Vorhersage.
Accuracy 0,6606 · MCC 0,0000
Accuracy 0,6727 · MCC 0,2295
Advanced: kaum bessere Accuracy, aber ein erkennbares Signal
Im Advanced-Setup haben wir zusätzlich verglichen, wie viele der besten Features (Top-K) das Modell nutzen soll: 50, 100, 150, 200 oder alle. Die Grid-Search lief dafür rund eine halbe Stunde.
| Top-K | Accuracy | Precision | Recall | MCC |
|---|---|---|---|---|
| 50 | 0,6606 | 0,5000 | 0,3869 | 0,2024 |
| 100 | 0,6727 | 0,5283 | 0,3333 | 0,2083 |
| 150 | 0,6242 | 0,4167 | 0,2679 | 0,0862 |
| 200 | 0,6707 | 0,5269 | 0,2917 | 0,1904 |
| alle | 0,6727 | 0,5234 | 0,3988 | 0,2295 |
Die Accuracy stieg nur leicht auf bis zu 0,6727. Wichtiger ist, dass das Modell jetzt tatsächlich steigende Tage erkennt und der MCC mit bis zu 0,2295 klar über null liegt. Das spricht für ein schwaches Muster in den Daten. Ob es über den Testzeitraum hinaus trägt oder sich im Handel nutzen lässt, zeigt das Ergebnis nicht.
Kritischer Rückblick: Machine Learning ist keine Glaskugel
Beim Blick zurück auf das Ergebnis fallen mir vor allem diese Punkte auf:
- Rauschen: Die Nachrichtendaten aus GDELT sind teilweise stark verrauscht.
- Ungleichgewicht: Tage ohne Kursanstieg waren im Datensatz überrepräsentiert, auch weil die aufgefüllten Wochenenden und Feiertage nie als „steigt“ zählen. Deshalb wirkte das einfache Modell besser, als es war.
- Kalender statt Markt: Ein Teil des gemessenen Signals könnte darauf beruhen, dass das Modell Kalendermuster wie Wochenenden erkennt statt Marktbewegungen. Eine sauberere Auswertung würde nur Handelstage verwenden.
- Mehr Daten, mehr Versuche: Ob zusätzliche Datenquellen helfen, bleibt eine offene Frage für weitere Experimente.
- Realitätscheck: Auch ein messbares Signal ersetzt kein striktes Risikomanagement.
Was Unternehmen daraus lernen können
Kaum jemand in Deinem Unternehmen wird Aktienkurse vorhersagen müssen. Die Lehren aus dem Projekt gelten aber für fast jedes Machine-Learning-Vorhaben:
- Daten zuerst. Den Unterschied machten Aufbereitung und Feature Engineering; der Algorithmus (XGBoost) blieb derselbe.
- Die richtige Frage stellen. „Steigt oder fällt es?“ ist lösbarer als „Wie hoch genau?“. Gut eingegrenzte Fragen führen schneller zu Ergebnissen.
- Die richtige Metrik wählen. Eine hohe Accuracy kann täuschen, wenn eine Klasse dominiert. Kennzahlen wie Precision, Recall und MCC zeigen, ob ein Modell wirklich etwas gelernt hat.
- Sauber evaluieren. Chronologische Aufteilung und ein getrennter Testdatensatz verhindern geschönte Ergebnisse.
- Grenzen offen benennen. Wer die Schwächen eines Modells kennt, kann einschätzen, wann seine Prognosen belastbar sind.
Wenn Du überlegst, ob sich ein Daten- oder KI-Projekt für Dich lohnt, findest Du hier meine KI-Leistungen und die Fallstudie Market Prediction.