始める無料で始める

シンプルなポートフォリオ最適化問題を解いてみましょう

この最初の演習では、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 = "___")
コードを編集して実行