過去の予算や契約額を現在の価格に換算する

過去の予算や契約額を現在のものと比べる報告書では、すべてを1つの月の価格水準に換算する必要があります。基準月を選び、物価指数を明示し、結果に注記を付けます。Narwhalは任意の月と最新公表分の消費者物価指数を返すので、各金額に最新の指数を掛け、その金額の月の指数で割ります。

換算した報告書で必ず決めるべき3つの選択

数年前に結んだリース契約を今年の予算と並べる報告書は、価値の異なるお金を比べています。財務企画や契約の担当者は、すべての金額を1つの月の価格水準に換算してこれを解決します。結果を説明できるかどうかは、3つの選択で決まります。基準月は、すべての金額を換算する先の月です。指数は、月どうしを行き来するのに使う物価系列です。注記は、その両方を読者に伝える一文です。APIは指数の値を提供し、報告書は選択内容を明記します。

観測値エンドポイントは、ある国の総合消費者物価指数を月ごとに返します。このリクエストは、オフィスのリース契約があった2012年3月の指数を読み取ります。

curl、リース契約の価格が決まった月の指数
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 は指数系列の基準期間を示します。同じ系列の2つの月の比には影響しません。

最新の公表月を基準月に使う

period を指定しない CPI エンドポイントは、最新に公表された指数を返します。その月を報告書全体の基準月に使うと、すべての行が同じ価格水準に換算されます。

curl、最新の指数
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 は公表日です。換算後の金額は、報告書を実行した日の価格水準ではなく、その月の価格水準で表されます。報告書にその旨を明記してください。

契約と予算の一覧を一度に換算する

  1. 各金額を、価格が決まった月とともに一覧にする 報告された年ではなく、その価格が適用された月を使います。契約であれば、通常は締結月か物価スライドの月です。
  2. 系列を一度だけ読み取る 観測値のリクエスト1回で、対象の全期間をカバーできます。スクリプトは limit を 1000 にして 2012-01 から 2024-12 までを取得し、period をキーにした辞書を作ります。
  3. Decimal で掛け算と割り算をする 各金額に基準月の指数を掛け、その金額の月の指数で割ります。セント単位への丸めは、最後に1回だけ行います。
  4. 表と一緒に注記を出力する 出力の1行目に基準月、国、指数の基準を明記するので、表だけが単独で読まれることはありません。
    Python、換算後の金額表
    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
元の月元の各金額の価格が決まった月を、換算後の列の隣の列に表示する
丸め最後にセント単位へ1回だけ丸め、その旨を明記する

元の金額と換算後の金額を並べて残しておきます。そうすれば、レビューする人は掛け算1回でどの行も検算できます。

年間予算には、1つに決まる価格の月がありません。その年の中から、予算が承認された月など1つの月を選んでその予算の全行に適用し、注記にその月を明記します。代わりに、その年の12か月分の観測値の平均を使う方法もあり、報告書はどちらを使うかを明記すべきです。

契約にはどの物価指数を使うべきですか?

契約が指定している指数を使ってください。APIが返すのは、ある国の総合消費者物価指数です。リース契約や供給契約がコア指数、地域別指数、業種別指数に連動している場合、換算後の数値は契約上の数値と異なるため、報告書を出す前に指数を確認してください。

1つの報告書で複数の国の金額を換算できますか?

換算は1か国ずつ行ってください。各系列には独自の基準があり、ある国の指数の値は別の国の物価について何も示さないためです。結果を1つの通貨で示すには、日付を明示した為替レートで、換算後の金額を別の手順として両替してください。

必要な月がまだ公表されていない場合はどうなりますか?

公表値のない期間をリクエストすると、コード series_not_found の 404 エラーレスポンスが返ります。米国の場合、執筆時点で2026年10月を指定するとそうなります。CPIエンドポイントの period を基準月に使い、注記にその旨を書いてください。

公開。

次のステップ