これは、定量的金融の分野におけるさまざまなトピックに基づいた Jupyter ノートブックのコレクションです。
ほとんど! :)
これは、私の意見では興味深いトピックとアルゴリズムを集めたものです。
この中には、現在ではあまり人気がありませんが、非常に強力なトピックがいくつか含まれています。通常、PDE 法、レヴィ過程、フーリエ法、カルマン フィルターなどのトピックは、より標準的なツールを使用することを好む実務者の間ではあまり人気がありません。
これらのノートブックの目的は、インタラクティブな Python 実装を通じて実際のアプリケーションを示すことで、これらの興味深いトピックを提示することです。
まったくの初心者向けではありません。
これらのトピックでは、確率微積分、金融数学、統計に関する基本的な知識が必要です。 Python プログラミングの基本的な知識も必要です。
これらのノートでは、コール オプションとは何か、確率過程や偏微分方程式とは何かについては説明しません。
ただし、概念を紹介するたびに、対応する Wiki ページまたはリファレンス マニュアルへのリンクも追加します。こうすることで、読者は私が何を言っているのかをすぐに理解できるようになります。
これらのノートは、金融数学と統計の少なくとも 1 つの学部コースを履修した科学、経済学、または金融の学生を対象としています。
独学の学生や実践者は、少なくとも金融数学の入門書を読んでいる必要があります。
まず、これは本ではありません!
すべてのノートブックは他のノートブックから (ほぼ) 独立しています。そのため、興味のあるノートだけを選択することができます。
- Every notebook contains python code ready to use!
すぐに使用でき、十分に文書化された Python で実装された財務モデルの例をインターネット上で見つけるのは簡単ではありません。
クオンツファイナンスの初心者にとって、このノートは非常に役立つと思います。
さらに、Jupyter ノートブックはインタラクティブであるため、ノートブック内でコードを実行できます。これがおそらく最良の勉強法です!
GithubやNBviewerでノートブックを開くと、数式が正しく表示されない場合があります。このため、リポジトリを複製/ダウンロードすることをお勧めします。
いいえ!
他のノートも随時アップロードしていきます。
現時点では、確率過程、カルマン フィルター、統計などの分野に興味があります。今後、これらのトピックに関する興味深いノートを追加する予定です。
ご質問がある場合、間違いを見つけた場合、または改善のための提案がある場合は、お気軽にご連絡ください。
1.1)ブラック・ショールズ数値法(対数正規分布、測定値の変更、モンテカルロ、二項法) 。
1.2) SDE シミュレーションと統計(パス生成、信頼区間、仮説検定、幾何ブラウン運動、Cox-Ingersoll-Ross 過程、オイラー丸山法、パラメータ推定)
1.3)フーリエ逆変換手法(逆変換公式、数値逆変換、オプション価格設定、FFT、ルイス公式)
1.4) SDE、ヘストンモデル(相関ブラウン運動、ヘストンパス、ヘストン分布、特性関数、オプション価格設定)
1.5) SDE、Lévy プロセス(Merton、分散ガンマ、NIG、パス生成、パラメータ推定)
2.1)ブラック・ショールズ偏微分方程式(PDE 離散化、陰的手法、疎行列チュートリアル)
2.2)エキゾチック オプション(バイナリー オプション、バリア オプション、アジアン オプション)
2.3)アメリカン オプション(PDE、アーリーエクササイズ、二項法、ロングスタッフ・シュワルツ、永久プット)
3.1) Merton Jump-Diffusion PIDE (陰的陽的離散化、離散畳み込み、モデル制限、モンテカルロ、フーリエ逆変換、半閉式)
3.2)分散ガンマ PIDE (近似ジャンプ拡散 PIDE、モンテカルロ、フーリエ逆変換、Black-Scholes との比較)
3.3)通常の逆ガウス PIDE (近似ジャンプ拡散 PIDE、モンテカルロ、フーリエ逆変換、レヴィ測度の特性)
4.1)取引コストを伴う価格設定(Davis-Panas-Zariphopoulou モデル、特異制御問題、HJB 変分不等式、無差別価格設定、二項木、パフォーマンス)
4.2)ボラティリティ・スマイルとモデルのキャリブレーション(ボラティリティ・スマイル、ルートファインダー法、キャリブレーション法)
5.1)線形回帰とカルマン フィルター(市場データのクリーニング、線形回帰手法、カルマン フィルターの設計、パラメーターの選択)
5.2)カルマン自己相関追跡 - AR(1) プロセス(自己回帰プロセス、推定方法、カルマン フィルター、カルマン スムーザー、変数自己相関追跡)
5.3)ボラティリティ追跡(ヘストンシミュレーション、仮説検定、分布フィッティング、推定手法、GARCH(1,1)、カルマンフィルター、カルマンスムーサー)
6.1) Ornstein-Uhlenbeck プロセスとアプリケーション(パラメータ推定、ヒット時間、Vasicek PDE、カルマン フィルター、トレーディング戦略)
7.1)古典的な MVO (平均分散の最適化、二次計画法、長短のみ、閉じた公式)
A.1)付録: 線形方程式(LU、ヤコビ、ガウス・ザイデル、SOR、トーマス)
A.2)付録: コードの最適化(cython、C コード)
A.3)付録: レヴィプロセス理論のレビュー(基本的かつ重要な定義、価格設定 PIDE の導出)
仮想環境:
ここではAnacondaとPythonモジュールvenvを使って仮想環境を作成する方法を説明します。
次のようにして、テスト済みの conda 仮想環境を再作成できます。
conda env create -f environment.yml
pip install -e .
最初の行は仮想環境を再作成し、すべてのパッケージをインストールします。
2 行目では、ローカル パッケージFMNM
インストールするだけです。
最新の Python バージョンを使用して新しい環境を作成する場合は、次の手順を実行できます。
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 .
ここで、3 行目では、パッケージ名arch
conda で使用される名前であるarch-py
に置き換えます。
Python 3.11.4 を使用するvenv
を作成したい場合は、次のように実行できます。
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 .
システムにすでにインストールされている Python バージョンを使用したい場合は、次のコマンドを実行するだけです。
pip install --requirement list_of_packages.txt
pip install -e .
次に、シェルにjupyter-notebook
またはjupyter-lab
と入力します。
ただし、古いバージョンを使用している場合は、互換性の問題が発生する可能性があります。
ドッカー:
ここでは、jupyterlab を使用してノートブックを実行します。
docker-compose を使用してコンテナを構築できます。
docker-compose up --build -d
そしてコンテナを停止します
docker-compose down
http://localhost:8888/lab
でブラウザを開きます。
または、次のこともできます。
docker build -t fmnm .
docker run --rm -d -p 8888:8888 --name Numeric_Finance fmnm