制約を追加する
制約は add.constraint() 関数でポートフォリオ仕様オブジェクトに追加します。追加された各制約は独立したオブジェクトで、ポートフォリオオブジェクトの constraints スロットに保存されます。これにより制約はモジュール化され、ポートフォリオオブジェクト内で簡単に追加・削除・変更できます。add.constraint() の必須引数は、制約を追加する portfolio、制約の type、そして ... で各制約タイプのコンストラクタに渡す名前付き引数です。
基本的な制約タイプ:
- ウェイトの合計に対する制約を指定
weight_sum、weight、leveragefull_investmentは特例で、min_sum = max_sum = 1を設定しますdollar_neutralは特例で、min_sum = max_sum = 0を設定します
- 個別資産のウェイトに対する制約を指定
boxlong_onlyは特例で、min = 0とmax = 1を設定します
- グループ(セクター、地域、アセットクラスなど)ごとのウェイト合計に対する制約を指定
group
- 目標平均リターンに対する制約を指定
return
この演習では、より一般的に使われる制約タイプをいくつか追加します。上記の基本制約タイプに加えて、PortfolioAnalytics ではポジション数上限、ターンオーバー、分散化、ファクターエクスポージャー、レバレッジエクスポージャーといった制約タイプもサポートしています。これらの制約タイプに興味があれば、各制約コンストラクタのヘルプを参照してください。ヘルプには制約タイプの説明とサンプルコードが含まれています。
この演習はコースの一部です
Rで学ぶ中級ポートフォリオ分析
演習の手順
weight_sum制約を追加し、ウェイト合計の最小値を 1、最大値を 1 に設定します。box制約を追加し、最初の5資産の最小ウェイトを 10%、残りの資産の最小ウェイトを 5% に設定します。すべての資産の最大ウェイトは 40% にします。group制約を追加し、資産 1、5、7、9、10、11 を第1グループ、資産 2、3、4、6、8、12 を第2グループに指定します。各グループの最小ウェイトを 40%、最大ウェイトを 60% に設定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Add the weight sum constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min_sum = ___, max_sum = ___)
# Add the box constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min = c(___), max = ___)
# Add the group constraint
port_spec <- add.constraint(portfolio = ___, type = ___, groups = list(c(___), c(___)), group_min = ___, group_max = ___)
# Print the portfolio specification object