【QuantLib-Pythonの使い方】第1回:インストールの方法

はじめに

今回はQuantLibをPythonから呼び出すためのラッパーであるQuantLib-Pythonのインストール方法について書いていく。

QuantLibとは

QuantLibとは、デリバティブや債券などの金融商品を評価することに特化したライブラリであり、C++で作られている。以下の関連記事でQuantLibのインストール方法などを説明してきた。

QuantLib-Pythonとは

QuantLib-Pythonとは、QuantLibと同じ機能をPythonから呼び出せるラッパーである。C++を呼び出す部分のソースコードは、SWIGというライブラリをつかって自動生成されている。QuantLib-SWIGでは、Pythonの他にもJava, Scala, C#, Rから呼び出すコードが自動生成されている。

QuantLibはC++のライブラリであり、使いこなすにはC++の知識が不可欠となる。しかし、C++はどうしてもポインタやスマートポインタのところでつまづく人が多く、とっつきにくい印象があるようだ。QuantLib-PythonはC++の知識が不要であり、Pythonから気軽に呼び出せる。最近はプログラミングといえばPython、というくらいPythonが普及していることもあり、(QuantLibの内部を自前で拡張するのではなく、)単にライブラリとして外部からQuantLibを呼び出したいだけの人にとっては、QuantLib-Pythonが良いだろう。

前提

  • Windows10 (64bit)
  • boost-1.74
  • QuantLib-1.19
  • QuantLib-SWIG-1.19
  • Anaconda3-2020.07 (Python3.8)

Windows以外でのインストール方法については以下の参考URL(英語)を参照。IT企業からすると信じられないだろうが、金融機関のPCは未だにWindowsである。

インストール方法の参考URL

pipでのインストール

Anacondaのインストール方法はネットにいくらでもあるので省略。
pipでインストールするには、Anaconda Promptから

pip install QuantLib-Python

とすればよい。自分でQuantLib-Pythonの中を修正したい、というような人以外は、上記の方法でコンパイル済みバイナリーをインストールすればそれで十分だ。うまくいかない場合は以下で説明するように自力でインストールする必要がある。pipでインストールできた場合は以下の節は飛ばしてもらって構わない。

自力でのインストール

BoostとQuantLibのインストール

・QuantLib-PythonのインストールにはQuantLibのビルド済みバイナリーファイルが必要

・QuantLibをビルドするにはBoostのヘッダーファイルとバイナリーファイルが必要

ということで、まずBoostをインストールし、次にQuantLibをインストールする。方法は以下の記事で詳細に説明しているので、そちらを参照のこと。

QuantLib-SWIGのインストール

QuantLibのビルドまで終わったら、次にQuantLib-SWIGをインストールする。
ダウンロードサイトに行き、下の方にあるDownloadsから最新バージョンのzipファイルを落とす。本記事の執筆時では1.19が最新であった。
ここで注意すべきは、既にインストールしたQuantLibのバージョンと、QuantLib-SWIGのバージョンが対応していないといけない、ということだ。

zipファイルを好きなところに解凍する。QuantLib-SWIGのインストール自体はこれで終了で、あとはQuantLib-SWIGが入っているフォルダへのパスを以下のQuantLib-Pythonのインストール段階で指定すればそれでOK。

QuantLib-Pythonのインストール

最後にQuantLib-Python本体をインストールする。
Anaconda Promptを開き、以下のようにパスを設定。
ここでは、C:\localの下にQuantLib-SWIG, QuantLib, boostが全て入っている前提で書いているので、各自で自分のパスに直す必要がある。

cd C:\local\QuantLib-SWIG-1.9\Python
set QL_DIR=C:\local\QuantLib-1.9
set INCLUDE=C:\local\boost_1_64_0

ここまで終われば、あとはビルドする。以下のコマンドを入力。

python setup.py build

きちんとビルドされたか確認のために、以下のコマンドを入力。

python setup.py test

最後に、インストール済みのPythonに対して、ビルドしたモジュールを紐付けるため、以下のコマンドを入力。

python setup.py install

これでインストールは完了となる。
あとは好きなIDEで動かせばよい。JupyterLab/JupyterNotebook, PyCharm, Spyderあたり、またはVSCodeでも良いだろう。
QuantLibを使うには次のようにインポートすればよい。

import QuantLib as ql

正しくインストールできたかテスト

テストコード

簡単なテストコードを動かしてみる。ここではバニラオプションをBlack-Scholesモデルで評価する。コードの内容は次回の記事で解説。

import QuantLib as ql

# date settings
todaysDate = ql.Date(1, 10, 2020)
ql.Settings.instance().evaluationDate = todaysDate
day_count = ql.Actual365Fixed()
calendar = ql.UnitedStates()

# market data
spot = 130
risk_free = 0.001
dividend = 0.02
vol = 0.20

# trade data
maturity = ql.Date(1, 4, 2021)
strike = 130
option_type = ql.Option.Call

# make market objects
spot_handle = ql.QuoteHandle(ql.SimpleQuote(spot))
flat_rf_ts = ql.YieldTermStructureHandle(
    ql.FlatForward(todaysDate, risk_free, day_count)
)
flat_div_ts = ql.YieldTermStructureHandle(
    ql.FlatForward(todaysDate, dividend, day_count)
)
flat_vol_ts = ql.BlackVolTermStructureHandle(
    ql.BlackConstantVol(todaysDate, calendar, vol, day_count)
)

# make trade objects
payoff = ql.PlainVanillaPayoff(option_type, strike)
exercise = ql.EuropeanExercise(maturity)
option = ql.VanillaOption(payoff, exercise)

# make model object
bsm_process = ql.BlackScholesMertonProcess(
    spot_handle, flat_div_ts, flat_rf_ts, flat_vol_ts)

# make pricing engine
engine = ql.AnalyticEuropeanEngine(bsm_process)

# set pricing engine
option.setPricingEngine(engine)

# run calculation
print(option.NPV())

実行結果

6.683946573403789

おわりに

今回はQuantLib-Pythonをインストールし、テストコードを動かすところまでを見てきた。次回以降は毎回、自作の簡単なテストコードを解説していく。

関連記事