始める無料で始める

制約と目的関数を洗練する

ここでは、制約や目的関数を見直すとパフォーマンスが向上すると仮定します。各資産のリスクへの割合寄与に最小値と最大値を設定するリスクバジェットの目的関数を追加しましょう。先ほど作成したポートフォリオ仕様を基に進めます。これはより複雑な最適化問題のため、グローバルソルバーが必要になります。そこで最適化手法としてランダムポートフォリオを使用します。

この演習はコースの一部です

Rで学ぶ中級ポートフォリオ分析

コースを見る

演習の手順

  • 標準偏差でリスクを定義するリスクバジェット目的関数 risk_budgetport_spec に追加します。リスクの最小割合を 5%、最大割合を 10% に設定します。
  • 四半期ごとにリバランスして最適化を実行します。学習期間とローリングウィンドウは5年のデータを使用してください。結果を opt_rebal_rb という変数に代入します。
  • ウエイトを可視化します。
  • リスクへの構成要素の割合寄与を可視化します。
  • Return.portfolio() を使ってポートフォリオリターンを計算します。リターンを returns_rb という変数に代入します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。


# Add a risk budge objective
port_spec <- add.objective(portfolio = ___, 
                           type = ___, 
                           name = ___, 
                           min_prisk = ___, 
                           max_prisk = ___)

# Run the optimization
opt_rebal_rb <- optimize.portfolio.rebalancing(R = ___, 
                                               portfolio = ___, 
                                               optimize_method = "random", rp = rp,
                                               trace = TRUE,
                                               rebalance_on = ___, 
                                               training_period = ___,
                                               rolling_window = ___)

# Chart the weights


# Chart the percentage contribution to risk
chart.RiskBudget(___, match.col = "StdDev", risk.type = ___)

# Compute the portfolio returns
returns_rb <- Return.portfolio(R = ___, weights = ___)
colnames(returns_rb) <- "risk_budget"
コードを編集して実行