Ini adalah kumpulan buku catatan Jupyter berdasarkan berbagai topik di bidang keuangan kuantitatif.
Hampir! :)
Ini hanyalah kumpulan topik dan algoritma yang menurut saya menarik.
Ini berisi beberapa topik yang tidak begitu populer saat ini, tetapi bisa sangat bermanfaat. Biasanya, topik seperti metode PDE, proses Lévy, metode Fourier atau filter Kalman tidak begitu populer di kalangan praktisi, yang lebih suka bekerja dengan alat yang lebih standar.
Tujuan dari buku catatan ini adalah untuk menyajikan topik-topik menarik tersebut, dengan menunjukkan penerapan praktisnya melalui implementasi python interaktif.
Bukan untuk pemula mutlak.
Topik-topik ini memerlukan pengetahuan dasar dalam kalkulus stokastik, matematika keuangan, dan statistik. Pengetahuan dasar tentang pemrograman python juga diperlukan.
Dalam buku catatan ini saya tidak akan menjelaskan apa itu call option, atau apa itu proses stokastik, atau persamaan diferensial parsial.
Namun, setiap kali saya memperkenalkan sebuah konsep, saya juga akan menambahkan tautan ke halaman wiki terkait atau ke manual referensi. Dengan begitu, pembaca akan bisa langsung memahami apa yang saya bicarakan.
Catatan ini ditujukan untuk siswa di bidang sains, ekonomi atau keuangan yang telah mengikuti setidaknya satu program sarjana di bidang matematika dan statistik keuangan.
Siswa atau praktisi otodidak seharusnya sudah membaca setidaknya satu buku pengantar matematika keuangan.
Pertama-tama, ini bukan sebuah buku!
Setiap buku catatan (hampir) independen satu sama lain. Oleh karena itu Anda hanya dapat memilih buku catatan yang Anda minati!
- Every notebook contains python code ready to use!
Tidak mudah untuk menemukan contoh model keuangan yang diimplementasikan dengan python di internet yang siap digunakan dan didokumentasikan dengan baik.
Saya rasa para pemula di bidang keuangan kuantitatif akan merasakan buku catatan ini sangat berguna!
Selain itu, notebook Jupyter bersifat interaktif yaitu Anda dapat menjalankan kode di dalam notebook. Ini mungkin cara terbaik untuk belajar!
Jika Anda membuka notebook dengan Github atau NBviewer, terkadang rumus matematika tidak ditampilkan dengan benar. Untuk alasan ini, saya menyarankan Anda untuk mengkloning/mengunduh repositori.
TIDAK!
Saya akan mengunggah lebih banyak buku catatan dari waktu ke waktu.
Saat ini, saya tertarik pada bidang proses stokastik, Kalman Filter, statistik, dan banyak lagi. Saya akan menambahkan lebih banyak buku catatan menarik tentang topik ini di masa mendatang.
Jika Anda mempunyai pertanyaan, atau jika Anda menemukan kesalahan, atau Anda mempunyai saran untuk perbaikan, jangan ragu untuk menghubungi saya.
1.1) Metode numerik Black-Scholes (distribusi lognormal, perubahan ukuran, Monte Carlo, metode Binomial) .
1.2) Simulasi dan statistik SDE (pembuatan jalur, interval kepercayaan, pengujian hipotesis, gerak Geometrik Brown, proses Cox-Ingersoll-Ross, metode Euler Maruyama, estimasi parameter)
1.3) Metode inversi Fourier (rumus inversi, inversi numerik, penetapan harga opsi, FFT, rumus Lewis)
1.4) SDE, model Heston (gerakan Brown berkorelasi, jalur Heston, distribusi Heston, fungsi karakteristik, harga opsi)
1.5) SDE, proses Lévy (Merton, Variance Gamma, NIG, pembuatan jalur, estimasi parameter)
2.1) The Black-Scholes PDE (Diskritisasi PDE, Metode implisit, tutorial matriks renggang)
2.2) Opsi eksotik (Opsi biner, Opsi penghalang, Opsi Asia)
2.3) Opsi Amerika (PDE, Latihan awal, Metode binomial, Longstaff-Schwartz, Perpetual put)
3.1) Merton Jump-Diffusion PIDE (Diskritisasi implisit-Eksplisit, konvolusi diskrit, batasan model, Monte Carlo, inversi Fourier, rumus semi-tertutup)
3.2) Varians Gamma PIDE (perkiraan PIDE lompat-difusi, Monte Carlo, inversi Fourier, Perbandingan dengan Black-Scholes)
3.3) PIDE Gaussian Invers Normal (perkiraan PIDE difusi lompat, Monte Carlo, inversi Fourier, properti ukuran Lévy)
4.1) Penetapan harga dengan biaya transaksi (model Davis-Panas-Zariphopoulou, masalah kendali tunggal, ketidaksetaraan variasional HJB, penetapan harga indiferen, pohon binomial, kinerja)
4.2) Senyuman volatilitas dan kalibrasi model (Senyuman volatilitas, metode pencari akar, metode kalibrasi)
5.1) Regresi linier dan filter Kalman (pembersihan data pasar, metode regresi linier, desain filter Kalman, pilihan parameter)
5.2) Pelacakan autokorelasi Kalman - proses AR(1) (Proses autoregresif, metode estimasi, filter Kalman, Kalman smoother, pelacakan autokorelasi variabel)
5.3) Pelacakan volatilitas (Simulasi Heston, pengujian hipotesis, pemasangan distribusi, metode estimasi, GARCH(1,1), filter Kalman, Kalman smoother)
6.1) Proses dan aplikasi Ornstein-Uhlenbeck (estimasi parameter, waktu memukul, Vasicek PDE, filter Kalman, strategi perdagangan)
7.1) MVO Klasik (optimasi mean variance, pemrograman kuadrat, hanya rumus panjang dan panjang-pendek, rumus tertutup)
A.1) Lampiran: Persamaan linier (LU, Jacobi, Gauss-Seidel, SOR, Thomas)
A.2) Lampiran: Optimasi kode (cython, kode C)
A.3) Lampiran: Tinjauan teori proses Lévy (definisi dasar dan penting, turunan dari PIDE penetapan harga)
Lingkungan maya:
Disini saya menjelaskan cara membuat lingkungan virtual dengan Anaconda dan dengan modul python venv.
Anda dapat membuat ulang lingkungan virtual conda saya yang telah diuji dengan:
conda env create -f environment.yml
pip install -e .
Baris pertama membuat ulang lingkungan virtual dan menginstal semua paket.
Dengan baris kedua kita tinggal menginstal paket lokal FMNM
.
Jika Anda ingin membuat lingkungan baru dengan versi python terbaru, Anda dapat melakukan:
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 .
dimana pada baris ketiga kita mengganti nama paket arch
dengan arch-py
yang merupakan nama yang digunakan oleh conda.
Jika Anda lebih suka membuat venv
yang menggunakan python 3.11.4, Anda dapat melakukannya sebagai berikut:
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 .
Jika Anda lebih suka menggunakan versi python yang sudah terinstal di sistem Anda, Anda hanya perlu menjalankannya
pip install --requirement list_of_packages.txt
pip install -e .
lalu masukkan ke dalam shell jupyter-notebook
atau jupyter-lab
:
Namun, jika Anda menggunakan versi lama, mungkin ada masalah kompatibilitas.
Buruh pelabuhan:
Di sini kami menjalankan notebook dengan jupyterlab:
Anda dapat menggunakan docker-compose untuk membuat container:
docker-compose up --build -d
Dan kemudian hentikan wadahnya dengan
docker-compose down
Dan buka browser di http://localhost:8888/lab
Alternatifnya, Anda bisa
docker build -t fmnm .
docker run --rm -d -p 8888:8888 --name Numeric_Finance fmnm