Dies ist eine Sammlung von Jupyter-Notizbüchern zu verschiedenen Themen im Bereich der quantitativen Finanzen.
Fast! :) :)
Dies ist nur eine Sammlung von Themen und Algorithmen, die meiner Meinung nach interessant sind.
Es enthält mehrere Themen, die heutzutage nicht mehr so beliebt sind, aber sehr wirkungsvoll sein können. Normalerweise sind Themen wie PDE-Methoden, Lévy-Prozesse, Fourier-Methoden oder Kalman-Filter bei Praktikern nicht sehr beliebt, die lieber mit Standardwerkzeugen arbeiten.
Ziel dieser Notizbücher ist es, diese interessanten Themen vorzustellen, indem ihre praktische Anwendung anhand einer interaktiven Python-Implementierung gezeigt wird.
Nichts für absolute Anfänger.
Diese Themen erfordern Grundkenntnisse in stochastischer Analysis, Finanzmathematik und Statistik. Grundkenntnisse in der Python-Programmierung sind ebenfalls erforderlich.
In diesen Notizbüchern werde ich nicht erklären, was eine Call-Option, ein stochastischer Prozess oder eine partielle Differentialgleichung ist.
Allerdings füge ich jedes Mal, wenn ich ein Konzept vorstelle, auch einen Link zur entsprechenden Wiki-Seite oder zu einem Referenzhandbuch hinzu. Auf diese Weise wird der Leser sofort verstehen können, wovon ich spreche.
Diese Hinweise richten sich an Studierende der Naturwissenschaften, Wirtschaftswissenschaften oder Finanzen, die mindestens einen Grundstudiengang in Finanzmathematik und -statistik absolviert haben.
Autodidakten oder Praktiker sollten mindestens ein Einführungsbuch zur Finanzmathematik gelesen haben.
Erstens ist dies kein Buch!
Jedes Notizbuch ist (fast) unabhängig von den anderen. Daher können Sie nur das Notebook auswählen, das Sie interessiert!
- Every notebook contains python code ready to use!
Es ist nicht einfach, im Internet Beispiele für in Python implementierte Finanzmodelle zu finden, die gebrauchsfertig und gut dokumentiert sind.
Ich denke, dass Anfänger in der quantitativen Finanzwirtschaft diese Notizbücher sehr nützlich finden werden!
Darüber hinaus sind Jupyter-Notebooks interaktiv, dh Sie können den Code im Notebook ausführen. Dies ist wahrscheinlich die beste Art zu lernen!
Wenn Sie ein Notizbuch mit Github oder NBviewer öffnen, werden mathematische Formeln manchmal nicht korrekt angezeigt. Aus diesem Grund empfehle ich Ihnen, das Repository zu klonen/herunterzuladen.
NEIN!
Ich werde von Zeit zu Zeit weitere Notizbücher hochladen.
Im Moment interessiere ich mich für die Bereiche stochastische Prozesse, Kalman-Filter, Statistik und vieles mehr. Ich werde in Zukunft weitere interessante Notizbücher zu diesen Themen hinzufügen.
Wenn Sie Fragen haben, Fehler finden oder Verbesserungsvorschläge haben, können Sie mich gerne kontaktieren.
1.1) Numerische Methoden nach Black-Scholes (Lognormalverteilung, Maßänderung, Monte Carlo, Binomialmethode) .
1.2) SDE-Simulation und Statistik (Pfadgenerierung, Konfidenzintervalle, Hypothesentests, geometrische Brownsche Bewegung, Cox-Ingersoll-Ross-Prozess, Euler-Maruyama-Methode, Parameterschätzung)
1.3) Fourier-Inversionsmethoden (Inversionsformel, numerische Inversion, Optionspreisgestaltung, FFT, Lewis-Formel)
1.4) SDE, Heston-Modell (korrelierte Brownsche Bewegungen, Heston-Pfade, Heston-Verteilung, charakteristische Funktion, Optionspreis)
1.5) SDE, Lévy-Prozesse (Merton, Variance Gamma, NIG, Pfadgenerierung, Parameterschätzung)
2.1) Die Black-Scholes-PDE (PDE-Diskretisierung, implizite Methode, Sparse-Matrix-Tutorial)
2.2) Exotische Optionen (Binäre Optionen, Barrier-Optionen, Asiatische Optionen)
2.3) Amerikanische Optionen (PDE, Frühe Ausübung, Binomialmethode, Longstaff-Schwartz, Perpetual Put)
3.1) Merton Jump-Diffusion PIDE (Implizit-Explizite Diskretisierung, diskrete Faltung, Modellbeschränkungen, Monte Carlo, Fourier-Inversion, halbgeschlossene Formel)
3.2) Varianz-Gamma-PIDE (angenäherte Jump-Diffusion-PIDE, Monte Carlo, Fourier-Inversion, Vergleich mit Black-Scholes)
3.3) Normale inverse Gaußsche PIDE (angenäherte Sprung-Diffusions-PIDE, Monte Carlo, Fourier-Inversion, Eigenschaften des Lévy-Maßes)
4.1) Preisgestaltung mit Transaktionskosten (Davis-Panas-Zariphopoulou-Modell, singuläres Kontrollproblem, HJB-Variationsungleichung, Indifferenzpreisgestaltung, Binomialbaum, Leistungen)
4.2) Volatility Smile und Modellkalibrierung (Volatility Smile, Root-Finder-Methoden, Kalibrierungsmethoden)
5.1) Lineare Regression und Kalman-Filter (Marktdatenbereinigung, lineare Regressionsmethoden, Kalman-Filterdesign, Parameterwahl)
5.2) Kalman-Autokorrelationsverfolgung – AR(1)-Prozess (Autoregressiver Prozess, Schätzmethoden, Kalman-Filter, Kalman-Glätter, variable Autokorrelationsverfolgung)
5.3) Volatilitätsverfolgung (Heston-Simulation, Hypothesentests, Verteilungsanpassung, Schätzmethoden, GARCH(1,1), Kalman-Filter, Kalman-Glätter)
6.1) Ornstein-Uhlenbeck-Prozess und Anwendungen (Parameterschätzung, Trefferzeit, Vasicek-PDE, Kalman-Filter, Handelsstrategie)
7.1) Klassische MVO (mittlere Varianzoptimierung, quadratische Programmierung, nur lang und lang-kurz, geschlossene Formel)
A.1) Anhang: Lineare Gleichungen (LU, Jacobi, Gauss-Seidel, SOR, Thomas)
A.2) Anhang: Codeoptimierung (Cython, C-Code)
A.3) Anhang: Überblick über die Theorie der Lévy-Prozesse (grundlegende und wichtige Definitionen, Ableitung der Preis-PIDE)
Virtuelle Umgebung:
Hier erkläre ich, wie man mit Anaconda und dem Python-Modul venv eine virtuelle Umgebung erstellt.
Sie können meine getestete virtuelle Conda-Umgebung neu erstellen mit:
conda env create -f environment.yml
pip install -e .
Die erste Zeile erstellt die virtuelle Umgebung neu und installiert alle Pakete.
Mit der zweiten Zeile installieren wir einfach das lokale Paket FMNM
.
Wenn Sie eine neue Umgebung mit der neuesten Python-Version erstellen möchten, können Sie Folgendes tun:
conda create -n FMNM python
conda activate FMNM
PACKAGES= $( tr ' n ' ' ' < list_of_packages.txt | sed " s/arch/arch-py/g " )
conda install ${PACKAGES[@]}
pip install -e .
Dabei ersetzen wir in der dritten Zeile den Paketnamen arch
durch arch-py
, den von Conda verwendeten Namen.
Wenn Sie lieber ein venv
erstellen möchten, das Python 3.11.4 verwendet, können Sie dies wie folgt tun:
python3.11.4 -m venv --prompt FMNM python-venv
source python-venv/bin/activate
python3 -m pip install --upgrade pip
pip install --requirement requirements.txt
pip install -e .
Wenn Sie lieber die bereits auf Ihrem System installierte Python-Version verwenden möchten, müssen Sie sie nur ausführen
pip install --requirement list_of_packages.txt
pip install -e .
und geben Sie dann in der Shell jupyter-notebook
oder jupyter-lab
ein:
Wenn Sie jedoch ältere Versionen verwenden, kann es zu Kompatibilitätsproblemen kommen.
Docker:
Hier führen wir die Notebooks mit jupyterlab aus:
Sie können Docker-Compose verwenden, um einen Container zu erstellen:
docker-compose up --build -d
Und dann stopfen Sie den Behälter mit
docker-compose down
Und öffnen Sie den Browser unter http://localhost:8888/lab
Alternativ können Sie
docker build -t fmnm .
docker run --rm -d -p 8888:8888 --name Numeric_Finance fmnm