2026年9月,美国消费者价格同比上涨 3.7%,环比上涨 0.6%。两个比率用同一公式得出,即最新指数除以较早指数再减 1,通胀端点返回的就是已经算好的结果。
用 API 获取 CPI 比率
- 设置你的 API 密钥 获取免费密钥,并保存在名为
NARWHAL_API_KEY的环境变量中。请求使用基础 URLhttps://api.narwhalapi.com和请求头Authorization: Bearer YOUR_KEY;REST 和 MCP 共用同一个密钥。 - 读取现成的通胀率
year_over_year、month_over_month、year_to_date和released_on使用通胀端点获取。比率是以百分比表示的十进制字符串,需要对应期间的头条数字时,直接使用返回的比率即可。curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \ "https://api.narwhalapi.com/v1/economics/USA/inflation" - 用指数水平计算比率 CPI 观测值端点返回
period和value行,index_base为1982-84=100。这个脚本按 period 查找上个月和上年同月,在所需观测值都有的情况下计算比率。import os import requests r = requests.get( "https://api.narwhalapi.com/v1/economics/USA/cpi/observations", params={"start": "2025-09", "limit": 24}, headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}, timeout=10, ) r.raise_for_status() cpi = {o["period"]: float(o["value"]) for o in r.json()["observations"]} latest = max(cpi) # "2026-09" year, month = latest.split("-") prev_month = f"{year}-{int(month) - 1:02d}" if month != "01" else f"{int(year) - 1}-12" prev_year = f"{int(year) - 1}-{month}" print("MoM %.2f%%" % ((cpi[latest] / cpi[prev_month] - 1) * 100)) print( "YoY %.2f%%" % ((cpi[latest] / cpi[prev_year] - 1) * 100) if prev_year in cpi else "year-ago month not in range" ) - 查看返回的期间 所有账户都可读取完整历史。返回的第一个期间显示序列从何时开始,以及你的计算可以从何处开始。
计算环比:用本月 CPI 除以上月 CPI,减去 1 后乘以 100。计算同比:以一年前的同一个月作为分母。通胀端点也会在 year_over_year 和 month_over_month 中直接返回这两个总体比率。
对于自定义区间,比如 3 个月或自某个日期以来,用期末指数除以期初指数再减 1,乘以 100 得到百分比。请选择与你要比较的区间相符的起始期间;现成的月度或年度比率与该区间不符时,就使用指数水平。
在表格中计算 CPI 变化,或不写代码直接读取比率
在 Google 表格中,粘贴期间之前,先通过“格式”“数字”“纯文本”把 A 列设为纯文本。表格可能会把 2026-09 变成日期,导致文本查找失败。A 列放期间文本,B 列放对应的 CPI 值。Excel 中的公式也使用同样的期间加数值的排列。
=VLOOKUP("2026-09",A:B,2,FALSE)/VLOOKUP("2026-08",A:B,2,FALSE)-1将结果格式化为百分比。请按期间查找各月,而不要假定相邻的行就是相邻的月份:否则缺失一个观测值就可能使比较发生错位。同比需要一年前的同一个月,因此请至少请求 13 个月的水平值,或使用现成的 year_over_year 值。Narwhal 通胀页面也会显示各国的比率。
要在表格中计算2026年9月的年初至今,按 period 查找2026年9月和2025年12月,并在同样的除法中使用这两个水平。分母换成12月的水平,减法和百分比格式保持不变。
选择适合你计算的 CPI 方式
| 情况 | 最合适的方法 | 原因 |
|---|---|---|
| 需要头条通胀率 | 通胀端点 | 直接返回现成的 year_over_year 和 month_over_month |
| 需要 3 个月或自某个日期以来的比率 | CPI 指数水平 | 使用区间起点和终点的水平 |
为什么我算出的 CPI 与公布的比率不同?
发布机构对指数和比率分别四舍五入,所以由指数水平算出的结果在小数点后第二位可能不同。就2026年9月而言,336.940 除以 334.980 得到示例中的月度比率。Python 计算显示两位小数,而 API 的月度比率为一位小数。比较这些数字时,请留意计算值与返回比率的精度差异。
如果缺少某个月的 CPI 怎么办?
不要对缺失的月份做插值。以2026年9月的示例为例,美国序列始于2025年11月,序列中没有2025年10月的观测值。不要假定响应包含连续13个月的数据行。把请求范围放宽并不会让缺失的观测值出现,请按你需要的期间来查找。
在 2026 年 9 月的示例中,Python 脚本会将环比和同比比率打印到小数点后两位。总体年度通胀率请使用通胀端点。
可以把月度 CPI 比率年化吗?
可以。把 MoM 写成小数,用 (1 + MoM)^12 - 1 把月度比率换算成年度比率。对于2026年9月,示例中的月度计算会得出那里列出的年化结果。同比使用上年同月的实际指数,因此要与月度比率的年化分开计算。
计算示例:2026年9月美国 CPI
从2026年9月 CPI 336.940 和2026年8月 CPI 334.980 开始。用9月水平除以8月水平,减 1 再乘以 100,得到环比。年初至今则以2025年12月 CPI 324.054 为分母,套用同一公式。
2026年9月的通胀响应中 released_on 为 2026-10-14。年度头条比率请读取其 year_over_year 字段;上面与12月的比较是年初至今。如果在你选定的区间内 CPI 下降,算出的比率为负,表示物价下跌。
| 2026年9月指标 | 计算方式或返回字段 | 结果(百分比) |
|---|---|---|
| 由指数水平算出的环比 | (336.940 / 334.980 - 1) × 100 | 0.585,显示为 0.59 |
| 由指数水平算出的年初至今 | (336.940 / 324.054 - 1) × 100 | 3.98 |
| 年化后的月度比率 | ((336.940 / 334.980)^12 - 1) × 100 | 7.25 |
| 公布的环比 | month_over_month | 0.6 |
| 公布的年初至今 | year_to_date | 4.0 |
| 公布的同比 | year_over_year | 3.7 |
发布于。