Statistik für Finanzmärkte#
Vorwort#
In dieser Lehrveranstaltung wollen wir uns mit der Programmiersprache Python und deren Anwendungen in der Statistik für Finanzmärkte vertraut machen.
Als Vorlage für diesen Kurs dient der Kurs Mathematisches Programmieren von Dr. Max Winkler und Dr. Roman Unger, welches sich an dem Buch [1] ( Link Universitätsbibliothek Link) – herzlichen Dank an die beiden für die Vorlage! Das hat uns den Einstieg zur Entwicklung erleichtert, denn die Python Grundlagen sind natürlich völlig unabhängig von den konkreten Anwendungen. Dieser Kurs findet im WS 2025/2026 erstmalig statt und entsprechend befindet sich dieser Kurs noch im Aufbau. Wir freuen uns über Feedback: egal ob Sie Fragen haben, Fehler finden, Verbesserungsvorschläge haben oder Wünsche, welche Themen hier noch unbedingt aufgegriffen werden sollten, schreiben Sie uns über folgende E-Mail.
Was ist Python?
Python ist eine Programmiersprache, die häufig in Webanwendungen, Softwareentwicklung, in der Datenwissenschaft und im Machine Learning verwendet wird. Python hat nicht nur für mathematische Anwendungen ein breites Anwendungsspektrum gefunden, sondern Python ist auch sehr gut geeignet für Finance und Statistik.
Python ist eine sogenannte Skriptsprache, das bedeutet, dass jede Programmzeile aus der Quelldatei nach und nach von einem Interpreter ausgeführt wird. Dies vereinfacht die Programmierung, da im Gegensatz zu anderen Programmiersprachen wie C/C++, Fortran und Java der Programmcode nicht erst aufwändig in Maschinencode übersetzt (kompiliert) werden muss.
Python ist bei Programmierern sehr beliebt, da sich der Programmierer bzw. die Programmiererin nicht damit beschäftigen muss, was der Computer eigentlich genau im Hintergrund macht. Man kann sich stets auf das zu lösende Kernproblem fokussieren.
Ziele der Vorlesung
In dieser Vorlesung wollen wir elementare Programmierkonzepte verstehen und mit der Programmiersprache Python umsetzen und diese auf typische Finance- und Statistik-Problemstellungen anwenden. Besonders mächtig wird Python durch die unzähligen Erweiterungsmodule. Wir wollen uns diese zunutze machen und folgende Aspekte, die für statistische Anwendungen relevant sind, diskutieren.
Analyse von Kurszeitreihen und deren graphische Darstellung
Um Finanzmarktdaten zu visualisieren, müssen diese zunächst importiert werden. Neben dem klassischen Import von Kursdaten aus externen Dateien, beispielsweise im CSV-Format, werden wir auch den automatischen Zugriff auf verschiedene öffentlich verfügbare Quellen im Internet diskutieren.
Die graphische Darstellung der Zeitreihen sowie deren Verteilungen und Zusammenhänge zwischen verschiedenen Werten, ist hilfreich für erste Analysen von Finanzmarktdaten. Wir werden daher lernen Funktionen zu plotten und Datensätze in Diagrammen geeignet darzustellen. Die Berechnung und Interpretation statistischer Kenngrößen sowie klassischer Risikokennzahlen rundet die Auswertung von Finanzdaten ab.
Regressionsmodelle
Die Zusammenhangsanalyse basiert in der Statistik typischerweise auf Modellen. Wir werden hier speziell die linearen Modelle betrachten, insbesondere ausführlich die klassischen Regressionsmodelle besprechen. Aus mathematische Sicht lassen sich alle linearen Modelle durch lineare Gleichungssysteme lösen, so dass wir uns auch das Arbeiten mit Matrizen und Vektoren in Python näher ansehen werden.
Mathematische Berechnungen
Python lässt sich nicht nur als Taschenrechner verwenden, es gibt Erweiterungsmodule, die es sogar erlauben Funktionen zu Differenzieren und zu Integrieren sowie nichtlineare Gleichungen und Differentialgleichungen exakt zu lösen.
Warum Python?
Die Programmiersprache Python bietet einige Vorteile, die wir uns bei der Programmierung mathematischer Anwendungen zunutze machen:
Python ist leicht zu erlernen, unterstützt die üblichen Programmierparadigmen und ist dabei gut lesbar.
Python eignet sich perfekt für die schnelle Entwicklung von Software-Prototypen. Mit nur wenigen Code-Zeilen lassen sich bereits recht komplexe Anwendungen schreiben.
Es gibt unzählige Erweiterungen, sogenannte Module, für alle möglichen Zwecke. Wir werden in dieser Veranstaltung einige dieser Module kennenlernen:
NumPy: Rechnen mit Matrizen und Vektoren und statistische Funktionen
SciPy: Sammlung von Algorithmen für das wissenschaftliche Rechnen und statistische Methoden
SymPy: Ein Computeralgebrasystem für symbolische Berechnungen
Matplotlib: Zum Erzeugen von Plots und Diagrammen
Pandas: Für Datenanalysen und Datenstrukturen
YFinance: Datenabruf von Yahoo-Finance
Statsmodels: Arbeiten mit statistischen Modellen
Scikit-learn: Arbeiten mit Statistik-Modellen (Regression, Klassifikation, Clustering, ..) und allgemeinen Modellen des maschinellen Lernens
Python ist portabel. In Python geschriebener Programmcode läuft auf allen Betriebssystemen (Windows, macOS, Linux).
Python und seine Erweiterungsmodule sind kostenlos, was unser Hauptargument gegen Matlab ist.
Wann ist Python eher ungeeignet?
Python ist für Anwendungen, die eine hohe Geschwindigkeit erfordern, ungeeignet, denn Python ist aufgrund der zeilenweisen Ausführung und der dynamischen Typisierung langsamer als andere Sprachen. Python verbraucht aufgrund seiner Eigenschaften wie flexible Datentypen viel Speicher.
** Lernziele ** Sie kennen die Grundlagen in Python und können sowohl eigene Algorithmen programmieren als auch mit den Zusatzpaketen von Python umgehen. Sie können Daten aus verschiedenen Quellen importieren weiterverarbeiten. Sie sind in der Lage statistische Analysen von Finanzmarktdaten unter Berücksichtigung der Annahmen der verwendeten statistischen Methoden durchzuführen und können die Ergebnisse richtig interpretieren und graphisch visualisieren.
Links und Literatur speziell zu Finance- oder Statistik-Themen und Python
Links und Literatur speziell zu Statistik und Zeitreihen
Vorbereitung#
Bevor wir unser erstes Programm implementieren können, müssen wir unseren Rechner entsprechend einrichten. Wir benötigen mindestens eine Python-Umgebung, einen geeigneten Editor für den Quellcode und eine Möglichkeit externe Programmbibliotheken (Module) nachzuinstallieren. Im Folgenden soll eine Möglichkeit vorgestellt werden, die betriebssystem unabhängig und zuverlässig funktioniert.
Installation von Conda#
Conda ist ein Paketmanager, der über die Kommandozeile bedient werden kann. Conda erlaubt es innerhalb einer isolierten Umgebung Programmpakete wie beispielsweise Python selbst, sowie externe Programmbibliotheken (Module) zu installieren.
Man findet im Internet verschiedene Conda-Distributionen. Wir wollen hier die Distribution MiniConda verwenden. Für alle gängigen Betriebssysteme findet man unter https://docs.conda.io/en/latest/miniconda.html die entsprechenden Installationsdateien sowie eine Installationsanleitung. Auf der Seite kann auch ein aktuelles Cheatsheet mit einer Übersicht der wichtigsten Befehle rund um das Paket-Management heruntergeladen werden.
Wenn die Installation erfolgreich war, öffnen wir eine Konsole[1] und geben den Befehl
conda list
ein. Hier sollte nun eine Liste aller vorinstallierten Pakete erscheinen.
Conda konfigurieren#
In Conda lassen sich Umgebungen erstellen, welche weitestgehend unabhängig vom restlichen System sind (siehe auch Link-Conda). In diesen Umgebungen lässt sich eine Python-Distribution sowie weitere Python-Module, welche im Verlauf der Lehrveranstaltung verwendet werden, installieren.
Zunächst erstellen wir eine neue Umgebung namens myenv
. Dazu tippen wir in die Konsole ein:
conda create --name myenv
Dies geschieht nur einmalig. Immer wenn wir nun in unsere Python-Umgebung wechseln wollen, tippen wir ein:
conda activate myenv
Es fällt auf, dass die Konsoleneingabe nun von
(base) user@machine:~$
auf
(myenv) user@machine:~$
wechselt. Um zu testen, ob die Python-Installation innerhalb unserer Umgebung erfolgreich war tippen wir ein:
python --version
Ausgabe: Python 3.12.2
Achtung wer nicht in Windows arbeitet muss ggf. python3
anstatt python
eintippen. Falls hier dennoch eine Fehlermeldung auftaucht, dass Python unbekannt sein sollte, geben Sie beim Erstellen der neuen Umgebung einfach die entsprechende Python-Version mit an.
conda create --name myenv python=3.12
Wir können nun bereits anfangen in Python zu programmieren. Wir wechseln mit
python
in die Python-Konsole und schreiben unser erstes Programm, welches ein “Hello world!” auf der Konsole ausgeben soll:
print("Hello world!")
Wir verlassen die Python-Konsole mit dem Befehl exit()
oder mit STRG+D
im Windows-Betriebssystem oder in macOS mit ⌃+D
.
Haben wir unsere Arbeit beendet können wir die Conda-Umgebung mit
conda deactivate
wieder verlassen.
Jupyter-Notebook#
Zuletzt müssen wir noch einen passenden Texteditor für den Quellcode installieren. Theoretisch könnte man auch im Windows Nodepad oder unter Linux mit gedit, kate oder einem beliebigen anderen Texteditor programmieren. Wünschenswert wäre allerdings ein Editor, der automatisch programmiersprachenspezifische Keywords hervorhebt (Code-Highlighting) und den Programm Code logisch formatiert (Code Layout). Beliebte Editoren sind beispielsweise:
Vim und Emacs (für die Profis)
Python-Skripte werden in der Regel mit der Endung .py
(z.B. mein_skript.py
) abgespeichert. Um das Skript auf der Konsole auszuführen schreibt man dann einfach:
python mein_skript.py
Damit Sie das Skript direkt in der Konsole starten können, müssen Sie in der Konsole entweder den Pfad zum Skript angeben oder Sie wechseln zuvor einfach in den Ordner. Die folgende Grafik zeigt eine Conda-Konsole in Windows und die Befehle zum Aktivieren der entsprechenden Umgebung finance
, den Verzeichniswechsel sowie anschließendem Aufruf des Skriptes start-python.py
.

Der Editor, den wir in diesem Kurs verwenden wollen, ist das Jupyter-Notebook, und funktioniert etwas anders als die oben genannten. Zunächst ist das Jupyter-Notebook browserbasiert[2], läuft also in Chrome, Firefox, etc.. Mit Jupyter-Notebook können wir nicht nur reine Python-Skripts schreiben, sondern interaktive Arbeitsblätter, die neben Code auch Text und Bilder enthalten können. Dazu später mehr.
Wir installieren zunächst das Jupyter-Notebook direkt in unsere Conda-Umgebung:
conda activate myenv
conda install -c conda-forge notebook
Mit der Option -c conda-forge
teilen wir Conda mit, dass es auf der Suche nach dem Paket notebook
auch in einem öffentlichen Archiv (Channel) namens
“conda-forge” suchen soll. Wir testen mit
jupyter-notebook --version
Ausgabe: 7.2.2
ob die Installation funktioniert hat. Wir starten das Jupyter-Notebook anschließend mit der Eingabe
jupyter-notebook &
und es sollte sich ein neuer Tab im Browser öffnen (eventuell unbemerkt im Hintergrund).
Mit der Schaltfläche New \(\Rightarrow\) Python3 können wir nun ein neues Python-Skript
anlegen und direkt anfangen die Code-Zellen mit Programmcode zu
füllen. Eine Code-Zelle wird mit SHIFT+ENTER
ausgeführt:
Neben Code-Zellen gibt es im Jupyter-Notebook auch noch Markdown-Zellen. Um Markdown-Zellen zu verwenden müssen wir in der Symbolleiste im Auswahlfeld auf die Option “Markdown” umschalten:
Wir können nun die Zelle mit Text füllen und diese schön gestalten. Auf dieser Webseite ist die Syntax der Markdown-Language erklärt. Wir können beispielsweise den Text mit Überschriften gliedern, Bilder und Querverweise einbinden, Tabellen und Auflistungen erstellen, und vieles mehr.
Der Markdown-Code
# Meine Studienarbeit
## Einführung
Die Arbeit beschäftigt sich mit
* Grundlagen der Programmierung
* Mathematische Anwendungen
Falls Fragen auftreten, suche selbst auf [Google](https://www.google.de).
Hier noch ein kurzes Symbolverzeichnis:
|Symbol|Bedeutung|
|:-|:-|
|$\alpha$|Wärmeleitkoeffizient|
|$\nu$|Querkontraktionszahl|
liefert die Ausgabe

Pakete installieren, updaten und löschen#
Bevor ein zusätzliches Paket bzw. Modul hinzugefügt, aktualisiert oder gelöscht werden kann, muss immer die entsprechende Umgebung
in Conda aktiviert sein. Mit conda list
kann man sich zudem immer einen Überblick über die aktuell installierten Pakete in der Umgebung informieren.
conda activate myenv
conda list
Neue Pakete werden dann mittels conda install
oder pip install
hinzugefügt. Details zur Installation finden sich immer in der Paketbeschreibung.
pip install newpackage
conda install -c conda-forge newpackage
Ebenso gibt es sowohl für Conda als auch Pip entsprechende Funktionen für Update (Conda update, ) bzw. Deinstallation (Conda remove pip uninstall).