バリュエーションには、キャッシュフローが生じる国を反映した株式リスクプレミアムが必要です。Narwhal は国ごとに、成熟市場プレミアム、国のデフォルトスプレッド、カントリーリスクプレミアム、その合計を返します。また同じプレミアムを使う企業の資本コストのルートもあります。
国の株式リスクプレミアムを読み取る
curl -s "https://api.narwhalapi.com/v1/economics/BRA/equity-risk-premium" \
-H "Authorization: Bearer $NARWHAL_API_KEY"{
"country": "BRA",
"as_of": "2026-11-01",
"unit": "percent",
"mature_erp": "3.2973",
"country_default_spread": "2.1300",
"volatility_ratio": "1.5211",
"country_risk_premium": "3.2400",
"total_erp": "6.5373",
"basis": {
"mature_erp": "observed",
"country_default_spread": "table",
"volatility_ratio": "table",
"country_risk_premium": "table",
"total_erp": "table"
},
"methodology_url": "https://narwhalapi.com/methodology/equity-risk-premium"
}数値はすべてパーセントで、as_of はその数値が示す日付です。5つの数値は互いに積み上がっており、株式リスクプレミアムの方法論 で説明しています。
mature_erpは成熟市場、つまり米国の織り込み済みプレミアムです。どの国のレスポンスでも同じ値になります。country_default_spreadは、その国がデフォルトリスクのために成熟市場より上乗せして支払う利回りです。volatility_ratioは株式のボラティリティを国債のボラティリティで割った値です。country_risk_premiumはスプレッドに比率を掛けた値です。ブラジルは 2.13 掛ける 1.5211 で 3.24 です。total_erpはmature_erpにcountry_risk_premiumを足した値です。ブラジルは 3.2973 足す 3.24 で 6.5373 です。
basis オブジェクトは、各部分が observed、modelled、table のどれかを示します。table の値は公表されているカントリーリスクの表に由来します。その行は表と同じ鮮度で、債券利回りが動くたびではなく、表が更新されたときに動きます。米国のレスポンスはスプレッドが0で volatility_ratio が null です。米国は成熟市場なので、total_erp は mature_erp に等しくなります。
プレミアムを株主資本コストにする
ある国のプロジェクトの株主資本コストは、無リスク金利に、キャッシュフローが生じる国の合計プレミアムにベータを掛けた値を足したものです。方法論によれば数値は米ドル建てなので、米国の無リスク金利を使います。スクリプトは、イールドカーブのルートから米国10年債利回りを取得し、ベータを受け取り、GET /v1/economics/equity-risk-premium から全対象国を読み取って、mature_erp に country_risk_premium を足した値が total_erp と一致することを確認してから、その行を使います。
- 入力値を選ぶ 無リスク金利は API から取得します。ベータの1.2は、各自の推定値の仮置きです。プレミアムのルートはベータを返しません。
- スクリプトを実行する 国数と、4か国の株主資本コストを出力します。
import os from decimal import Decimal import requests HEAD = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} API = "https://api.narwhalapi.com" def get(path, **params): r = requests.get(API + path, params=params, headers=HEAD, timeout=15) r.raise_for_status() return r.json() # Risk-free rate: the 10 year US yield, in percent rf = Decimal(get("/v1/economics/USA/yield-curve", maturity="10y")["yields"][0]["yield_percent"]) beta = Decimal("1.2") # your own estimate for the project countries = {c["country"]: c for c in get("/v1/economics/equity-risk-premium")["countries"]} print(len(countries), "countries") for code in ("USA", "IDN", "BRA", "ZAF"): c = countries[code] mature, crp, total = (Decimal(c[k]) for k in ("mature_erp", "country_risk_premium", "total_erp")) assert mature + crp == total print(f"{code} as_of {c['as_of']} mature {mature} crp {crp} total {total} " f"cost of equity {rf + beta * total:.2f}%") - 結果を読む 10年債利回りは4.91%でした。スクリプトは、一覧の175か国から、株主資本コストを米国8.87%、インドネシア11.82、ブラジル12.75、南アフリカ13.55と返しました。
これらはドル建ての割引率です。現地通貨の割引率には、方法論のとおり、2つの通貨のインフレ格差を加える必要があります。
上場企業のベータ、負債コスト、WACC を取得する
上場株式の場合、資本コストのルートは同じ計算を行い、WACC まで求めます。ベータ、無リスク金利、使用したプレミアム、株主資本コスト、負債コスト、税率、ウェイトを1つの回答で返します。既定のプレミアムは、その銘柄の国について Narwhal が出した合計値です。erp で独自の値を送ることもできます。計算式と拒否される場合は、資本コストの方法論 に載っています。
curl -s "https://api.narwhalapi.com/v1/equities/XNAS:MSFT/cost-of-capital" \
-H "Authorization: Bearer $NARWHAL_API_KEY"{
"id": "XNAS:MSFT",
"currency": "USD",
"beta": {
"window": "2y",
"frequency": "weekly",
"observations": 103,
"raw": "1.1507",
"adjusted": "1.1010",
"used": "raw"
},
"risk_free": {
"rate": "4.9100",
"source": "yield_curve",
"as_of": "2026-11-02"
},
"equity_risk_premium": {
"rate": "3.2973",
"source": "narwhal",
"country": "USA",
"as_of": "2026-11-01",
"basis": "observed"
},
"cost_of_equity": "8.7042",
"cost_of_debt": {
"pre_tax": "8.1917",
"after_tax": "6.0922",
"period": "ttm"
},
"tax_rate": {
"rate": "25.6300",
"basis": "table"
},
"weights": {
"equity": "99.0666",
"debt": "0.9334"
},
"wacc": "8.6798",
"warnings": [],
"methodology_url": "https://narwhalapi.com/methodology/cost-of-capital"
}cost_of_equity の 8.7042 は、無リスク金利 4.91 に、素のベータ 1.1507 と プレミアム 3.2973 の積を足した値です。ウェイトは株主資本が99.0666%、負債が0.9334%で、wacc は8.6798%です。完全なレスポンスでは、すべての入力値に根拠と日付が付き、注意が必要な数値には warnings の項目が付きます(ここでは空です)。
プレミアムは時間とともに変わりますか。
はい。履歴ルートで過去の日付が一覧できます。インドネシアは、as_of が 2026-10-28 のとき total_erp が 5.6830、as_of が 2026-11-01 のとき 5.7573 で、その間 country_default_spread は 1.6200 のままでした。mature_erp が 3.2230 から 3.2973 に動き、それで合計が動きました。
バリュエーションに使う金利には、必ず as_of の日付を横に保存して、数字をあとから追えるようにしてください。プレミアムが日付の間でどう動いたかを見たいときは、履歴ルートを読みます。
資本コストのルートが答えられないときはどうなりますか。
422 を返し、欠けている部分を埋める代わりに問題を示します。AAPL の呼び出しは、支払利息が登録されていないという詳細付きで inputs_unavailable を返しました。このルートは銀行と保険会社も拒否します。ルートが受け付ける場合は、独自の erp、risk_free、tax_rate を渡し、コード側で 422 を処理してください。
どの国が対象ですか?
一覧ルートは、上の実行で175か国を返しました。国が載るのは、すべての入力値が揃っている場合だけなので、コードがなければそれは0ではなく行がないという意味です。ブラジル、インドネシア、南アフリカ、米国は返答がありました。
公開。