無料でAPIキー取得

学ぶ

四半期の累計と TTM(直近 12 か月)

日本の四半期決算は、期首からの累計で開示されます。第 3 四半期の売上高は 9 か月分の合計です。このページでは、単独四半期と TTM(直近 12 か月の合計)の作り方と、ZENITH Code の関連する項目を説明します。

event実例の数値は 2026 年 10 月 23 日 時点の API の応答から取っています。財務・配当のデータは毎日 16:30(TDnet)と 19:00(EDINET)を基準に更新します(日本時間)。

このページで分かること

  • check_circleQ1〜Q3 の損益は期首からの累計です。単独の 3 か月は、前の四半期との差で出します。
  • check_circleTTM(直近 12 か月)は、key-metrics の epsTtm・roeTtm などで取れます。
  • check_circle会社予想は、通期の行なら来期、Q1〜Q3 の行なら今期の通期予想です。forecastTarget で見分けます。

日本の四半期は期首からの累計

決算短信の四半期の損益計算書は、期首から各四半期末までの累計です。3 月期の会社なら、第 2 四半期(Q2)は 4〜9 月の 6 か月、第 3 四半期(Q3)は 4〜12 月の 9 か月の合計です。

米国の四半期決算のように 3 か月ごとの値だと思って並べると、四半期ごとに売上が倍々で増えているように見えます。グラフを作る前に、累計か単独かを必ず確かめてください。

前の四半期までの累計その四半期の 3 か月(単独)
Q1
3 か月の累計
Q2
6 か月の累計
Q3
9 か月の累計
FY
12 か月(通期)
3 月期の会社の例。1 マスが 3 か月です(数値は含みません)。

ZENITH Code はこう返す

ZENITH Code の財務のエンドポイントは、開示どおりの累計の値を返します。単独四半期の値は返しません。

項目ZENITH Code の扱い
periodQ1・Q2・Q3・FY。fiscalPeriod は四半期末の年月(YYYY-MM)
損益(売上高・利益など)期首からの累計。FY の行は 12 か月
貸借対照表各四半期末の残高。累計ではないので引き算しません
TTM(epsTtm・perTtm・roeTtm・roaTtm・ebitdaTtm・psrTtm)key-metrics が返す直近 12 か月の値。データ基盤で計算した値です
valuation-history の basis=ttm直近 12 か月の EPS と最新四半期の BPS で PER・PBR を計算(配当は通期のまま)
fiscalPeriodDays決算期間の実日数。決算期変更の期を見分けるのに使います

単独四半期の出し方

単独四半期は、同じ事業年度の累計どうしの差で出します。Q1 は累計がそのまま単独です。

  • Q1(単独)= Q1 の累計
  • Q2(単独)= Q2 の累計 − Q1 の累計
  • Q3(単独)= Q3 の累計 − Q2 の累計
  • Q4(単独)= 通期(FY)− Q3 の累計
warning

引き算してはいけない場合

決算期を変えた年(fiscalPeriodDays が 12 か月と大きく違う期)、会計基準を変えた年、前の四半期が欠けている場合は、差が単独の 3 か月になりません。EPS も期中の株数が変わるため、累計 EPS の差は単独の EPS と一致しないことがあります。

TTM(直近 12 か月)の定義

TTM は、最新の四半期末から遡った 12 か月の合計です。通期の数字が出るのを待たずに、年間ベースの規模や利益率を見られます。

累計の開示から作る一般的な式は、次のとおりです。12 か月の決算では、通期(FY)の行の TTM は通期の値と同じになります。

  • TTM = 今期の累計 + 前期の通期 − 前期の同じ四半期の累計

Python: 累計から単独四半期と TTM の売上高を作る

import requests

BASE = "https://api.zenithcode.net/stable"
HEADERS = {"x-api-key": "YOUR_API_KEY"}

rows = requests.get(f"{BASE}/income-statement",
                    params={"symbol": "7203", "limit": "20"},
                    headers=HEADERS, timeout=30).json()

ORDER = {"Q1": 1, "Q2": 2, "Q3": 3, "FY": 4}

def months(fp):  # "2026-06" -> 2026 * 12 + 6
    y, m = map(int, fp.split("-"))
    return y * 12 + m

def shift_year(fp, years):
    v = months(fp) + 12 * years - 1
    return f"{v // 12}-{v % 12 + 1:02d}"

rows = sorted((r for r in rows if r["period"] in ORDER),
              key=lambda r: months(r["fiscalPeriod"]))
by_key = {(r["fiscalPeriod"], r["period"]): r for r in rows}

for i, r in enumerate(rows):
    cum = r["revenue"]
    prev = rows[i - 1] if i > 0 else None

    # Single quarter: difference from the previous cumulative figure
    # (skip years with a fiscal year-end change: check fiscalPeriodDays)
    single = None
    if r["period"] == "Q1":
        single = cum
    elif (prev and ORDER[prev["period"]] == ORDER[r["period"]] - 1
          and months(r["fiscalPeriod"]) - months(prev["fiscalPeriod"]) == 3
          and None not in (cum, prev["revenue"])):
        single = cum - prev["revenue"]

    # TTM = current cumulative + prior full year - prior-year same-quarter cumulative
    ttm = cum if r["period"] == "FY" else None
    if r["period"] != "FY":
        last_fy = next((p for p in reversed(rows[:i]) if p["period"] == "FY"), None)
        same_q = by_key.get((shift_year(r["fiscalPeriod"], -1), r["period"]))
        if last_fy and same_q and None not in (cum, last_fy["revenue"], same_q["revenue"]):
            ttm = cum + last_fy["revenue"] - same_q["revenue"]

    print(r["fiscalPeriod"], r["period"], cum, single, ttm)

会社予想は「今期」か「来期」か

決算短信には会社の業績予想が載ります。どの期の予想かは、短信の種類で変わります。

earnings-forecast では、通期(FY)の行は来期の予想、Q1〜Q3 の行は今期の通期予想です。forecastTarget が next-fiscal-year か current-fiscal-year かで見分けます。

コード例
curl -sG "https://api.zenithcode.net/stable/earnings-forecast" \
  --data-urlencode "symbol=7203" \
  --data-urlencode "limit=4" \
  -H "x-api-key: YOUR_API_KEY"

実例: トヨタ自動車(7203)

トヨタ自動車の 2026 年 3 月期の通期の行では、epsTtm は通期の EPS と同じ 295.25 円です。ROE も TTM と通期が同じ 10.15% です。通期の行では 12 か月がそろっているためです。

会社予想は、2027 年 3 月期の売上高が 2 つの行に出てきます。2026 年 3 月期の通期の行(来期の予想)では 51 兆円、2027 年 3 月期 第 1 四半期の行(今期の通期予想)では 54 兆円です。同じ年度の予想を、期ごとの修正として追えます。

行(`fiscalPeriod` / `period`)`forecastTarget`売上高予想(兆円)営業利益予想(兆円)
2026-03 / FYnext-fiscal-year51.03.0
2026-06 / Q1current-fiscal-year54.03.4

どちらも 2027 年 3 月期の通期予想です。出典: /stable/earnings-forecast?symbol=7203 と /stable/key-metrics?symbol=7203&period=annual(2026 年 10 月 23 日 時点)。

注意点

  • 第 1・第 3 四半期の数字は決算短信だけが出典です(2024 年度から四半期報告書が廃止されたため)。監査前の値です。
  • 四半期の行では、通期実績に対する予想の伸び率(revenueGrowthVsActual など)は null です。累計の実績とは比べられないためです。
  • 会社が予想を「未定」とした期は、予想の値が null です。予想そのものが無い期は行がありません。

よくある質問

投資家・開発者向け

四半期の売上高が、期の後半ほど大きく見えるのはなぜですか?
日本の四半期の損益は期首からの累計だからです。Q3 は 9 か月分の合計です。3 か月ごとの推移を見るときは、前の四半期との差を取ってください。
第 4 四半期だけの数字はどう出しますか?
通期(FY)の値から Q3 の累計を引きます。決算期を変えた年は期間の長さが違うので、fiscalPeriodDays を確かめてください。
予想 PER の「予想」は今期と来期のどちらですか?
元になる会社予想の行によります。earnings-forecast の forecastTarget が current-fiscal-year なら今期、next-fiscal-year なら来期の予想です。

AI・研究者向け

AI に四半期データを渡すとき、何を伝えればよいですか?
「Q1〜Q3 の損益は期首からの累計」「比率は 0〜1 の小数」「null は未開示」の 3 点を指示してください。累計を単独と読み違える誤りが最も多く起きます。
TTM は自分で計算すべきですか?
一貫性を優先するなら、key-metrics の *Ttm 項目を使ってください。valuation-history の basis=ttm も同じ TTM の EPS を使います。自分で作る場合は、決算期変更の期を除いてください。
貸借対照表も累計ですか?
いいえ。貸借対照表は各四半期末の残高なので、引き算はしません。ZENITH の roeTtm・roaTtm は、当期末と 1 年前の同じ四半期末の残高の平均で割ります。
gavel

免責事項

この記事は、データの仕組みと API の使い方を説明するものです。特定の銘柄の売買を勧めるものではなく、投資助言ではありません。実例の数値は記事の作成時点の応答で、その後の開示や訂正で変わることがあります。投資の判断はご自身の責任で行ってください。