見出し画像

Quant College レクチャーシリーズ(11)QuantLib-Python チュートリアル(導入編)

1.はじめに

概要:
Pythonの金融商品評価ライブラリQuantLib-Pythonの使い方を解説するシリーズ。第一回は「導入編」として、日付関連の基本的な機能、Black公式、Black-Scholesモデル、グリークス計算などを取り扱う。ソースコード一式はJupyter Notebook形式でダウンロード可能

当noteリリースの背景:
近年のPython人気過熱を受け、ファイナンス理論についてもPythonで計算しながらハンズオンで学びたいというニーズが増えてきている。また、金融実務でもPythonの活用が広がっており、従来であればExcelマクロなどで対応していた計算も、Pythonのライブラリを駆使してできるだけ効率良くツール開発したい、というニーズも生じている。

ファイナンス理論については良質なテキストが日本語で多数出ており(洋書の翻訳版が多いが)、学習者にとって教材に事欠くことは少ない。また、Pythonの文法や機械学習ライブラリの使い方については非常に多くの和書が出ており、どれを選べばいいか悩むほどである。

しかしファイナンス理論をPythonで学ぶ和書はまだ数が少なく、また、それらの多くはスクラッチ実装をベースに学ぶ形式になっている。特に実務家にとっては、スクラッチ実装のような悠長なことは言っておられず、実務で必要な計算ツールを素早く効率的に作りたいはずである。そもそもExcelマクロ等ではなくPythonを使う理由は「多数の便利なライブラリを有効活用したいから」のはずである。

Pythonには実は、QuantLib-Pythonという主に金融商品評価ライブラリが存在し、これを使えば、実務で必要となる計算の大部分は、少ないコードで実装できる。ところがQuantLib-Pythonの解説は、少々マニアックな分野ということもあり、英語で探しても断片的なものしか見つからない。日本語のものに至ってはほぼ皆無という状況であり、初学者の自習にはハードルが高いといえる。さらに、QuantLib-PythonはC++で開発されたライブラリであるQuantLibをPythonから呼び出す形になっており、適切な使い方を自力で把握しようとすると、C++の広範な知識が要求されてしまう

そこで当noteでは:
QuantLib-Pythonの使い方について、簡単なサンプルコードを用いてできるだけ丁寧に日本語でまとめた。これにより、ライブラリのエンドユーザーにとって必要な知識が効率的に得られるはずである。

なお当noteはシリーズ記事の第一弾であり、日付関連の基本的な機能、Black公式、Black-Scholesモデル、グリークス計算などを扱う。シリーズの続編として「イールドカーブ編」「ボラティリティスマイル編」「Vanna-Volgaメソッド編」「Hestonモデル編」「SABRモデル編」「Hull-Whiteモデル編」などを予定している。

当noteの特徴:
・ライブラリの使い方を簡単なサンプルコードを通して説明した。
・関数に与える引数の意味をできるだけ平易に解説した。
・Pythonの若干難しめな文法や機能は使わないで説明するよう努めた。
・ファイナンス関連の実務知識もその都度、簡単に補足説明した。
・ソースコード一式をすぐに動かせるよう、Jupyter Notebook形式で配布している。

当noteの著者について:
・クオンツとして新卒入社後、デリバティブ評価関連の実務に長年従事
・評価モデルの調査、ロジック開発、ライブラリ実装の実務を経験
・自身の運営するサイトQuantCollegeでは、金融工学・デリバティブに関する記事を多数執筆
・Twitterフォロワー1万人超

当noteは以下のような方におすすめ:
・QuantLib-Pythonの使い方を知りたい方
・Pythonで金融商品評価を行いたい/学びたい方
・QuantLibを使ってみたいが、C++の知識がないので断念した方
・英語の文献を読むのはしんどいので、日本語で効率的に学びたい方

当noteで前提とする知識:
・自力でPython環境を構築できること
・Pythonの基本的な文法の知識
・オプションの基本的な商品知識
・(必須ではないが)Black-Scholesモデルの基本的な知識があるとより深く理解しやすい
・(必須ではないが)オブジェクト指向の基本的な知識(クラス、オブジェクト/インスタンス、コンストラクタ、メソッド、継承、多態性など)があるとより深く理解しやすい

当noteを読んで得られるメリット:
・QuantLib-Pythonの基本的な使い方がわかる
・Pythonで具体的に数値を出しながら金融商品評価を学べる
・C++を知らなくても、QuantLibを用いた計算を実装できる
・慣れない英語でQuantLib関連資料を読み込む時間を節約できる
・日付関連のコンベンション、利払スケジュール生成、Black式による評価、BSモデルによる評価、数値微分によるグリークス計算などをPythonで学べる

当noteに書いていない内容:
・QuantLib-Pythonの背後にある実装の詳細(C++レイヤーでのクラス設計、SWIGを用いたPythonラッパーの生成など)
・数理ファイナンスの理論、評価モデルに関する数式、それらの解説や導出
・各種の数値計算アルゴリズムに関する解説や導出
・スワップレート等からのイールドカーブ構築の実装(続編で扱う予定)
・ボラティリティスマイルに対するモデルのキャリブレーションの実装(続編で扱う予定)
・エキゾチックオプションのプライシングの実装(続編で扱う予定)

ディスクレーマー:
当noteの著作権を含む知的所有権は当note著者に帰属し、事前に当note著者からの承諾を得ることなく、当noteおよびその複製物に修正・加工を施すことを固く禁じます。また、当noteおよびその複製物を転載、共有、配布、送信、転用、譲渡、販売すること、及びそれらに準ずる行為を固く禁じます。
上記の禁止事項が発覚した場合は然るべき対応をとらせて頂きます。
当noteの内容については、正しい情報あるいは十分に信頼できると判断した情報に基づき作成することに最大限努めてはおりますが、情報の正確性、完全性について当note著者は保証せず、いかなる責任を負うものでもありません。当noteの内容及びリンク先から読者様・購入者様へいかなる損失・損害などの被害が発生したとしても、当noteでは責任を負いかねますのでご了承下さい。
当noteはパブリックに公開されている情報、及び広く一般の購入者・購読者に向け発信されている情報を基に作成されたものであり、特定企業に固有の情報・特定企業が占有する情報を含みません。当noteに記載の内容や意見につきましては、当note運営者の個人的見解であり、当note運営者の雇用主の公式見解ではありません。

1.1 当noteの構成

当noteの構成は次の通り。
2章でQuantLib-Pythonの概要とインストールについて簡単に確認する。
3章以降が本編であり、各Notebookのコードを順に解説していく。
3章は日付関連の取り扱いに関するNotebookのコードを説明する。
4章はBlack式に関するNotebookのコードを説明する。
5章はBSモデルに関するNotebookのコードを説明する。
6章で当noteをまとめる。

2.QuantLib-Pythonの概要とインストール

2.1 概要

まずQuantLibとは、デリバティブや債券など、金融商品のプライシングやリスク計算が行えるライブラリであり、C++で開発されている。

QuantLib-Pythonとは、QuantLibをPythonから呼び出すラッパーである。C++を呼び出す部分のソースコードは、SWIGというツールで自動生成されている。内部的にはQuantLibを呼ぶ出しているだけなので、QuantLib-Pythonに入っているがQuantLibには入っていないという機能は無い。逆にQuantLibには入っているがQuantLib-Pythonには入っていない機能は存在する点に注意。ロジックの核心部分がPythonで書かれているわけではないので、計算方法の実装を知りたい場合はQuantLibのC++コードを読みに行く必要がある。

2.2 インストール

QuantLib-Pythonのインストール方法についてはこちらの記事で解説しているので参照されたい。方法としては、ビルド済みのものをインストールするか、自力でビルドするかのどちらかである。自力でビルドするにはC++の環境構築などが必要になるが、Pythonの他のライブラリと同様、ビルド済みのものをインストールすればその必要はない。

ビルド済みのものをインストールする方法もまた、Pythonの他のライブラリと同様であり、QuantLib-Pythonに特有のプロセスは必要ない。コマンドは

python -m pip install QuantLib

である。
念のために公式のインストール方法のページ(英語)をリンクしておく。

QuantLib公式サイト(Windows)
QuantLib公式サイト(Mac OS)
QuantLib公式サイト(Linux)

ソースコード一式(Notebook)

説明に用いるソースコード一式は、Jupyter Notebook形式で以下からダウンロードできる。

ここから先は

34,659字 / 3画像 / 3ファイル

¥ 1,480

この記事が気に入ったらサポートをしてみませんか?