과거 예산이나 계약 금액을 현재 금액과 비교하는 보고서는 모두를 한 달의 물가 기준으로 환산해야 합니다. 기준월을 고르고, 물가지수를 밝히고, 결과에 표기를 붙입니다. Narwhal은 어느 달이든 소비자물가지수와 가장 최근 발표분을 반환하므로, 각 금액에 최신 지수를 곱하고 해당 금액이 속한 달의 지수로 나눕니다.
환산한 보고서가 반드시 정해야 하는 세 가지 선택
몇 년 전에 체결한 임대 계약을 올해 예산 옆에 놓는 보고서는 서로 다른 가치의 돈을 비교하는 셈입니다. 재무 기획과 계약 담당자는 모든 금액을 한 달의 물가 기준으로 환산해 이를 바로잡으며, 결과를 뒷받침할 수 있는지는 세 가지 선택에 달려 있습니다. 기준월은 모든 금액을 환산해 맞추는 달입니다. 지수는 달 사이를 오가는 데 쓰는 물가 계열입니다. 표기는 독자에게 이 둘을 알려 주는 문장입니다. API는 지수 값을 제공하고, 보고서는 선택한 내용을 밝힙니다.
관측값 엔드포인트는 한 나라의 종합 소비자물가지수를 월별로 반환합니다. 이 요청은 사무실 임대 계약이 있던 2012년 3월의 지수를 읽습니다.
curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/economics/USA/cpi/observations?start=2012-03&end=2012-03"{
"country": "USA",
"as_of": "2026-10-14T00:00:00Z",
"index_base": "1982-84=100",
"observations": [
{
"period": "2012-03",
"value": "229.392"
}
],
"next_cursor": null
}start와 end에는 YYYY-MM을 넣습니다. value는 소수 문자열이고, index_base는 지수 계열의 기준 기간을 나타내며 같은 계열의 두 달 사이 비율에는 영향을 주지 않습니다.
가장 최근 발표된 달을 기준월로 쓰기
period 없이 호출한 CPI 엔드포인트는 가장 최근에 발표된 지수를 반환합니다. 그 달을 보고서 전체의 기준월로 쓰면 모든 줄이 같은 물가 기준으로 환산됩니다.
curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/economics/USA/cpi"{
"country": "USA",
"period": "2026-09",
"value": "336.940",
"index_base": "1982-84=100",
"released_on": "2026-10-14"
}period는 기준월, value는 지수, released_on은 발표일입니다. 환산한 금액은 보고서를 실행한 날의 물가가 아니라 그 달의 물가 기준으로 표현됩니다. 보고서에 그렇게 밝혀 두세요.
계약과 예산 목록을 한 번에 환산하기
- 각 금액을 가격이 정해진 달과 함께 나열하기 보고된 연도가 아니라 그 가격이 적용된 달을 쓰세요. 계약이라면 보통 체결한 달이나 물가 연동을 적용한 달입니다.
- 계열을 한 번만 읽기 관측값 요청 한 번으로 전체 기간을 다룰 수 있습니다. 스크립트는
limit을 1000으로 두고 2012-01부터 2024-12까지 요청해period를 키로 하는 딕셔너리를 만듭니다. - Decimal로 곱하고 나누기 각 금액에 기준월 지수를 곱하고 그 금액이 속한 달의 지수로 나눕니다. 센트 단위 반올림은 마지막에 한 번만 합니다.
- 표와 함께 표기 출력하기 출력의 첫 줄에 기준월, 나라, 지수 기준을 적어 두므로, 표만 따로 떼어서 읽을 수 없습니다.
import json import os import urllib.request from decimal import Decimal, ROUND_HALF_UP 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) latest = get("/v1/economics/USA/cpi") base_month, cpi_base = latest["period"], Decimal(latest["value"]) series = get("/v1/economics/USA/cpi/observations?start=2012-01&end=2024-12&limit=1000") cpi = {o["period"]: Decimal(o["value"]) for o in series["observations"]} lines = [ ("Office lease", "2012-03", "480000"), ("Software contract", "2018-06", "120000"), ("Equipment purchase", "2022-01", "75000"), ] print(f"All amounts in {base_month} prices, US CPI {cpi_base}, base {latest['index_base']}") for name, month, amount in lines: restated = (Decimal(amount) * cpi_base / cpi[month]).quantize(Decimal("0.01"), ROUND_HALF_UP) print(f"{name:20} {month} {Decimal(amount):>10,} index {cpi[month]} restated {restated:>12,}")
2012년 3월의 임대 계약 480,000은 2026년 9월 물가 기준으로 705,042.90이 됩니다. 기준월 지수를 임대 계약 월 지수로 나누면 1.469이므로, 이 계열의 물가는 그 기간에 46.9% 올랐습니다. 소프트웨어 계약은 33.7%, 장비 구매는 19.8% 올랐습니다.
All amounts in 2026-09 prices, US CPI 336.940, base 1982-84=100
Office lease 2012-03 480,000 index 229.392 restated 705,042.90
Software contract 2018-06 120,000 index 251.989 restated 160,454.62
Equipment purchase 2022-01 75,000 index 281.148 restated 89,883.26환산한 열에 표기를 붙이는 방법
| 항목 | 보고서 문구 |
|---|---|
| 기준월 | 2026년 9월 물가 기준, 보고서를 실행했을 때 발표되어 있던 가장 최근 달 |
| 지수 | 미국 소비자물가지수, 종합, 기준 1982-84=100 |
| 원래 달 | 원래 금액마다 가격이 정해진 달을 환산한 열 옆 열에 표시하기 |
| 반올림 | 마지막에 센트 단위로 한 번만 반올림하고 그 사실을 밝히기 |
원래 금액과 환산 금액을 나란히 두세요. 그러면 검토자가 곱셈 한 번으로 어느 줄이든 확인할 수 있습니다.
연간 예산에는 하나로 정해진 가격 시점의 달이 없습니다. 예산이 승인된 달처럼 그해의 한 달을 골라 그 예산의 모든 줄에 적용하고, 표기에 그 달을 밝히세요. 대안은 그해 12개월 관측값의 평균이며, 어느 쪽을 쓰든 보고서에 밝혀야 합니다.
계약에는 어느 물가지수를 써야 하나요?
계약에 명시된 지수를 쓰세요. API가 반환하는 것은 한 나라의 종합 소비자물가지수입니다. 임대 계약이나 공급 계약이 근원, 지역, 업종 지수에 연동되어 있다면 환산한 수치는 계약상의 수치와 달라지므로, 보고서를 내보내기 전에 지수를 확인하세요.
한 보고서에서 여러 나라의 금액을 환산할 수 있나요?
환산은 한 번에 한 나라씩 하세요. 각 계열은 고유한 기준이 있고, 한 나라의 지수 값은 다른 나라의 물가에 대해 아무것도 말해 주지 않기 때문입니다. 결과를 한 통화로 보여 주려면, 날짜를 밝힌 환율로 환산한 금액을 별도 단계에서 환전하세요.
필요한 달이 아직 발표되지 않았다면 어떻게 되나요?
발표된 값이 없는 기간을 요청하면 코드 series_not_found와 함께 404 문제 응답이 반환됩니다. 미국의 경우, 작성 시점에 2026년 10월을 요청하면 그렇게 됩니다. CPI 엔드포인트의 period를 기준월로 쓰고 표기에 그렇게 밝히세요.
에 게시되었습니다.