平均・分散効率的ポートフォリオを見つける
平均・分散効率的ポートフォリオは、ポートフォリオの期待収益率が目標収益率に等しいという制約の下で、ポートフォリオ分散を最小化する解として得られます。これを行う便利なR関数が、Rパッケージ tseries の関数 portfolio.optim() です。 デフォルト実装では、等金額加重ポートフォリオの収益率に等しいという制約の下で、平均・分散効率的なポートフォリオのウェイトを求めます。 必要な引数は、ウェイトを推定したいポートフォリオ構成要素の月次リターンデータのみです。
DJIA銘柄の月次リターンを含む変数 returns は、すでにコンソールに読み込まれています。
この演習はコースの一部です
Rで学ぶポートフォリオ分析入門
演習の手順
- ライブラリ
tseriesを読み込みます。 portfolio.optim()のデフォルト(等金額加重ポートフォリオのリターンをターゲット)を用いて月次リターンの平均・分散効率的ポートフォリオを作成し、出力を変数optに代入します。- 最適化したポートフォリオからウェイトのベクトルを作成します。ポートフォリオのウェイトは
opt$pwにあります。これをpf_weightsと呼びます。 - 提供されたコードを使って資産名を割り当てます。
pf_weightsから1%以上の最適ウェイトを選び、opt_weightsとします。- barplot() を使って
opt_weightsの分布を可視化します。 - 最適化したポートフォリオの期待収益率(
opt$pm)とボラティリティ(opt$ps)を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Load tseries
# Create an optimized portfolio of returns
opt <- portfolio.optim(___)
# Create pf_weights
pf_weights <- ___$pw
# Assign asset names
names(pf_weights) <- colnames(returns)
# Select optimum weights opt_weights
opt_weights <- pf_weights[___ >= 0.01]
# Bar plot of opt_weights
# Print expected portfolio return and volatility
___$pm
___$ps