2020年2月14日SHAREツイートシェアはてブLINEPocketこんにちは、タクロウ(@takuro_109)です!ネット証券で、ETF(上場投資信託)の取引手数料の無料化が拡大しています。どの資産に投資するか資産配分問題があります。この資産配分を自動でやってくれるのが、WealthNaviやTHEOなどのロボットアドバイザー投資です。Naviで、仕組みを公開してくれています。WealthNaviの資産運用アルゴリズムWealthNaviこの2019年4月時点のデータを使って、PythonのPyPortfolioOptライブラリで、資産配分最適化したポートフォリオを作成してみました。)のリスク、期待リターン、相関行列のデータ(2019年4月時点、米ドルベース)です。1]])リスクの対角行列を作成し、行列演算を使って、相関行列から共分散行列を作成します。columns=assetName)データ可視化リスク・リターンの散布図を描きます。return")plt.show()金と不動産が他の資産に比べて、リスクに対して期待リターンが小さく、資産配分比率が小さくなることが予想されます。他資産と相関が低くリスク低減効果があるか相関行列をみてみます。cmap='Blues')金は、他資産と相対的に相関が低そうです。不動産は、株式資産クラス内では相対的には相関は低そうです。上記データをインプットとして、どの資産に配分すべきかポートフォリオの最適化をします。WealthNaviでは、投資家のリスク許容度を考慮した期待リターン最大化問題として定式化していますが、ここでは、最も基本的なリスク最小化として解いています。PyPortfolioOptというライブラリを用います。pipなど用いてインストールしておきます。詳細は下記参照ください。InstallationPyPortfolioOptはじめに資産配分比率の下限・上限制約なしで解いてみます。下限・上限制約なしポートフォリオの分散最小化として、要求リターン3.0%から8.5%までのポートフォリオのリスク(標準偏差)と資産配分比率を計算します。[w]ポートフォリオのリスク・リターン及び各資産のリスク・リターンを描きます。return')plt.show()資産を組み合わせことによって、リスクが低減されている(同じ期待リターンのとき、1資産のときよりポートフォリオのリスクは小さい)ことを確認できます。各資産配分比率をみてみます。return")plt.ylabel("weight")plt.ylim([0,1])不動産・金がほぼ投資されていなかったり、1資産への配分比率が大きくなっています。そこで、各資産への配分比率に下限・上限制約をつけて最適化します。下限・上限制約ありWealthNaviでは、資産クラスごとに下限・上限制約を設けていますが、ここでは、資産一律下限を5%、上限を35%として最適化します。制約条件が増えると、最適化の実現可能領域が小さくなるので、要求リターンを4%から7%までに変更して実行します。return")plt.ylabel("weight")plt.ylim([0,1])どの要求リターンのポートフォリオでも、不動産・金が下限制約の5%で配分されるようになりました。さいごにPyPortfolioOptというライブラリを使って、簡単にポートフォリオの最適化問題を実行することができました。Naviと同じリスク許容度を考慮したポートフォリオリターンの最大化問題として、解くこともできます。ポートフォリオの最適化問題は、インプットの期待リターンによって資産配分が大きく変わるので、各資産の期待リターンを推定するのが課題です。Naviで用いられているブラック・リッターマンモデルや時系列分析などで期待リターンを推定してみたいと思います。ブラック・リッターマンモデルによる資産配分を解説してみる(Pythonによる実行例つき)Qiita以上、お読みいただきありがとうございました。拓郎データアナリスト新卒の銀行から、29歳で転職し、データ分析のキャリアをスタート。アルバイト、フリーランスを経て、現在はLINEでデータアナリスト。データ分析・投資関連をツイートしてます。新卒の銀行から、29歳で転職し、データ分析のキャリアをスタート。アルバイト、フリーランスを経て、現在はLINEでデータアナリスト。やってみないとわからないし偶然もつかめないがモットー。※ブログの内容は個人的見解であり、所属組織と無関係です。