mcpField
A
asset-allocation

asset-allocation

github.com/joellewisその他218854 回インストール15 週間前に更新
リポジトリ

asset-allocation について

ポートフォリオ構築やウェルスマネジメントのワークフロー向けの資産配分スキルです。戦略・戦術的な配分と各種最適化モデルを解説し、実行可能な計算例も含みます。

主な機能

  1. 01戦略的・戦術的な資産配分
  2. 02平均分散最適化とBlack-Litterman
  3. 03リスクパリティとグライドパス
  4. 04コア・サテライトと資産負債マッチング
  5. 05配分計算例の実行と検証

活用シーン

  1. 01長期ポートフォリオの目標比率設定
  2. 02市場見通しに応じた短期配分の調整
  3. 03リスクパリティと最適化ポートフォリオの比較
  4. 04年金資産と負債キャッシュフローの対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/joellewis/finance_skills --skill asset-allocation

インストール後、Claude Code で/asset-allocationを入力して読み込まれたか確認します。

同梱ファイルscripts/asset_allocation.py

詳細

資産配分

基本概念

戦略的資産配分(SAA)

投資家のリスク許容度、リターン目標、投資期間、制約に基づく長期的な基本ポートフォリオです。SAA は基準となる目標ウェイト(例:株式 60%/債券 30%/オルタナティブ 10%)を定め、長期的なポートフォリオリターンを左右する主要な要因となります。SAA は市場の動きに反応してではなく、投資家の状況が変化したときに見直す必要があります。

戦術的資産配分(TAA)

市場見通し、バリュエーション、モメンタムシグナルに基づき、SAA から短期から中期にわたって配分を変更します。場当たり的なマーケットタイミングに陥らないよう、規律あるプロセスが必要です。主な検討事項:

  • 許容する乖離幅を定めます(例:SAA から +/- 10%)
  • 明確なシグナルの枠組みを用意します(バリュエーション、モメンタム、マクロ)
  • 回帰ルールを設定します:SAA のウェイトに戻すタイミング
平均分散最適化(MVO)

リスク調整後リターンを最大化する最適なポートフォリオウェイトを求める、Markowitz の枠組みです:

max w'*mu - (lambda/2) * w'Sigmaw

subject to: sum(w_i) = 1, w_i >= 0 (if long-only), and any additional constraints.

ここで:

  • w = ウェイトベクトル
  • mu = 期待リターンベクトル
  • Sigma = 共分散行列
  • lambda = リスク回避度パラメーター

MVO には、期待リターン、共分散行列、リスク回避度の 3 つの入力が必要です。解は期待リターンの入力値に大きく左右されます。

Black-Litterman モデル

市場均衡リターンと投資家の見通しを組み合わせ、より安定した直感的なポートフォリオウェイトを算出します。2 段階のプロセスです:

ステップ 1 — 含意された均衡リターン: Pi = lambda * Sigma * w_mkt

ここで、w_mkt は時価総額加重ベクトル、lambda はリスク回避度パラメーター、Sigma は共分散行列です。これは現在の価格を前提として、市場が暗黙に予想しているリターンです。

ステップ 2 — 見通しとのブレンド: E(R) = [(tau*Sigma)^(-1) + P'*Omega^(-1)P]^(-1) * [(tauSigma)^(-1)*Pi + P'*Omega^(-1)*Q]

ここで:

  • tau = スカラー(均衡に対する不確実性。通常 0.025~0.05)
  • P = ピック行列(各見通しの対象資産を特定します)
  • Q = 見通しベクトル(見通しに基づく期待リターン)
  • Omega = 見通しの不確実性を表す対角行列

結果として得られる事後期待リターンベクトルは、投資家の確信度に応じて、均衡から投資家の見通しの方向へ傾きます。

リスクパリティ

資本配分を均等にするのではなく、各資産(またはファクター)のリスク寄与を均等にします:

RC_i = w_i * (Sigma*w)_i / sigma_p

すべての i、j について RC_i = RC_j とします。

相関がない単純な 2 資産の場合: w_i は 1/sigma_i に比例します

リスクパリティポートフォリオでは、ボラティリティの低い資産(通常は債券)により多くの資本を配分します。また、競争力のあるリターン目標を達成するため、レバレッジが必要になることもよくあります。

グライドパス

投資家の年齢が上がる、または目標日が近づくにつれて、成長資産からディフェンシブ資産へ体系的に移行する、年齢または時間に基づく配分です:

一般的な経験則:株式比率 % = 110 - 年齢

ターゲットデートファンドのグライドパスでは通常、次のように設定します:

  • 若い投資家の場合、株式比率を 90%から開始します
  • 年ごとに約 1~2%引き下げます
  • 退職時には株式比率を 30~40%にします
  • 退職後も「スルー」型の配分を継続します
コア・サテライト

次を組み合わせるハイブリッド型のアプローチです:

  • コア(60~80%): 低コストで幅広く分散されたインデックスファンドまたは ETF
  • サテライト(20~40%): アクティブ戦略、ファクターへの傾斜、オルタナティブ、または集中投資

この構造では、コアで市場リターンを効率的に取り込みながら、サテライトでアルファの獲得や特定のエクスポージャーを狙えます。

資産・負債のマッチング

確定給付年金、保険、支出ルールのある基金など、負債が定められている投資家の場合:

  • 資産のデュレーションとキャッシュフローを、負債のデュレーションおよび発生時期に合わせます
  • サープラス最適化:絶対リターンではなく、負債との関係でポートフォリオを最適化します
  • 負債主導型投資(LDI):デュレーションを一致させた債券で負債リスクをヘッジし、サープラスをリターン追求型資産に投資します

主な数式

数式式用途
MVO 目的関数max w'*mu - (lambda/2)*w'Sigmaw最適なポートフォリオのウェイト
均衡リターンPi = lambda * Sigma * w_mktBlack-Litterman の出発点
BL 事後リターンE(R) = [(tau*Sigma)^(-1) + P'*Omega^(-1)P]^(-1) * [(tauSigma)^(-1)*Pi + P'*Omega^(-1)*Q]ブレンド後の期待リターン
リスク寄与度RC_i = w_i * (Sigma*w)_i / sigma_pリスクパリティの目標
リスクパリティ条件RC_i = RC_j for all i, jリスク寄与度を均等化
グライドパスのルール株式比率 = 110 - 年齢年齢に応じた配分

計算例

例 1:3 資産の平均分散最適化

与件:

  • 資産:米国株式(mu=8%、sigma=16%)、国際株式(mu=7%、sigma=18%)、米国債券(mu=3%、sigma=4%)
  • 相関:米国株式/国際株式 = 0.75、米国株式/債券 = 0.10、国際株式/債券 = 0.05
  • リスク回避度:lambda = 4
  • 制約:ロングのみ、投資比率合計 100%

計算対象: 最適ウェイト

解答:

共分散行列:

  • Cov(US,US) = 0.16^2 = 0.0256
  • Cov(Intl,Intl) = 0.18^2 = 0.0324
  • Cov(Bond,Bond) = 0.04^2 = 0.0016
  • Cov(US,Intl) = 0.75 * 0.16 * 0.18 = 0.0216
  • Cov(US,Bond) = 0.10 * 0.16 * 0.04 = 0.00064
  • Cov(Intl,Bond) = 0.05 * 0.18 * 0.04 = 0.00036

lambda=4 の MVO(数値的に、または二次計画法で解く):

最適ウェイト(ロングのみ):

  • 米国株式:51.9%
  • 国際株式:0%
  • 米国債券:48.1%

ポートフォリオ:期待リターン = 5.60%、ボラティリティ = 8.71%

注:国際株式の比率はゼロになります。米国株式との相関が高い(0.75)一方で期待リターンが低いため、最適化では保有する理由がないと判断されます。これは典型的な MVO の挙動です。入力値のわずかな違いが、極端な解につながります。最大ウェイトや最低配分の制約を加えると、分散投資を強制できます。債券の配分が高いのは、分散に対するペナルティが大きいためです(lambda=4)。lambda を下げると、株式の比率が高まります。

例 2:相対ビューを用いた Black-Litterman

与件: 例 1 と同じ 3 資産および共分散行列。

  • 時価総額ウェイト:米国株式 55%、国際株式 30%、米国債券 15%
  • リスク回避度 lambda = 2.5、tau = 0.05
  • 投資家の見解:国際株式は米国債券を 3% 上回る(見解の不確実性 Omega = [0.001]。値が小さいほど確信度が高い)

計算対象: 均衡期待リターンと事後期待リターン

解答:

ステップ 1 — 均衡リターン、Pi = lambda × Sigma × w_mkt:

  • 米国株式:5.16%
  • 国際株式:5.41%
  • 米国債券:0.18%

ステップ 2 — 見解の指定:P = [0, 1, -1]、Q = [3%]。

均衡リターンでは、国際株式はすでに債券を 5.23% 上回ると示されています。そのため、3% という見解は均衡に比べて弱気です。Black-Litterman の事後分布の公式を適用すると:

  • 米国株式:4.28%(国際株式との 0.75 の相関を通じて低下)
  • 国際株式:4.07%(5.41% から低下)
  • 米国債券:0.23%(わずかに上昇)

事後リターンは、確信度に応じてリターンを見解の方向へ調整します。これらのリターンを MVO に入力すると、時価総額ウェイトと比べて、株式から債券へウェイトが移ります。その変化は緩やかで、生の MVO が生み出す極端な解を避けます(例 1 と比較してください)。なお、見解は単独で評価するのではなく、常に均衡がすでに示唆している内容と照らし合わせて評価します。

よくある落とし穴

  • MVOは期待リターンの入力値に非常に敏感で、「誤差を増幅するもの」と呼ばれることがあります。リターンがわずかに変わるだけで、ウェイトが大きく変化します
  • 制約のないMVOでは、極端に偏った集中ポジションが生じることがよくあります。必ず制約(ロングオンリー、最大ウェイト、売買回転率の上限など)を追加してください
  • Black-Littermanでは、アナリストがビューへの確信度(Omega)を指定する必要がありますが、その確信度自体も不確実です
  • リスクパリティポートフォリオで株式と同程度のリターンを実現するにはレバレッジが必要となり、借入コストとレバレッジリスクが生じます
  • 運用コストを無視すると、理論上の最適リターンが大幅に損なわれる可能性があります。取引コスト、ビッド・アスク・スプレッド、税金を考慮してください
  • 流動性制約を無視すると、問題が生じる可能性があります。一部の資産クラス(プライベートエクイティ、不動産)は迅速にリバランスできません
  • グライドパスは一般的な投資家を想定しています。個々の状況に合わせて調整が必要な場合があります
  • 将来の関係性を反映していない可能性がある、過去の共分散行列に過度に依存すること

関連項目

  • historical-risk(wealth-management プラグイン):平均分散最適化に用いるボラティリティと相関の入力値
  • forward-risk(wealth-management プラグイン):ポートフォリオ最適化に用いる期待リターン予測とシナリオ分析
  • diversification(wealth-management プラグイン):分散投資の原則は、あらゆる資産配分フレームワークの基盤です
  • bet-sizing(wealth-management プラグイン):配分された資産クラス内でのポジションサイジング
  • rebalancing(wealth-management プラグイン):時間の経過に伴う配分目標の維持
  • quantitative-valuation(wealth-management プラグイン):評価シグナルはTAAの判断に役立ちます
  • retirement-decumulation(wealth-management プラグイン):取り崩し期のグライドパスと、資産配分の選択によって管理すべきリターン順序リスク
  • factor-investing(wealth-management プラグイン):政策ポートフォリオから意図的に逸脱しつつ、許容可能な範囲に収めるファクター傾斜の設定

スクリプトの実行

uv run scripts/asset_allocation.py            # run the demo (uses PEP 723 inline deps)
uv run scripts/asset_allocation.py --verify   # check demo outputs against the worked examples (exit 1 on mismatch)
python3 scripts/asset_allocation.py            # alternative (requires: pip install numpy scipy)

デモでは、上記の計算を出力します。値はこのスキルの計算例と一致します。クラスと関数の一覧を表示するには、--help を実行してください。プログラムから使用する場合は、スクリプトを実行するのではなく、モジュールをインポートしてください。デモは python asset_allocation.py の場合にのみ実行されます。

コメント