老师或学生可以把实时官方数据变成练习题。本页演示两个练习:由政策利率和通胀计算实际利率,以及名义 GDP 增长中隐含的价格增长,并给出请求、响应和 Python 计算。
练习1:实际利率
学生由此认识到,名义利率会掩盖购买力的下降。这个练习需要同一个国家的政策利率和通胀率。下面的请求返回美国的政策利率,再下一个请求返回美国的通胀。
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 -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 -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 -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。两次调用对应同一个季度、同一个比较跨度,这一点很重要。把同比增速和环比增速混在一起,结果毫无意义,所以请让学生在相除之前先说出每个数字的跨度,并在笔记里写在结果旁边。
运行两个计算
- 实际利率(近似值) 用名义利率减去通胀率:3.875 减 3.7 等于 0.175 个百分点。这是学生最先接触到的简便算法。
- 实际利率(精确值) 用 1 加名义利率,除以 1 加通胀率,再减去 1:1.03875 除以 1.037 再减 1 等于 0.169%。两个答案在小数点后第三位出现差异,是个不错的讨论点。
- 名义 GDP 增长率 用 2026-Q3 的水平值除以 2025-Q3 的水平值,即 33010036000000 除以 31180493000000,再减去 1,结果为 5.87%。
- 隐含价格增长率 用 1 加名义增长率,除以 1 加实际增长率,即 1.0587 除以 1.021,再减去 1,结果为 3.69%。
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.7 | 0.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,学生可以看出一个数字有多旧。上课时请固定全班取数的日期并保存输出,因为之后再调用可能会返回更新的期间,得出不同的答案。
发布于。