シンプルなポートフォリオ最適化問題を解いてみましょう
この最初の演習では、PortfolioAnalytics を使ってシンプルなポートフォリオ最適化問題を解く方法を学びます。ポートフォリオ仕様オブジェクトの作成、制約と目的の追加、そして最適化問題の解法を順に体験します。ここでの課題は、フルインベストメント制約とロングオンリー制約の下で、分散最小のポートフォリオを構築することです。目的はポートフォリオ分散を最小化することです。本問題には2つの制約があります。フルインベストメント制約はウェイトの合計が1になること、ロングオンリー制約はすべてのウェイトが0以上(つまり空売りは不可)であることを意味します。
この演習はコースの一部です
Rで学ぶ中級ポートフォリオ分析
演習の手順
index_returnsデータセットの資産名を使ってポートフォリオ仕様オブジェクトを作成し、オブジェクト名をport_specにします。- ウェイトの合計が1になるように、
port_specオブジェクトにフルインベストメント制約を追加します。 - 各資産のウェイトが0から1の範囲になるように、
port_specオブジェクトにロングオンリー制約を追加します。 - ポートフォリオの標準偏差を最小化する目的を、
port_specオブジェクトに追加します。 optimize_method = "ROI"を用いてポートフォリオ最適化問題を解き、最適化結果をoptというオブジェクトに代入します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create the portfolio specification
port_spec <- portfolio.spec(colnames(___))
# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = "___")
# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = "___")
# Add an objective to minimize portfolio standard deviation
port_spec <- add.objective(portfolio = ___, type = "___", name = "___")
# Solve the optimization problem
opt <- optimize.portfolio(___, portfolio = ___, optimize_method = "___")