コンテンツへスキップ
🛠️ToolsShed

ポートフォリオリバランサー

投資ポートフォリオを目標配分にリバランスするための売買額を計算します。

%
%
%
資産現在 ($)現在 %目標 %アクション
US Stocks$50,000.0055.56%60.00%+$4,000.00
Bonds$30,000.0033.33%30.00%-$3,000.00
International$10,000.0011.11%10.00%-$1,000.00
合計$90,000.00100%100.00%
= 過度に配分(売却)
= 不足配分(購入)
バランス済み

このツールについて

ポートフォリオ・リバランサーは、時間とともに目標資産配分を維持したい投資家にとって必須のツールです。市場の変動により、ポートフォリオの実際の配分が意図した目標からずれていき、これはリスク増加またはリターン低下につながる可能性があります。このツールは、ポートフォリオを目標配分に戻すために各資産をどの程度買い付けまたは売却すべきかを素早く計算するのに役立ちます。

ポートフォリオ・リバランサーを使用するには、現在の保有資産とその現在の市場価値を入力し、各資産クラスの目標配分比率を指定します。ツールは即座に、ウエイトが低い位置を買うか、ウエイトが高い位置を売るかかどうかを含めて調整の必要な金額またはパーセンテージを計算します。これは、複数の資産クラスを管理する投資家、四半期または年間でリバランスする人、または感情的な取引決定を避けて戦略的計画に固執したい人にとって特に有価値です。

定期的なリバランスは、パフォーマンス向上資産からの利益を確定しながら、パフォーマンス低下資産の下げを買い付けるのに役立ちます。これはトレンドを追い求める誘惑を減らし、規律ある投資アプローチです。税金と取引コストが適用される場合があることに注意してください。取引を実行する前に、ファイナンシャルアドバイザーに相談することを検討してください。このツールは計算を提供し、変更を実装する時期と方法はあなたが管理します。

よくある質問

コード実装

def rebalance_portfolio(holdings: dict, total_value: float = None) -> dict:
    """
    holdings: {'AssetName': {'current_value': 50000, 'target_pct': 60}}
    Returns buy/sell amounts needed
    """
    if total_value is None:
        total_value = sum(h['current_value'] for h in holdings.values())

    results = {}
    for name, h in holdings.items():
        current = h['current_value']
        target_pct = h['target_pct']
        current_pct = (current / total_value) * 100 if total_value > 0 else 0
        target_value = (target_pct / 100) * total_value
        diff = target_value - current
        results[name] = {
            'current': current,
            'current_pct': round(current_pct, 2),
            'target_pct': target_pct,
            'target_value': round(target_value, 2),
            'action': round(diff, 2),
            'action_type': 'BUY' if diff > 0 else 'SELL' if diff < 0 else 'HOLD'
        }
    return results

# Example
portfolio = {
    'US Stocks':      {'current_value': 50000, 'target_pct': 60},
    'Bonds':          {'current_value': 30000, 'target_pct': 30},
    'International':  {'current_value': 10000, 'target_pct': 10},
}
result = rebalance_portfolio(portfolio)
total = sum(h['current_value'] for h in portfolio.values())
print(f"Total Portfolio: ${total:,.0f}")
for name, r in result.items():
    action = "BUY" if r['action'] > 0 else "SELL"
    print(f"{name}: {r['current_pct']}% → {r['target_pct']}%  |  {action} ${abs(r['action']):,.0f}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.