加薪幅度不低於 CPI 年增率時,加薪就跟上了物價。Narwhal 提供各國的通膨率,下面的 Python 把加薪幅度與通膨率換算成實質變動;對大多數國家,它沒有薪資基準資料。
讀取各國的通膨率
通膨端點回傳一個國家最新的年度與月度物價變動。下面這兩個請求取得的是德國與日本。
curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/economics/DEU/inflation"{
"country": "DEU",
"period": "2026-09",
"year_over_year": "3.3",
"month_over_month": "0.6",
"year_to_date": "3.2",
"released_on": "2026-10-13"
}curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/economics/JPN/inflation"{
"country": "JPN",
"period": "2026-09",
"year_over_year": "2.1",
"month_over_month": "0.0",
"year_to_date": "1.3",
"released_on": "2026-10-23"
}year_over_year 是消費者物價指數相對一年前同月的變動百分比,在最新月份 period,德國為 3.3,日本為 2.1。month_over_month 是相對上個月的變動,year_to_date 是相對 12 月的變動。released_on 是公布日期。這些值是以百分比表示的十進位字串。
與指數交叉驗證
同樣的比率可以用指數重新算出來。observations 端點回傳月度 CPI,下面的回應只保留了德國回傳的 13 個月中的第一個月與最後一個月。
curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/economics/DEU/cpi/observations?start=2025-09&end=2026-09"{
"country": "DEU",
"as_of": "2026-10-13T00:00:00Z",
"index_base": "2020=100",
"observations": [
{
"period": "2025-09",
"value": "122.6"
},
{
"period": "2026-09",
"value": "126.6"
}
],
"next_cursor": null
}126.6 除以 122.6 等於 1.0326,所以指數在 12 個月裡上漲了 3.26%,四捨五入就是 year_over_year 中的 3.3。對日本做同樣的檢查,由 102.2 與 100.1 得到 2.10%。
把加薪與物價對照
Narwhal 對大多數國家沒有薪資或工資基準資料,所以本頁只寫物價這一側。加薪幅度由你自己提供。實質變動等於一加加薪幅度除以一加通膨率,再減一。結果為正,代表薪水比一年前買得到更多東西;結果為負,代表買得到的更少。
- 取得加薪幅度 使用兩個時期之間薪酬的百分比變動,兩次要採用相同的基準,例如稅前月薪。
- 讀取通膨率 請求該國的通膨率,保留
period與year_over_year。 - 計算比值 用一加加薪幅度除以一加通膨率,減去一,再乘以 100。
- 回報結果 寫明國家、通膨數據所屬的月份以及結果的正負。
import json
import os
import urllib.request
from decimal import Decimal
def get(path):
req = urllib.request.Request(
"https://api.narwhalapi.com" + path,
headers={"Authorization": "Bearer " + os.environ["NARWHAL_API_KEY"]},
)
with urllib.request.urlopen(req, timeout=30) as r:
return json.load(r)
def check_raise(country, raise_percent):
latest = get(f"/v1/economics/{country}/inflation")
period = latest["period"]
year, month = period.split("-")
prior = f"{int(year) - 1}-{month}"
index = get(f"/v1/economics/{country}/cpi/observations?start={prior}&end={period}")
values = {o["period"]: Decimal(o["value"]) for o in index["observations"]}
from_index = (values[period] / values[prior] - 1) * 100
inflation = Decimal(latest["year_over_year"])
raise_ = Decimal(raise_percent)
real = ((1 + raise_ / 100) / (1 + inflation / 100) - 1) * 100
print(f"{country} {period}: inflation {inflation}% (from index {from_index:.2f}%), "
f"raise {raise_}%, real change {real:+.2f}%")
check_raise("DEU", "3.0")
check_raise("JPN", "2.5")
| 國家 | 月份 | 通膨 | 加薪 | 實質變動 |
|---|---|---|---|---|
| 德國(DEU) | 2026-09 | 3.3% | 3.0% | -0.29% |
| 日本(JPN) | 2026-09 | 2.1% | 2.5% | +0.39% |
德國 3.0% 的加薪低於 3.3% 的通膨率,所以薪水損失了 0.29% 的購買力。日本 2.5% 的加薪高於 2.1%,所以購買力增加了 0.39%。腳本還會在公布的比率旁邊列印用指數重新算出的比率。
這裡的通膨數字是全國的整體 CPI。它衡量的是平均一籃子商品,所以不會與某個家庭實際感受到的物價變動吻合,而且只涉及價格。與通膨持平的加薪,平均而言能讓購買力維持不變,但它並不能說明原本的薪水是否足夠。
月增率與年初至今提供了什麼資訊?
month_over_month 反映最近單月的變動,在物價快速波動時很有用。year_to_date 是相對上一年 12 月的變動。德國為 3.2,與 126.6 對比 2025 年 12 月指數 122.7 的結果一致。如果薪資每年 1 月調整一次,想知道本年度的漲價已經發生了多少,就可以用它。
為什麼用除法而不是減法?
薪水與物價都是複利變動,所以精確的實質變動是比值。對德國來說,3.0 減去 3.3 是 -0.30 個百分點,而用比值算出來是 -0.29%。在這樣的比率下差距很小,比率越高差距越大。
應該和哪個時期的通膨率對照?
使用在加薪生效時結束的那 12 個月。通膨端點回傳最新的月份;要看更早的月份,可以帶上 start 與 end 呼叫 /v1/economics/{country}/inflation/observations,它會為每個 period 回傳 year_over_year、month_over_month 與 year_to_date。例如,2026 年 7 月生效的加薪,就與 2026 年 7 月那一列對照。
薪資這一側的資料從哪裡來?
來自你自己。使用薪資紀錄、錄用通知或你信任的調查,把加薪幅度以百分比填入。API 只有物價這一側。對加拿大來說,any-series 路由可以搜尋有關薪資的表格,any-series 文件裡有說明,本頁沒有使用。
這種對照能跨國使用嗎?
每一次加薪都與它所在國家自己的物價、以該國貨幣來對照,所以各國的實質變動可以並排來看。這種對照對兩國的薪資水準都沒有說明,也不做貨幣換算。如果需要各國通膨率的排名,比較各國通膨率的指南介紹了請求方式。
發布於 。