カスタム目的関数による最適化
この演習では前の演習を引き継ぎ、ポートフォリオの年率換算標準偏差を計算するカスタム目的関数で最適化を実行します。目的関数は有効なR関数であれば何でも指定できるため、pasd()関数に対応するリスク目的を追加します。set.portfolio.moments()関数はpasd()という目的名を認識しないため、第2モーメントであるsigmaを計算するカスタムのモーメント関数を作成する必要があります。最適化手法としてランダムポートフォリオを用いて問題を解きます。
この演習はコースの一部です
Rで学ぶ中級ポートフォリオ分析
演習の手順
- 前の演習で作成したカスタム目的関数を、ポートフォリオ仕様オブジェクトに追加します。
- 制約と目的を確認するため、ポートフォリオ仕様オブジェクトを出力します。
- 最適化を実行します。カスタムモーメント関数の名前は
set_sigmaです。 - 最適化結果を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Add custom objective to portfolio specification
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Print the portfolio specificaton object
# Run the optimization
opt <- optimize.portfolio(R = ___, portfolio = ___, momentFUN = ___, optimize_method = "random", rp = rp)
# Print the results of the optimization