Pythonで学ぶ金融工学

プログラミング言語Pythonを使って金融工学や投資について学んでいくブログです。

Pythonを使って最適化計算するための方法色々。

Pythonを使ったポートフォリオの最適化計算。

 Python金融工学を学ぶところの当ブログでは、これまで、Pythonを使ってポートフォリオの最適化計算を行うための方法論を検討して参りました。複数資産から構成されるポートフォリオの期待リターンとボラティリティを算出するところまできましたが、ここで最適化計算を行う必要性に迫られているところです。

 最適化計算は数学における一分野を築くものでありますので、浅学非才の身であるわたくしにとっては、大きく、難しい問題です。そこで、最適化計算をしてくれるライブラリやツールを探して、使えそうなものがあるか検討してみました。

高性能な数理最適化ソルバー「Gurobi Optimizer」。

 書店で最適化問題に関する書籍をあさっていた際、「あたらしい数理最適化: Python言語とGurobiで解く」というそのものズバリの書籍を発見し、早速購入しました。ポートフォリオ最適化問題にも一節をさいており、非常に参考になりそうです。

これまでは特殊なプログラミング言語アルゴリズム等に精通している事が必要であった最適化問題(数理計画)の解決が、高性能な数理最適化ソルバー(Gurobi)と超高水準プログラミング言語(Python)を用いることで容易に可能となりつつある。本書は、具体例を用いて最適化の基礎理論を解説し、それに即した正確・高速なプログラムを示すことで、問題解決の手本を多数示す。最適化の手法を根本から変える、新しい時代の幕開けを告げる書である。(あたらしい数理最適化: Python言語とGurobiで解く

 調べたところ、Gurobiは商用のソフトウェアとなっており、日本ではOctober Sky社が販売代理店になっているようです。商用ライセンスとアカデミックライセンス、また評価版のライセンスが提供されています。

 最適化ツールとしては優れていそうですが、お金を使わずに計算したいという当ブログのコンセプトからは外れます。評価版は無料で使えるとは思いますが、評価版はあくまで評価版ですので…。

Pythonで使えるその他の最適化計算ツール

 インターネットで調べているうちに、「数理最適化とPython」というこれまたそのものズバリの資料をslideshareで発掘しました。

 上記のスライドによると、Pythonで最適化計算をするためには、以下の方法やツールがあるようです(抜粋。全部見たい方は上記スライドを参照のこと)。

  • Cooper(Common Optimization Python Repository)
    • COIN-OR(最適化関連ソフトウェアをオープンソースで提供することで学術研究の発展をはかるプロジェクト)のサブプロジェクト。
  • or-tools(Operation Research Tools developed at Google
    • Googleのプロジェクト。
  • Gurobi
    • 既出。
  • OpenOpt(SciPy)
    • NumPy、SciPyベースのフリーのライブラリ。
  • escpy

 色々あって調べきれませんが、CooperOpenOptあたりが当ブログのコンセプトに合いそうです。遺伝的アルゴリズムにも興味があるのでescpyも気になりますが、とりあえずは放置しておきます。

 Cooper及びOpenOptについて、もう少し踏み込んで調べてみたい所存です。

あたらしい数理最適化: Python言語とGurobiで解く

あたらしい数理最適化: Python言語とGurobiで解く