用即時官方資料設計經濟學教學習題

老師或學生可以把即時官方資料變成練習題。本頁示範兩個練習:由政策利率與通膨計算實質利率,以及名目 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,所以課堂上的第一個問題是該用哪一個數值。腳本取中間值 3.875。通膨數據是 2026-09 期間的 year_over_year,為 3.7。接著是第二個問題:利率是今天設定的水準,而通膨反映的是過去十二個月,因此得到的是回溯式的實質利率。請讓學生想一想,投資人真正需要知道什麼。

練習2:隱藏在 GDP 中的物價成長

名目 GDP 成長是產出美元價值的變化,實質 GDP 成長則排除了價格變動。兩者的差距可以讓全班看出,名目成長中有多少來自價格。GDP 水準值來自 GDP 路由,實質成長率來自 GDP 成長率路由。

curl,美國 GDP 水準值(五個季度)
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 成長率(一個季度)
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"
}

GDP 水準值按現價計算,單位為 USD,annualized 為 true。成長率的回應是實質值,2026-Q3 的 year_over_year 為 2.1。兩次呼叫對應同一個季度、同一個比較區間,這一點很重要。把年增率和季增率混在一起,結果毫無意義,所以請讓學生在相除之前先說出每個數字的區間,並在筆記裡寫在結果旁邊。

執行兩個計算

  1. 實質利率(近似值) 用名目利率減去通膨率:3.875 減 3.7 等於 0.175 個百分點。這是學生最先接觸到的簡便算法。
  2. 實質利率(精確值) 用 1 加名目利率,除以 1 加通膨率,再減去 1:1.03875 除以 1.037 再減 1 等於 0.169%。兩個答案在小數點後第三位出現差異,是個不錯的討論點。
  3. 名目 GDP 成長率 用 2026-Q3 的水準值除以 2025-Q3 的水準值,即 33010036000000 除以 31180493000000,再減去 1,結果為 5.87%。
  4. 隱含物價成長率 用 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.7百分之0.169
名目 GDP 成長率31180493000000 到 33010036000000百分之5.87
隱含物價成長率5.87 和 2.1百分之3.69

隱含的物價成長率與第一個練習中的通膨率 3.7 很接近。消費者物價與 GDP 內部的價格涵蓋的商品組合不同,可以請全班想一想,為什麼在其他季度兩者可能相差更大。

同樣的資料還適合做哪些練習?

  • 通膨:在同一個回應中比較月增率與年增率欄位,問一問央行會引用哪一個。學生可以用通膨計算器手動核對結果。
  • 殖利率曲線:從殖利率曲線路由取得 2 年期與 10 年期殖利率並計算利差,做法與殖利率曲線是否倒掛的查看方法相同。
  • GDP 成長:換一個國家重複練習 2,並先比較各國的 annualized 標記。

每個路由都會回傳計算起點的數字,因此學生可以把每個練習的輸入與已公布的數據逐一核對。

學生可以用自己的國家嗎?

通常可以,但要先確認涵蓋範圍。印尼和巴西同時回傳了通膨率與政策利率;墨西哥回傳了通膨,政策利率則是 404,代碼為 series_not_found。可以給學生一份你自己測試過的國家短名單,並讓他們在筆記本中把 404 當作資料缺口來處理。

為什麼有些 GDP 水準值帶有 annualized 標記?

美國、日本和加拿大回傳的 annualized 為 true,因此其季度水準值以年率表示。英國和德國沒有回傳這個標記。同一序列中兩個水準值的比值不受影響,所以練習 2 可行;但兩個國家的水準值,只有在標記、幣別與期間一致時才可比較。

資料夠新,可以用在課堂上嗎?

每個回應都帶有 released_on 和 period,學生可以看出一個數字有多舊。上課時請固定全班取資料的日期並保存輸出,因為之後再呼叫可能會回傳更新的期間,得出不同的答案。

發布於 。

後續步驟