公的ライブデータで経済学の演習を作る

教師や学生は、公的なライブデータを演習に変えられます。このページでは2つの演習を扱います。政策金利とインフレ率から求める実質金利と、名目GDP成長率に隠れた物価上昇です。リクエスト、レスポンス、Pythonの計算も示します。

演習1:実質金利

名目金利が購買力の低下を覆い隠すことを、学生が学びます。この演習には、同じ国の政策金利とインフレ率が必要です。下のリクエストは米国の政策金利を返し、次のリクエストは米国のインフレ率を返します。

curl、米国の政策金利
curl -s "https://api.narwhalapi.com/v1/economics/USA/central-bank/policy-rate" \
  -H "Authorization: Bearer $NARWHAL_API_KEY"
レスポンス
{
  "country": "USA",
  "authority": "federal_reserve",
  "currency": "USD",
  "instrument": "federal_funds_target_range",
  "unit": "percent",
  "effective_on": "2026-09-17",
  "observed_on": null,
  "announced_on": null,
  "rate_type": "range",
  "lower_bound": "3.75",
  "upper_bound": "4.00"
}
curl、米国のインフレ率
curl -s "https://api.narwhalapi.com/v1/economics/USA/inflation" \
  -H "Authorization: Bearer $NARWHAL_API_KEY"
レスポンス
{
  "country": "USA",
  "period": "2026-09",
  "year_over_year": "3.7",
  "month_over_month": "0.6",
  "year_to_date": "4.0",
  "released_on": "2026-10-14"
}

政策金利はレンジで返され、lower_bound が 3.75、upper_bound が 4.00 です。そのため、授業で最初に考える問いは、どの1つの数値を使うかです。スクリプトは中間値の 3.875 を使います。インフレ率は、期間 2026-09 の year_over_year が 3.7 です。次の問いが続きます。金利は現在設定されている水準ですが、インフレ率は過去12か月を表すので、得られるのは後ろ向きの実質金利です。投資家に必要なのは何か、学生に考えさせてください。

演習2:GDPに隠れた物価上昇

名目GDP成長率は、産出のドル建て価値の変化です。実質GDP成長率は、そこから価格の変動を除いたものです。両者の差から、名目成長のうちどれだけが価格によるものかを授業で確認できます。水準はGDPのルートから、実質成長率はGDP成長率のルートから取得します。

curl、米国GDPの水準(5四半期分)
curl -s "https://api.narwhalapi.com/v1/economics/USA/gdp/observations?start=2025-Q3&end=2026-Q3" \
  -H "Authorization: Bearer $NARWHAL_API_KEY"
レスポンス
{
  "annualized": true,
  "country": "USA",
  "as_of": "2026-10-29T00:00:00Z",
  "currency": "USD",
  "observations": [
    {
      "period": "2025-Q3",
      "value": "31180493000000"
    },
    {
      "period": "2025-Q4",
      "value": "31462523000000"
    },
    {
      "period": "2026-Q1",
      "value": "31906274000000"
    },
    {
      "period": "2026-Q2",
      "value": "32563030000000"
    },
    {
      "period": "2026-Q3",
      "value": "33010036000000"
    }
  ]
}
curl、実質GDP成長率(1四半期分)
curl -s "https://api.narwhalapi.com/v1/economics/USA/gdp-growth?period=2026-Q3" \
  -H "Authorization: Bearer $NARWHAL_API_KEY"
レスポンス
{
  "country": "USA",
  "period": "2026-Q3",
  "year_over_year": "2.1",
  "quarter_over_quarter": "0.832",
  "released_on": "2026-10-29"
}

水準は現行価格のUSD建てで、annualized は true です。成長率のレスポンスは実質で、2026-Q3 の year_over_year は 2.1 です。2つの呼び出しは同じ四半期、同じ比較期間を指しており、これが重要です。前年比と前期比を混ぜると意味のない答えになります。そのため、割り算をする前に各数値の期間を学生に言わせ、結果の横にノートへ書かせてください。

両方の計算を実行する

  1. 実質金利(近似) 名目金利からインフレ率を引きます。3.875 − 3.7 で 0.175 ポイントです。これは学生が最初に出会う簡便法です。
  2. 実質金利(厳密) 1に名目金利を足した値を、1にインフレ率を足した値で割り、1を引きます。1.03875 ÷ 1.037 − 1 で 0.169% です。2つの答えは小数第3位で異なり、議論の材料になります。
  3. 名目GDP成長率 2026-Q3 の水準を 2025-Q3 の水準で割り、1を引きます。33010036000000 ÷ 31180493000000 − 1 で、結果は 5.87% です。
  4. 実質値から逆算した物価上昇率 1に名目成長率を足した値を、1に実質成長率を足した値で割り、1を引きます。1.0587 ÷ 1.021 − 1 で、結果は 3.69% です。
    Python、両方の演習
    import os
    import requests
    
    BASE = "https://api.narwhalapi.com"
    HEAD = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}
    
    def get(path, **params):
        r = requests.get(BASE + path, params=params, headers=HEAD, timeout=15)
        r.raise_for_status()
        return r.json()
    
    # Exercise 1: the real policy rate
    policy = get("/v1/economics/USA/central-bank/policy-rate")
    lower, upper = float(policy["lower_bound"]), float(policy["upper_bound"])
    rate = (lower + upper) / 2
    inflation = float(get("/v1/economics/USA/inflation")["year_over_year"])
    approx = rate - inflation
    exact = ((1 + rate / 100) / (1 + inflation / 100) - 1) * 100
    print(f"policy {rate}  inflation {inflation}  approx {approx:.3f}  exact {exact:.3f}")
    
    # Exercise 2: how much of nominal GDP growth is price growth
    levels = get("/v1/economics/USA/gdp/observations", start="2025-Q3", end="2026-Q3")
    by_quarter = {o["period"]: float(o["value"]) for o in levels["observations"]}
    nominal = (by_quarter["2026-Q3"] / by_quarter["2025-Q3"] - 1) * 100
    real = float(get("/v1/economics/USA/gdp-growth", period="2026-Q3")["year_over_year"])
    prices = ((1 + nominal / 100) / (1 + real / 100) - 1) * 100
    print(f"nominal {nominal:.2f}  real {real}  implied price growth {prices:.2f}")
演習入力値答え
実質金利(近似)3.875 と 3.70.175 ポイント
実質金利(厳密)3.875 と 3.70.169パーセント
名目GDP成長率31180493000000 から 330100360000005.87パーセント
実質値から逆算した物価上昇率5.87 と 2.13.69パーセント

逆算した物価上昇率は、最初の演習のインフレ率 3.7 に近い値です。消費者物価とGDPに含まれる価格は対象とするバスケットが異なるため、別の四半期にはもっと差が開く理由を、授業で問いかけてください。

同じデータで、ほかにどんな演習ができますか?

  • インフレ率:1つのレスポンスにある前月比と前年比のフィールドを比べ、中央銀行が引用するのはどちらかを問います。インフレ計算ツールで、学生は結果を手計算で確かめられます。
  • イールドカーブ:イールドカーブのルートから2年債と10年債の利回りを取り、スプレッドを計算します。イールドカーブの確認方法と同じ手順です。
  • GDP成長率:別の国で演習2を繰り返します。まず各国の annualized フラグを比べてください。

どのルートも計算の出発点となる数値を返すので、学生は各演習の入力値を公表値と照合できます。

学生は自分の国を使えますか?

多くの場合は可能ですが、先に対応範囲を確認してください。インドネシアとブラジルは、インフレ率と政策金利の両方を返しました。メキシコはインフレ率を返しましたが、政策金利は404とコード series_not_found でした。自分で試した国の短いリストを学生に渡し、404はノートブック上でデータの欠損として扱わせてください。

GDPの水準に annualized フラグが付くものがあるのはなぜですか?

米国、日本、カナダは annualized が true で、四半期の水準が年率で表されています。英国とドイツにはこのフラグがありませんでした。同じ系列の2つの水準の比は影響を受けないので、演習2は成り立ちます。ただし、2か国の水準は、フラグ、通貨、期間がそろうまで比較できません。

授業で使えるほど新しいデータですか?

各レスポンスには released_on と period があるため、学生は数値の新しさを確認できます。授業では、データを取得する日を固定して出力を保存してください。後で呼び出すと、より新しい期間が返り、答えが変わることがあるためです。

公開。

次のステップ