STRASMORE/EXPLORE 3,094 QUERIES

aapl_payout_trace

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-05, from what-is-total-payout-ratio.

as of ranking 5×4read in context →
aapl_payout_trace — 5 rows by 4 columns, computed from US exchange, SIP and OPRA data.
yeardividend_payout_pcttotal_payout_pctdiluted_shares_mn
202115.3107.316865
202214.9100.616326
202315.5101.215813
202416.3100.115408
202513.894.315005
Rows × columns
5 × 4
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for aapl_payout_trace, derived from the stored result.
ColumnTypeRangeNotes
year number 2,021 to 2,025
dividend_payout_pct number 13.8 to 16.3 percent
total_payout_pct number 94.3 to 107.3 percent
diluted_shares_mn number 15,005 to 16,865 count

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH
    fy_shares AS
    (
        SELECT
            fiscal_year,
            argMax(toFloat64(diluted_shares_outstanding), (period_end, filing_date)) AS shares_end
        FROM global_markets.stocks_income_statements
        WHERE has(tickers, 'AAPL')
          AND timeframe = 'quarterly'
          AND fiscal_year BETWEEN 2020 AND 2025
          AND diluted_shares_outstanding > 0
        GROUP BY fiscal_year
    ),
    fy_cash AS
    (
        SELECT
            fiscal_year,
            fiscal_year - 1    AS prior_year,
            sum(dividend_cash) AS dividend_cash,
            sum(net_income)    AS net_income
        FROM
        (
            SELECT
                fiscal_year,
                period_end,
                argMax(abs(toFloat64(dividends)), (filing_date, period_end)) AS dividend_cash,
                argMax(toFloat64(net_income), (filing_date, period_end))     AS net_income
            FROM global_markets.stocks_cash_flow_statements
            WHERE has(tickers, 'AAPL')
              AND timeframe = 'quarterly'
              AND fiscal_year BETWEEN 2021 AND 2025
            GROUP BY fiscal_year, period_end
        )
        GROUP BY fiscal_year
        HAVING count() = 4
    ),
    fy_prices AS
    (
        SELECT
            toYear(date) + if(toMonth(date) >= 10, 1, 0) AS fiscal_year,
            avg(toFloat64(close))                        AS avg_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'AAPL'
          AND date >= '2020-10-01'
          AND date <  '2025-09-28'
        GROUP BY fiscal_year
    )
SELECT
    c.fiscal_year                                  AS year,
    round(c.dividend_cash / c.net_income * 100, 1) AS dividend_payout_pct,
    round((c.dividend_cash + greatest(prev.shares_end - cur.shares_end, 0) * p.avg_close) / c.net_income * 100, 1) AS total_payout_pct,
    round(cur.shares_end / 1e6, 0)                 AS diluted_shares_mn
FROM fy_cash AS c
INNER JOIN fy_shares AS cur  ON cur.fiscal_year  = c.fiscal_year
INNER JOIN fy_shares AS prev ON prev.fiscal_year = c.prior_year
INNER JOIN fy_prices AS p    ON p.fiscal_year    = c.fiscal_year
ORDER BY year
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.