最近見つけたライブラリである「pyfolio」のインストール方法に関してまとめておきます。(最終的には内部で利用されている zipline インストールの記事になった感がありますが。。)
ポートフォリオのパフォーマンスやリスク分析などを様々な観点から実行できる Python製ライブラリであり、Quantopian Inc により開発されているようですね。
上記画像のように、分析結果を分かり易く可視化することができるということで便利そうです。今回、検証環境の準備を行ったのでその内容をまとめておきます。
開発環境
- Windows10
- Python 3.5.6 :: Anaconda, Inc.
開発環境は上記の通り。Python環境はAnacondaにて管理しています。
Anacondaにて複数の開発環境の管理ができるので非常に便利です。開発モジュールごとに環境を分離することで、それぞれのモジュールのVerを保全できます。Anaconda Navigator でGUIから管理できるのでおススメです。
ちなみに、3.5にしたのは zipline の動作環境が3.5しかサポートしていないからです。(あとは2.7系)
pyfolio はバックで zipline の機能も利用しているようです。(同じ会社が開発している、バックテストライブラリです)
インストール方法
インストールは以下で簡単にインストールできるはずです。
pip install pyfolio
もし、以下のエラーが発生する場合はモジュールのアップデートをやってみてください。その後であればインストールできるのではないかと。
エラー: AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
解決方法: pip install setuptools --upgrade
モジュールのimportと警告
実際にモジュールを import してみると以下のような警告が出力されるかもしれません。
>>> import pyfolio as pf XXXXXXXX\envs\test\lib\site-packages\pyfolio\pos.py:28: UserWarning: Module "zipline.assets" not found; mutltipliers will not be applied to position notionals. ' to position notionals.'
内部で zipline を利用するのですが見つからないということで、zipline もインストールしていきます。
zipline のインストール
こちらも同様に pip でインストールするだけですが、環境によってはエラーが出るかもしれません。
pip install zipline
エラー: distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/ ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
コンパイルするためのビルドツールがないということですので、入れてあげましょう。
エラーメッセージにあるようにサイトに移動し、「Visual Studio 2019 のツール」というタブにある、「Build Tools for Visual Studio 2019」をダウンロード&インストールします。C++ Build Toolsをインストール時には、以下の画面のようにv14.00のインストールにもチェック(一番下のチェックボックス)を入れておきましょう。(2020/05/17時点の情報です。Visual Studio は常にバージョンが上がっていきますからね。)
再度 pip install を流してみますが、次のエラーが。どうやらpytablesがインストールできないみたいです。色々と調べましたが、結構面倒くさそうでしたのでバイナリをインストールすることにしました。
Collecting tables>=3.3.0 Using cached tables-3.6.1.tar.gz (4.6 MB) ERROR: Command errored out with exit status 1: H5close1gez46a9.c(2): warning C4013: 関数 'H5close' は定義されていません。int 型の値を返す外部関数と見なします。 ~割愛~ ERROR:: Could not find a local HDF5 installation. You may need to explicitly state where your local HDF5 headers and library can be found by setting the ``HDF5_DIR`` environment variable or by using the ``--hdf5`` command-line option.
3.6.1 のpytablesをインストールしようとしていたのでそのバージョンのwheel(バイナリ)を取得してインストールしたかったのですが、Python 3.5 向けのバイナリが存在しないため、Python3.5 向けのバイナリが用意されており一番近いバージョンを利用することにしました。
pip install tables-3.5.2-cp35-cp35m-win_amd64.whl
そして再度 pip install zipline を実行すると次のエラーはこちら。
LINK : fatal error LNK1158: 'rc.exe' を実行できません。 error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158
ハイハイ。rc.exeとかが見つからないのですね。
ということで、エラーメッセージにある「C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64」のパスは見えていると思えたので、rc.exeをコピーしました(雑)
私の環境では「C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64」に存在した「rc.exe, rcdll.dll」を上記パスに移すことで、最終的にコンパイルに成功しました。
参考:CMakeでVisual C++コンパイラが見つからない - Mugichoko’s blog
そしてついに、キタ!!
>>> import pyfolio as pf >>>
まとめ
ということで意外と時間がかかりました。
pyfolio ではなく、zipline のインストール記事になっている感がありますね。。PythonをWindows環境で動かすのが良くないですかね。。