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.
| fiscal_year_label | operating_cash_flow_bn | free_cash_flow_bn | dividends_paid_bn | fcf_coverage_ratio |
|---|---|---|---|---|
| 2020 | 8.38 | 8.15 | 6.29 | 1.3 |
| 2021 | 8.4 | 8.24 | 6.45 | 1.28 |
| 2022 | 8.26 | 8.05 | 6.6 | 1.22 |
| 2023 | 9.29 | 9.09 | 6.78 | 1.34 |
| 2024 | 8.75 | 8.61 | 6.84 | 1.26 |
| 2025 | 9.29 | 9.07 | 6.96 | 1.3 |
- Rows × columns
- 6 × 5
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
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 →