見出し画像

Quant College レクチャーシリーズ(13)QuantLib-Python チュートリアル(スワップイールドカーブ編その2)

1.はじめに

概要と位置付け:
Pythonの金融商品評価ライブラリQuantLib-Pythonの使い方を解説するシリーズの第3回。今回は「スワップイールドカーブ編その2」として、OISカーブ構築とOIS評価、カーブ変化に対するOIS時価の感応度計算などを取り扱う。ソースコード一式はJupyter Notebook形式でダウンロード可能
当noteの続編(その3以降)としては、JPY, USD, EURのOIS(RFR)ベースのマルチカーブ構築、クロスカレンシーのマルチカーブ構築などを取り扱う予定。債券のイールドカーブ構築についても続編で取り扱う予定。

当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はシリーズ記事の一部であり、スワップイールドカーブとスワップ評価を扱う。このテーマは多くのトピックを含むため、複数回に分けてリリースする。当noteではOISカーブとOIS評価、カーブ変化に対するOIS時価の感応度計算を解説する。
シリーズの続編として「債券イールドカーブ編」「ボラティリティスマイル編」などを予定している。

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

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

当noteはこんな方におすすめ:
・QuantLib-Pythonを用いたイールドカーブ構築方法を知りたい
・Pythonで効率的に金融商品評価を行いたい/学びたい
・Pythonのライブラリを活用してイールドカーブを構築したい
・Pythonのライブラリを活用してスワップを評価したい
・QuantLibを使ってみたいが、C++の知識がないので断念した
・英語の文献を読むのはしんどいので、日本語で効率的に学びたい

当noteで前提とする知識:
・Google Colaboratoryを使えること(またはPython環境を構築できること)
・Pythonの基本的な文法の知識
・(必須ではないが)金利スワップの基本的な知識があるとより深く理解しやすい
・(必須ではないが)オブジェクト指向プログラミングの基本的な知識(クラス、オブジェクト/インスタンス、コンストラクタ、メソッド、継承、多態性など)があるとより深く理解しやすい

当noteを読んで得られるメリット:
・QuantLib-Pythonを用いたイールドカーブ構築方法がわかる
・Pythonで具体的に数値を出しながら金融商品評価を学べる
・C++を知らなくても、QuantLibを用いた計算を実装できる
・慣れない英語でQuantLib関連資料を読み込む時間を節約できる
・OISカーブ構築方法とOIS評価についてPythonで学べる

当noteに書いていない内容:
・Pythonの環境構築、基本文法の解説
・QuantLib-Pythonの背後にある実装の詳細(C++レイヤーでのクラス設計、SWIGを用いたPythonラッパーの生成など)
・イールドカーブの背後にあるファイナンス理論の解説、ディスカウントファクターを求める数式やその導出
・OIS-IBORベーシス、テナーベーシス、クロスカレンシーベーシスを用いたマルチカーブ構築の実装、各種ベーシススワップの評価(続編で扱う予定)
・債券イールドカーブ構築の実装、債券の評価(続編で扱う予定)

当noteはこんな方にはおすすめしません:
・Pythonの環境構築、基本文法から教えてほしい
・そもそもの金利、イールドカーブ、金利スワップの概念をゼロから詳しく教えてほしい
・金利スワップ評価の背後にあるファイナンス理論、ディスカウントファクターを求める数式やその導出を学びたい
・イールドカーブ構築をスクラッチで(ライブラリを使わずに)実装したい
・各種ベーシスを用いたマルチカーブ構築の実装だけを学びたい
・債券イールドカーブ構築の実装だけを学びたい

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

1.1 当noteの構成

当noteの構成は次の通り。
2章でQuantLib-Pythonの概要とインストールについて簡単に確認する。
3章・4章が本編であり、各Notebookのコードを順に解説していく。
3章はDeposit、OISからTONAカーブを構築し、OISを評価するコードを説明する。加えて、USDの例としてSOFRカーブを構築するコードも説明する。
4章はOISカーブを変化させた後、OIS時価を再計算するコードを説明する。
5章で当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 インストール

方法としては、ビルド済みのものをインストールするか、自力でビルドするかのどちらかである。自力でビルドするにはC++の環境構築などが必要になるので特別な事情がない限りはおすすめしない。Pythonの他のライブラリと同様、ビルド済みのものをインストールすればよい。

2.2.1 コマンド

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

python -m pip install QuantLib

である。

なお注意として、上記コマンドでQuantLibではなくQuantLib-Pythonを指定すると、古いバージョン(バージョン1.18以前)しかインストールできない。2022年6月現在、QuantLibの最新バージョンは1.26である。以前はQuantLib-Pythonという名前だったが、バージョン1.19以降はQuantLibに名前が変更された。以前に古いバージョンをQuantLib-Pythonとしてインストールしている場合は、改めてQuantLibとしてインストールし直しておこう。

当noteではC++で開発されたQuantLib本体と区別するために、QuantLib-Pythonと表記している。

2.2.2 Jupyter Notebook / Google Colaboratory上でインストール

Jupyter NotebookやGoogle Colaboratory上でインストールする場合は

!pip install QuantLib

とすればよい。

Google Colaboratory上でインストールした場合の様子は以下の通り。

2.2.3 関連リンク

QuantLib-Pythonのインストール方法についてはこちらの記事で解説しているので参照されたい(内容が若干古くなっているかもしれないが)。

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

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

ソースコード一式(Notebook)

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

ここから先は

52,975字 / 12画像 / 2ファイル

¥ 1,480

期間限定!PayPayで支払うと抽選でお得

この記事が気に入ったらチップで応援してみませんか?