CPI 前年同月比と前月比の計算方法

2026年9月、米国の消費者物価は前年同月比で3.7%、前月比で0.6%上昇しました。どちらの率も同じ式、最新の指数を以前の指数で割って1を引く計算で求まり、インフレーションのエンドポイントは計算済みの値を返します。

APIでCPIの変化率を取得する

  1. APIキーを設定 無料のキーを取得し、NARWHAL_API_KEY という環境変数に保存してください。リクエストはベースURL https://api.narwhalapi.com とヘッダー Authorization: Bearer YOUR_KEY を使います。RESTとMCPで同じキーを共有します。
  2. 計算済みのインフレ率を読み取る year_over_year、month_over_month、year_to_date、released_on には、インフレーションのエンドポイントを使います。率はパーセントで表した10進数の文字列なので、その期間の見出しの数値が必要なときは、返された率をそのまま使えます。
    curl、計算済みの率
    curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
      "https://api.narwhalapi.com/v1/economics/USA/inflation"
  3. 指数水準から変化率を計算する CPI観測値のエンドポイントは、period と value の行を返し、index_base は 1982-84=100 に設定されています。このスクリプトは、前月と前年同月を period で探し、必要な観測値がそろっていれば変化率を計算します。
    Python、指数水準からの前月比
    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"
    )
  4. 返された期間を確認する すべてのアカウントで全履歴を取得できます。最初に返された期間が、系列の開始点と、計算を始められる位置を示します。

前月比は、今月のCPIを先月のCPIで割り、1を引いて100を掛けます。前年比は、1年前の同じ月を分母にします。インフレーションのエンドポイントは、どちらの総合の変化率もyear_over_yearとmonth_over_monthで計算済みの値として返します。

3か月間や特定の日付からの変化など、任意の期間では、終点の指数を起点の指数で割って1を引きます。パーセントにするには100を掛けます。比較したい期間に合わせて起点の期間を選んでください。計算済みの月次や年次の率がその期間に合わないときは、指数水準を使います。

シートでCPIの変化を計算する、またはコードなしで率を読む

Googleスプレッドシートでは、期間を貼り付ける前に、A列の書式を「書式」「数字」「書式なしテキスト」の順で書式なしテキストにします。スプレッドシートは 2026-09 を日付に変えてしまうことがあり、その場合はテキストの検索が一致しなくなります。A列に期間のテキスト、B列にそのCPI値を入れます。Excelの数式でも、同じ期間と値の並びを使います。

2026年9月の前月比
=VLOOKUP("2026-09",A:B,2,FALSE)/VLOOKUP("2026-08",A:B,2,FALSE)-1

結果はパーセントで表示します。隣り合う行が隣り合う月だと決めつけず、期間で各月を引いてください。観測値が1つ欠けると、比較がずれるおそれがあります。前年比には1年前の同じ月が必要なので、少なくとも13か月分の水準をリクエストするか、計算済みのyear_over_yearの値を使ってください。Narwhalのインフレーションのページでも、各国の変化率を確認できます。

シートで2026年9月の年初来を計算するには、2026年9月と2025年12月を period で探し、その水準を同じ割り算に使います。分母は12月の水準に変わりますが、引き算とパーセント表示は同じです。

計算に使うCPIの方法を選ぶ

状況適した方法理由
見出しのインフレ率が必要インフレーションのエンドポイントyear_over_yearとmonth_over_monthを計算済みの値で返します
3か月間や特定の日付からの率が必要CPIの指数水準期間の始めと終わりの水準を使います

計算したCPIが公表値と違うのはなぜですか?

公表機関は指数と変化率を別々に丸めるため、指数水準からの計算では小数第2位が異なることがあります。2026年9月については、336.940を334.980で割ると、計算例の月次の率になります。Pythonの計算は小数第2位まで表示し、APIの月次の率は小数第1位です。これらを比べるときは、計算値と返された率の精度の違いに注意してください。

CPIの月が欠けている場合は?

欠けている月を補間してはいけません。2026年9月の例では、米国の系列は2025年11月に始まり、2025年10月の観測値は系列に含まれていません。レスポンスに13か月分の連続した月次の行があるとは考えないでください。範囲を広げても、存在しない観測値は得られません。必要な期間にひもづけて検索してください。

2026年9月の例では、Pythonスクリプトが月次の変化率と前年比を小数第2位まで表示します。総合の年率は、インフレーションのエンドポイントを使って取得してください。

月次の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) × 1000.585(表示は0.59)
指数水準からの年初来(336.940 / 324.054 - 1) × 1003.98
月次の率の年率換算((336.940 / 334.980)^12 - 1) × 1007.25
公表された前月比month_over_month0.6
公表された年初来year_to_date4.0
公表された前年同月比year_over_year3.7

公開。

次のステップ