MyEnigmaスマートフォン用の表示で見るMyEnigmaとあるエンジニアのブログです。線形計画法や、二次計画法の概要を説明し、myenigma.hatenablog.commyenigma.hatenablog.commyenigma.hatenablog.com凸最適化の有名な応用例であるナップザック問題を解くシミュレーションを紹介しました。myenigma.hatenablog.com今回は同じく、凸最適化の応用例として有名なポートフォリオ最適化問題の概要と、ポートフォリオフォリオ最適化問題を解く、Juliaサンプルコードを紹介したいと思います。複数の投資先(アセット)に、それぞれどれだけ投資すれば良いかという最適化問題です。Portfolioが下記の式です。上記の式において、xは各投資先に対する資産の配分の割合で、xのそれぞれの要素は0<x_i<1の範囲の値を持ちます。加えて、xの総和は1になるような制約も加えられます。μは各投資先の平均利益率を表したもので、その平均利益率を資産配分のxでそれぞれ積和をとった値が、r_min以上になるような制約です。このr_mimはパラメータで、すべての資産の平均利益率がある一定値になるように設定できます。資産配分になるように最適化されます。線形制約のみのポートフォリオ最適化の方法もあります。目標となる利益率ρを決定し、その値以上の利益率になるような不等式制約ではなく、その値になる等式制約にします。その状態でポートフォリオの時系列データの平均が、その利益率にできるだけ近づくようにコスト関数を設定します。式にすると下記の通りです。Rはn個の投資先のm時刻分の利益率を格納した行列です。線形制約の一番上の制約は、投資割合のwの和が1になるようにする制約です。簡単に最適な投資割合wを計算することができます。Portfolioの最適化のサンプルコードを下記のリポジトリで公開しています。github.com今回は、最適化コードの言語としてJuliaを利用し、myenigma.hatenablog.comJuliaの最適化ライブラリJuMPも利用しています。notebook形式で作成しました。下記は今回サンプルコードで使用した3種類の投資先の時系列の利益率データになります。下記はこのデータをグラフ化したものです。利益率の平均と分散が異なることがわかります。下記はそれぞれのr_minの値において、3つの投資先への投資配分をグラフにしたものです。投資先1と2の配分が変化していることがわかります。分散は大きいが、利益平均値も高い投資先2が重要視されるようです。Supportersもしこの記事が参考になり、ブログをサポートしたいと思われた方は、こちらからよろしくお願いします。はてなブログProとあるエンジニアのブログです。Page月別アーカイブスポンサーリンクスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。