STRASMORE/EXPLORE 2,948 QUERIES

payout_crosscheck

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-02, from payout-ratio-over-100-percent.

as of ranking 9×3read in context →
payout_crosscheck — 9 rows by 3 columns, computed from US exchange, SIP and OPRA data.
tickereps_payout_pctfcf_payout_pct
PEP81.571.6
KO7769
VZ65.257
XOM6176.9
MCD59.774.9
PG48.367.9
MMM47.9111.9
JNJ46.264.1
T3542.1
Rows × columns
9 × 3
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 payout_crosscheck, derived from the stored result.
ColumnTypeRangeNotes
ticker text 9 distinct values (JNJ, KO, MCD…)
eps_payout_pct number 35 to 81.5 percent
fcf_payout_pct number 42.1 to 111.9 percent

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.

SELECT
    ticker,
    round(100 * toFloat64(dividends_paid) / toFloat64(net_income), 1)     AS eps_payout_pct,
    round(100 * toFloat64(dividends_paid) / toFloat64(free_cash_flow), 1) AS fcf_payout_pct
FROM
(
    SELECT
        ticker,
        count()                       AS quarters,
        sum(abs(dividends_q))         AS dividends_paid,
        sum(net_income_q)             AS net_income,
        sum(op_cash_q - abs(capex_q)) AS free_cash_flow
    FROM
    (
        SELECT ticker, period_end, dividends_q, net_income_q, op_cash_q, capex_q
        FROM
        (
            SELECT
                arrayFirst(t -> has(['KO', 'PEP', 'JNJ', 'PG', 'MCD', 'VZ', 'T', 'XOM', 'MMM', 'O'], t), tickers) AS ticker,
                period_end,
                argMax(dividends, (filing_date, _ingest_time))                                AS dividends_q,
                argMax(net_income, (filing_date, _ingest_time))                               AS net_income_q,
                argMax(net_cash_from_operating_activities, (filing_date, _ingest_time))       AS op_cash_q,
                argMax(purchase_of_property_plant_and_equipment, (filing_date, _ingest_time)) AS capex_q
            FROM global_markets.stocks_cash_flow_statements
            WHERE hasAny(tickers, ['KO', 'PEP', 'JNJ', 'PG', 'MCD', 'VZ', 'T', 'XOM', 'MMM', 'O'])
              AND timeframe = 'quarterly'
              AND period_end >= today() - 600
            GROUP BY ticker, period_end
        )
        ORDER BY ticker ASC, period_end DESC
        LIMIT 4 BY ticker
    )
    GROUP BY ticker
    HAVING quarters = 4 AND net_income > 0 AND free_cash_flow > 0 AND dividends_paid > 0
)
ORDER BY eps_payout_pct DESC
⌘/Ctrl + Enter

Work with this data in your AI assistant

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

More from this analysispayout-ratio-over-100-percent
charge_trace series 11×4 → reit_denominator series 8×4 → cash_bridge series 8×6 → Top 25 weekly-options underlyings by distinct contracts traded, with expiration weekdays ranking 25×4 → Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years) ranking 25×3 → SPY options median spread by expiration date, near-the-money strikes only ranking 25×4 → See all 2,948 queries →