Pythonを使ったポートフォリオの最適化計算。
Pythonで金融工学を学ぶところの当ブログでは、これまで、Pythonを使ってポートフォリオの最適化計算を行うための方法論を検討して参りました。複数資産から構成されるポートフォリオの期待リターンとボラティリティを算出するところまできましたが、ここで最適化計算を行う必要性に迫られているところです。
最適化計算は数学における一分野を築くものでありますので、浅学非才の身であるわたくしにとっては、大きく、難しい問題です。そこで、最適化計算をしてくれるライブラリやツールを探して、使えそうなものがあるか検討してみました。
高性能な数理最適化ソルバー「Gurobi Optimizer」。
書店で最適化問題に関する書籍をあさっていた際、「あたらしい数理最適化: Python言語とGurobiで解く」というそのものズバリの書籍を発見し、早速購入しました。ポートフォリオ最適化問題にも一節をさいており、非常に参考になりそうです。
これまでは特殊なプログラミング言語やアルゴリズム等に精通している事が必要であった最適化問題(数理計画)の解決が、高性能な数理最適化ソルバー(Gurobi)と超高水準プログラミング言語(Python)を用いることで容易に可能となりつつある。本書は、具体例を用いて最適化の基礎理論を解説し、それに即した正確・高速なプログラムを示すことで、問題解決の手本を多数示す。最適化の手法を根本から変える、新しい時代の幕開けを告げる書である。(あたらしい数理最適化: Python言語とGurobiで解く)
調べたところ、Gurobiは商用のソフトウェアとなっており、日本ではOctober Sky社が販売代理店になっているようです。商用ライセンスとアカデミックライセンス、また評価版のライセンスが提供されています。
最適化ツールとしては優れていそうですが、お金を使わずに計算したいという当ブログのコンセプトからは外れます。評価版は無料で使えるとは思いますが、評価版はあくまで評価版ですので…。
Pythonで使えるその他の最適化計算ツール。
インターネットで調べているうちに、「数理最適化とPython」というこれまたそのものズバリの資料をslideshareで発掘しました。
上記のスライドによると、Pythonで最適化計算をするためには、以下の方法やツールがあるようです(抜粋。全部見たい方は上記スライドを参照のこと)。
- Cooper(Common Optimization Python Repository)
- or-tools(Operation Research Tools developed at Google)
- Googleのプロジェクト。
- Gurobi
- 既出。
- OpenOpt(SciPy)
- NumPy、SciPyベースのフリーのライブラリ。
- escpy
- 遺伝的アルゴリズム等の進化的計算パッケージ。
色々あって調べきれませんが、Cooper、OpenOptあたりが当ブログのコンセプトに合いそうです。遺伝的アルゴリズムにも興味があるのでescpyも気になりますが、とりあえずは放置しておきます。
Cooper及びOpenOptについて、もう少し踏み込んで調べてみたい所存です。
あたらしい数理最適化: Python言語とGurobiで解く
- 作者: 久保幹雄,ジョア・ペドロ・ペドロソ,村松正和,アブドル・レイス
- 出版社/メーカー: 近代科学社
- 発売日: 2012/12/03
- メディア: 単行本
- クリック: 9回
- この商品を含むブログを見る