グドイベ!投資や資産形成を中心にライフハックを目指すブログ

グドイベ!(Good Investor!Good Event!)なんとか準富裕層へ到達。長期目線では米国株式を中心にインデックスを積立中、中短期ではシストレの売買で資産を積み上げ、長期投資の原資を増やす作戦。仮想通貨もウォッチ中。経済的自由を達成する道半ばを楽しみながら投資に取り組んでいます。ブログ記事は興味があるもの多数につき多岐にわたります。

Python製ポートフォリオ分析ツール「pyfolio」のインストール方法

f:id:hydech:20200518003636j:plain
pyfolio/ziplineのセットアップ方法

最近見つけたライブラリである「pyfolio」のインストール方法に関してまとめておきます。(最終的には内部で利用されている zipline インストールの記事になった感がありますが。。)

ポートフォリオのパフォーマンスやリスク分析などを様々な観点から実行できる Python製ライブラリであり、Quantopian Inc により開発されているようですね。

github.com

f:id:hydech:20200517231616j:plain
ポートフォリオ分析ライブラリ pyfolio

GitHub - quantopian/pyfolio: Portfolio and risk analytics in Python

上記画像のように、分析結果を分かり易く可視化することができるということで便利そうです。今回、検証環境の準備を行ったのでその内容をまとめておきます。

開発環境

  • Windows10
  • Python 3.5.6 :: Anaconda, Inc.

開発環境は上記の通り。Python環境はAnacondaにて管理しています。

Anacondaにて複数の開発環境の管理ができるので非常に便利です。開発モジュールごとに環境を分離することで、それぞれのモジュールのVerを保全できます。Anaconda Navigator でGUIから管理できるのでおススメです。

ちなみに、3.5にしたのは zipline の動作環境が3.5しかサポートしていないからです。(あとは2.7系)

pyfolio はバックで zipline の機能も利用しているようです。(同じ会社が開発している、バックテストライブラリです)

github.com

インストール方法

インストールは以下で簡単にインストールできるはずです。

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 は常にバージョンが上がっていきますからね。)

visualstudio.microsoft.com

f:id:hydech:20200517234309p:plain
C++ Build Tools(C++ 14.0)のインストール

再度 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 向けのバイナリが用意されており一番近いバージョンを利用することにしました。

pypi.org

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環境で動かすのが良くないですかね。。