Get free API key

Learn

Cumulative quarters and TTM (trailing twelve months)

Japanese quarterly results are reported year-to-date. Q3 revenue is the total for nine months. This guide explains how to derive single quarters and TTM (the sum of the trailing twelve months), and the related fields in ZENITH Code.

eventExample values are taken from API responses as of October 23, 2026. Financial and dividend data are refreshed daily, keyed to 16:30 (TDnet) and 19:00 (EDINET), Japan time.

What you will learn

  • check_circleQ1–Q3 income figures are cumulative from the start of the fiscal year. Take the difference from the previous quarter to get a single quarter.
  • check_circleTTM (trailing twelve months) values such as epsTtm and roeTtm are available from key-metrics.
  • check_circleGuidance on a full-year row is for next year; on a Q1–Q3 row it is the current year's full-year guidance. forecastTarget tells you which.

Japanese quarters are year-to-date

Quarterly income statements in earnings summaries run from the start of the fiscal year to each quarter end. For a March year-end company, Q2 covers April–September (six months) and Q3 covers April–December (nine months).

Treat them like US three-month quarters and revenue appears to double every quarter. Before charting, always check whether a figure is cumulative or a single quarter.

Cumulative through the previous quarterThe quarter's own three months (single)
Q1
3-month total
Q2
6-month total
Q3
9-month total
FY
12 months (full year)
A March year-end company. Each block is three months (no values shown).

What ZENITH Code returns

ZENITH Code's financial endpoints return cumulative values exactly as disclosed. They do not return single-quarter values.

ItemHow ZENITH Code handles it
periodQ1, Q2, Q3, FY. fiscalPeriod is the quarter-end month (YYYY-MM)
Income items (revenue, profits)Cumulative from the start of the year. FY rows cover 12 months
Balance sheetBalances at each quarter end. Not cumulative, so never subtract
TTM (epsTtm, perTtm, roeTtm, roaTtm, ebitdaTtm, psrTtm)Trailing-twelve-month values from key-metrics, calculated in our data pipeline
basis=ttm in valuation-historyPER and PBR from TTM EPS and the latest quarterly BPS (dividends stay annual)
fiscalPeriodDaysActual length of the period in days. Use it to spot fiscal year-end changes

Deriving single quarters

A single quarter is the difference between cumulative figures in the same fiscal year. For Q1, the cumulative figure is the single quarter.

  • Q1 (single) = Q1 cumulative
  • Q2 (single) = Q2 cumulative − Q1 cumulative
  • Q3 (single) = Q3 cumulative − Q2 cumulative
  • Q4 (single) = full year (FY) − Q3 cumulative
warning

When not to subtract

The difference is not a clean three months in a year with a fiscal year-end change (fiscalPeriodDays far from 12 months), a change of accounting standard, or a missing previous quarter. For EPS, share counts change during the year, so differences of cumulative EPS may not match single-quarter EPS.

How TTM is defined

TTM is the sum of the 12 months ending at the latest quarter end. It gives an annual view of scale and margins without waiting for full-year results.

The usual formula from cumulative disclosures is below. For a 12-month fiscal year, TTM on the full-year (FY) row equals the full-year value.

  • TTM = current cumulative + prior full year − prior-year cumulative for the same quarter

Python: single-quarter and TTM revenue from cumulative figures

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)

Is the guidance for this year or next?

Earnings summaries include company guidance. Which year it covers depends on the type of summary.

In earnings-forecast, full-year (FY) rows carry next year's guidance and Q1–Q3 rows carry the current year's full-year guidance. forecastTarget is next-fiscal-year or current-fiscal-year.

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

Example: Toyota Motor (7203)

On Toyota's full-year row for the fiscal year ended March 2026, epsTtm equals full-year EPS at ¥295.25. ROE is also 10.15% on both a TTM and a full-year basis, because the full-year row already covers 12 months.

Revenue guidance for the fiscal year ending March 2027 appears on two rows. The full-year row for March 2026 (next-year guidance) shows ¥51 trillion, and the Q1 row of the year ending March 2027 (current-year guidance) shows ¥54 trillion. You can follow revisions of the same year's guidance.

Row (`fiscalPeriod` / `period`)`forecastTarget`Revenue guidance (¥ trillion)Operating income guidance (¥ trillion)
2026-03 / FYnext-fiscal-year51.03.0
2026-06 / Q1current-fiscal-year54.03.4

Both are guidance for the fiscal year ending March 2027. Source: /stable/earnings-forecast?symbol=7203 and /stable/key-metrics?symbol=7203&period=annual as of October 23, 2026.

Caveats

  • Q1 and Q3 figures come only from earnings summaries, since quarterly securities reports were abolished from fiscal 2024. They are unaudited.
  • On quarterly rows, growth versus full-year actuals (such as revenueGrowthVsActual) is null, because cumulative actuals are not comparable.
  • When a company declares its guidance undetermined, the values are null. Periods with no guidance at all have no row.

FAQ

For investors and developers

Why does quarterly revenue look larger later in the year?
Japanese quarterly income figures are cumulative from the start of the year. Q3 is a nine-month total. Take differences between quarters to see three-month trends.
How do I get Q4 on its own?
Subtract the Q3 cumulative figure from the full-year (FY) figure. Check fiscalPeriodDays in years with a fiscal year-end change, since the period length differs.
Is forward PER based on this year's or next year's guidance?
It depends on the guidance row. In earnings-forecast, forecastTarget of current-fiscal-year means this year and next-fiscal-year means next year.

For AI builders and researchers

What should I tell an AI when passing quarterly data?
State three rules: Q1–Q3 income figures are year-to-date, ratios are 0–1 decimals, and null means not disclosed. Mistaking cumulative figures for single quarters is the most common error.
Should I compute TTM myself?
For consistency, use the *Ttm fields from key-metrics. basis=ttm in valuation-history uses the same TTM EPS. If you compute it yourself, exclude periods affected by a fiscal year-end change.
Is the balance sheet cumulative too?
No. Balance sheet items are balances at each quarter end, so never subtract them. ZENITH's roeTtm and roaTtm divide by the average of the current period-end balance and the balance at the same quarter end a year earlier.
gavel

Disclaimer

This guide explains how the data works and how to use the API. It does not recommend buying or selling any security and is not investment advice. Example values reflect responses at the time of writing and may change with later filings or corrections. Investment decisions are your own responsibility.