カントリーリスクプレミアムを可視化する

7.2.1

カントリーリスクプレミアムを可視化する

最終更新 2020-01-29 読了時間 2 分
まとめ
  • カントリーリスクプレミアムを棒グラフで国別比較し、平均線との乖離を視覚化する。
  • 地域別のグループ化と色分けで、新興国と先進国のリスク差を直感的に把握する。
  • DCF評価やWACC算出に使うリスクプレミアムの選定根拠を、グラフで説明可能にする。

直感 #

カントリーリスクプレミアムは、ある国への投資に対して投資家が要求する追加リターンです。国債利回りやCDSスプレッドから推計され、同じ地域内でも経済・政治状況によって大きな差があります。DCF法による企業価値評価では、WACCの構成要素として資本コストに直接影響するため、定量的な比較が重要です。

詳細な解説 #

国別リスクプレミアムの棒グラフ比較 #

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pathlib import Path

plt.style.use("scripts/k_dm.mplstyle")

data = pd.DataFrame(
    {
        "country": ["Japan", "United States", "Brazil", "India", "South Africa", "Turkey", "Mexico"],
        "risk_premium": [0.012, 0.018, 0.038, 0.031, 0.042, 0.055, 0.029],
        "region": ["Asia", "Americas", "Americas", "Asia", "Africa", "Europe", "Americas"],
    }
)

data = data.sort_values("risk_premium")
fig, ax = plt.subplots(figsize=(8, 4.8))
bars = ax.bar(data["country"], data["risk_premium"] * 100, color="#3b82f6")

average = data["risk_premium"].mean() * 100
ax.axhline(average, color="#ef4444", linestyle="--", linewidth=1.2, label=f"平均 {average:.1f}%")

for bar, value in zip(bars, data["risk_premium"]):
    ax.text(
        bar.get_x() + bar.get_width() / 2,
        value * 100 + 0.6,
        f"{value*100:.1f}%",
        ha="center",
        fontsize=10,
    )

ax.set_ylabel("リスクプレミアム(%)")
ax.set_title("主要国のリスクプレミアム比較(サンプルデータ)")
ax.set_ylim(0, 6.5)
ax.grid(axis="y", alpha=0.3)
ax.legend(loc="upper left")

output = Path("static/images/finance/visualize/country_risk_premium.svg")
output.parent.mkdir(parents=True, exist_ok=True)
fig.tight_layout()
fig.savefig(output)

国別のリスクプレミアムを棒グラフとハイライトで比較


地域別の色分けとランキング #

地域ごとに色を変えると、先進国と新興国のリスク差がより明確になります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
region_colors = {"Asia": "#3b82f6", "Americas": "#10b981", "Africa": "#f59e0b", "Europe": "#ef4444"}

data = data.sort_values("risk_premium")
colors = [region_colors[r] for r in data["region"]]

fig, ax = plt.subplots(figsize=(8, 4.8))
bars = ax.barh(data["country"], data["risk_premium"] * 100, color=colors)

for bar, value in zip(bars, data["risk_premium"]):
    ax.text(bar.get_width() + 0.1, bar.get_y() + bar.get_height() / 2,
            f"{value*100:.1f}%", va="center", fontsize=10)

ax.set_xlabel("リスクプレミアム(%)")
ax.set_title("国別リスクプレミアム(地域色分け)")
ax.grid(axis="x", alpha=0.3)

# 凡例
from matplotlib.patches import Patch
legend_elements = [Patch(facecolor=c, label=r) for r, c in region_colors.items()]
ax.legend(handles=legend_elements, loc="lower right")

fig.tight_layout()
plt.show()

リスクプレミアムの分布と要約統計量 #

国ごとのばらつきを数値でも確認します。

1
2
3
4
print(f"平均:   {data['risk_premium'].mean()*100:.2f}%")
print(f"中央値: {data['risk_premium'].median()*100:.2f}%")
print(f"標準偏差: {data['risk_premium'].std()*100:.2f}%")
print(f"最大-最小: {(data['risk_premium'].max() - data['risk_premium'].min())*100:.2f}%")

活用のヒント #

  • 同じ地域でもリスクプレミアムの差が大きい場合、加重平均や地域インデックスを算出するときに調整が必要です。
  • 最新データはNYU SternのCountry Default Spreads and Risk Premiumsなどで定期的に更新されます。自動取得スクリプトを組み合わせると、月次レポートの作成が効率化できます。
  • プロジェクト評価(資本コスト)に使う場合は、社債スプレッドや為替ボラティリティと合わせて複数指標の比較チャートを作ると説得力が増します。
  • 新興国への投資判断では、リスクプレミアムの時系列推移も重要です。急上昇はソブリンリスクの高まりを示唆します。