学ぶ
四半期の累計と TTM(直近 12 か月)
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 か月ごとの値だと思って並べると、四半期ごとに売上が倍々で増えているように見えます。グラフを作る前に、累計か単独かを必ず確かめてください。
ZENITH Code はこう返す
ZENITH Code の財務のエンドポイントは、開示どおりの累計の値を返します。単独四半期の値は返しません。
| 項目 | ZENITH Code の扱い |
|---|---|
period | Q1・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 の累計
引き算してはいけない場合
決算期を変えた年(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 / FY | next-fiscal-year | 51.0 | 3.0 |
| 2026-06 / Q1 | current-fiscal-year | 54.0 | 3.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 年前の同じ四半期末の残高の平均で割ります。
関連記事
免責事項
この記事は、データの仕組みと API の使い方を説明するものです。特定の銘柄の売買を勧めるものではなく、投資助言ではありません。実例の数値は記事の作成時点の応答で、その後の開示や訂正で変わることがあります。投資の判断はご自身の責任で行ってください。

