STRASMORE/EXPLORE 2,214 QUERIES

fcf_coverage

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-09-12, from mo-dividend-increase-history.

as of table 6×5read in context →
fcf_coverage — 6 rows by 5 columns, computed from US exchange, SIP and OPRA data.
fiscal_year_labeloperating_cash_flow_bnfree_cash_flow_bndividends_paid_bnfcf_coverage_ratio
20208.388.156.291.3
20218.48.246.451.28
20228.268.056.61.22
20239.299.096.781.34
20248.758.616.841.26
20259.299.076.961.3
Rows × columns
6 × 5
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 fcf_coverage, derived from the stored result.
ColumnTypeRangeNotes
fiscal_year_label text 6 distinct values (2020, 2021, 2022…)
operating_cash_flow_bn number 8.26 to 9.29
free_cash_flow_bn number 8.05 to 9.09
dividends_paid_bn number 6.29 to 6.96
fcf_coverage_ratio number 1.22 to 1.34 ratio or rate

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.

the exact SQL behind every number
SELECT
    fiscal_year_label,
    round(ocf / 1e9, 2)             AS operating_cash_flow_bn,
    round((ocf - capex) / 1e9, 2)   AS free_cash_flow_bn,
    round(divs / 1e9, 2)            AS dividends_paid_bn,
    round((ocf - capex) / divs, 2)  AS fcf_coverage_ratio
FROM
(
    SELECT
        toString(fiscal_year)                                                   AS fiscal_year_label,
        toFloat64(ifNull(any(net_cash_from_operating_activities), 0))           AS ocf,
        abs(toFloat64(ifNull(any(purchase_of_property_plant_and_equipment), 0))) AS capex,
        abs(toFloat64(ifNull(any(dividends), 0)))                               AS divs
    FROM global_markets.stocks_cash_flow_statements
    WHERE has(tickers, 'MO')
      AND timeframe = 'annual'
      AND toInt32OrZero(toString(fiscal_year)) >= 2020
    GROUP BY fiscal_year_label
    HAVING divs > 0
       AND ocf > 0
)
ORDER BY fiscal_year_label

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysismo-dividend-increase-history
raises series 21×7 spinoff_resets series 16×3 payment_calendar series 4×6 cadence series 2×5 The 2s10s spread, every print of the half table 124×2 The 2s10s spread, every print of the half table 124×2 See all 2,214 queries →