FCF Compounders: 25 Years of Buying Companies That Grow Cash Every Year on US Stocks
We screened for companies that grew FCF in 4+ of the last 5 years with ROIC above 15% and backtested on US stocks from 2000-2025. 11.39% CAGR vs 7.85% for SPY. Zero cash periods, 64% win rate, 68.1% down capture.
We built a systematic screen for companies that grow free cash flow consistently, combined it with quality filters (ROIC > 15%, operating margin > 15%), and backtested it on all US exchanges from 2000 to 2025. The strategy returned 11.39% annually vs 7.85% for the S&P 500. $10,000 became $148,400. Zero cash periods in 25 years, a 64% win rate, and a down capture of 68.1%. Companies that compound cash generation don't just outperform. They fall less when everything else does.
Contents
- Method
- The Signal
- The Screen (SQL)
- What We Found
- $10,000 grew to $148,400. The S&P 500 reached $66,200.
- Annual Returns
- The Academic Case
- When It Works
- When It Struggles
- Limitations
- Run It Yourself
- Part of a Series
Data: FMP financial data warehouse, 2000–2025. Updated March 2026.
Method
Data source: Ceta Research (FMP financial data warehouse) Universe: All US exchanges (NYSE, NASDAQ, AMEX), market cap > $1B USD Period: 2000-2025 (25 years, 25 annual periods) Rebalancing: Annual (July), top 30 by highest ROIC, equal weight Benchmark: S&P 500 Total Return (SPY) Cash rule: Hold cash if fewer than 10 stocks qualify Costs: Size-tiered transaction costs (0.1% for large-cap, 0.3% mid-cap, 0.5% small-cap)
Financial data uses a 45-day lag to prevent look-ahead bias. July rebalancing ensures annual filings (typically filed by April-May) are available. Full methodology: Ceta Research Backtest Methodology.
The Signal
| Filter | Threshold | Why |
|---|---|---|
| FCF growth years | >= 4 of last 5 FY years | Consistent cash generation, not one good year |
| All FCF positive | Every year > 0 | No negative cash flow years allowed |
| ROIC | > 15% | Capital-efficient business |
| Operating Margin | > 15% | Real pricing power and sustainable operations |
| Market Cap | > $1B USD | Liquid stocks only |
Selection: Top 30 by highest ROIC, equal weight.
The signal looks for something specific: companies that grew free cash flow in at least 4 of the last 5 fiscal years, never dipped into negative FCF, and currently earn high returns on invested capital with strong margins. This is a quality-growth filter. It finds businesses that compound cash generation efficiently, not just companies with one lucky year.
The ROIC ranking is key. Among all companies passing the filters, we pick the 30 with the highest return on invested capital. These are the businesses with the strongest competitive positions. They grow cash while deploying relatively little capital to do it.
The Screen (SQL)
WITH yearly_fcf AS (
SELECT
symbol,
freeCashFlow,
date,
LAG(freeCashFlow) OVER (PARTITION BY symbol ORDER BY date) AS prev_fcf
FROM cash_flow_statement
WHERE period = 'FY'
AND freeCashFlow IS NOT NULL
),
fcf_stats AS (
SELECT
symbol,
COUNT(*) AS total_pairs,
SUM(CASE WHEN freeCashFlow > prev_fcf AND prev_fcf > 0 THEN 1 ELSE 0 END) AS growth_years,
MIN(freeCashFlow) AS min_fcf,
MIN(prev_fcf) AS min_prev_fcf
FROM yearly_fcf
WHERE prev_fcf IS NOT NULL
AND date >= '2019-01-01'
GROUP BY symbol
HAVING COUNT(*) >= 4
)
SELECT
fs.symbol,
p.companyName,
p.exchange,
p.sector,
fs.growth_years,
fs.total_pairs AS total_years,
ROUND(k.returnOnInvestedCapitalTTM * 100, 1) AS roic_pct,
ROUND(r.operatingProfitMarginTTM * 100, 1) AS op_margin_pct,
ROUND(k.marketCap / 1e9, 1) AS market_cap_billions
FROM fcf_stats fs
JOIN key_metrics_ttm k ON fs.symbol = k.symbol
JOIN financial_ratios_ttm r ON fs.symbol = r.symbol
JOIN profile p ON fs.symbol = p.symbol
WHERE fs.growth_years >= 4
AND fs.min_fcf > 0
AND fs.min_prev_fcf > 0
AND k.returnOnInvestedCapitalTTM > 0.15
AND r.operatingProfitMarginTTM > 0.15
AND k.marketCap > 1000000000
AND p.exchange IN ('NYSE', 'NASDAQ', 'AMEX')
ORDER BY k.returnOnInvestedCapitalTTM DESC
LIMIT 30
Run this query on Ceta Research
What We Found

$10,000 grew to $148,400. The S&P 500 reached $66,200.
| Metric | FCF Compounders | S&P 500 |
|---|---|---|
| CAGR | 11.39% | 7.85% |
| Total Return | 1,384% | 562% |
| Volatility | 16.39% | 16.63% |
| Max Drawdown | -29.63% | -38.01% |
| Sharpe Ratio | 0.573 | 0.352 |
| Sortino Ratio | 1.277 | 0.628 |
| Win Rate (annual) | 64% | - |
| Up Capture | 118.0% | - |
| Down Capture | 68.1% | - |
| Beta | 0.919 | - |
| Alpha | 4.0% | - |
| Avg Stocks per Period | 26.2 | - |
| Cash Periods | 0 of 25 | - |
The +3.54% excess CAGR compounded into a substantial terminal value gap. $10K became $148,400 vs $66,200 for the S&P 500. That's 2.2x the benchmark. The Sharpe ratio of 0.573 vs 0.352 shows the excess return came with essentially the same volatility (16.39% vs 16.63%).
Down capture of 68.1% means in years when SPY fell, this portfolio absorbed about two-thirds of the damage. Combined with up capture of 118.0%, you captured more upside than the benchmark while shedding roughly a third of the downside. That asymmetry drives the compounding advantage.
The Sortino ratio tells the story cleanly: 1.277 vs 0.628. More than double. The downside volatility is structurally lower than total volatility suggests. These companies don't collapse during drawdowns because their cash generation is real.
Zero cash periods across 25 years. The screen found enough qualifying stocks (26.2 average) in every single year. Deep markets with consistent financial reporting produce reliable results for quality-growth screens.
Annual Returns

| Year | Strategy | S&P 500 | Excess |
|---|---|---|---|
| 2000 | +2.1% | -14.8% | +16.9% |
| 2001 | -20.1% | -22.4% | +2.4% |
| 2004 | +19.7% | +8.9% | +10.8% |
| 2005 | +22.4% | +8.0% | +14.4% |
| 2008 | -20.5% | -26.9% | +6.5% |
| 2009 | +23.9% | +16.0% | +7.9% |
| 2010 | +44.8% | +33.5% | +11.3% |
| 2017 | +23.8% | +14.3% | +9.5% |
| 2020 | +38.5% | +41.0% | -2.5% |
| 2022 | +27.8% | +18.1% | +9.7% |
The pattern: outperformance clusters around market stress and early recoveries. In 2000, when the dot-com crash began, FCF compounders gained 2.1% while SPY lost 14.8%. These companies were growing real cash, not burning it on eyeball counts. In 2008, the strategy fell 20.5% vs SPY's 26.9%. Still painful, but 6.5 points of protection during the worst financial crisis in modern history.
2010 was the standout: +44.8% vs +33.5%. Quality companies that survived the GFC captured the recovery aggressively. They had cash to deploy while competitors were deleveraging.
The strategy lagged in 2020 (-2.5% excess) and 2023 (-6.0% excess), both years where speculative growth led the market. Quality-growth screens tend to trail when momentum dominates.
The Academic Case
The strategy is rooted in combining growth signals with quality metrics, an approach with strong academic backing.
Mohanram (2005) built a financial strength score for growth stocks and showed that combining cash flow stability with quality metrics separated winners from losers among high-growth companies. Traditional value metrics fail for growth stocks. Consistency and quality don't.
Frankel and Lee (1998) demonstrated that fundamental valuation models using accounting data predict cross-sectional stock returns. Systematic fundamental analysis, which is exactly what this screen does, identifies mispriced securities more reliably than price-based metrics alone.
Novy-Marx (2013) showed that profitable firms outperform unprofitable firms independently of value. High-ROIC compounders capture this quality premium directly.
Asness, Frazzini, and Pedersen (2019) formalized quality as a factor in "Quality Minus Junk" and demonstrated it works across countries, time periods, and asset classes. FCF compounders sit squarely in the quality bucket.
When It Works
During and after market stress. Companies with 4+ years of consistent FCF growth don't depend on favorable conditions. When credit tightens and weaker companies struggle, compounders keep generating cash. The 2000-2001, 2007-2008, and 2021 drawdown periods all showed this pattern.
In rising rate environments. High ROIC means these companies finance growth internally. When the cost of external capital goes up, self-funding businesses become relatively more valuable.
Over long holding periods. The compounding math needs time. 3.54% excess CAGR doesn't look dramatic in year one. Over 25 years it turns $10K into $148,400 vs $66,200. The consistency premium compounds.
When It Struggles
Speculative growth rallies. When the market rewards unprofitable high-growth companies, quality screens underperform. 2020 (meme stocks, SPAC mania) and 2023 (AI hype) both saw the strategy lag.
Late-cycle momentum. 2012 and 2018 both showed small negative excess. Extended bull markets where everything rises make quality's protective edge less valuable.
Limitations
Survivorship bias. FMP data includes delisted stocks where available, but early-year coverage isn't perfect. Results before 2005 should be interpreted with more caution.
Transaction costs are estimated. The size-tiered model (0.1% large-cap, 0.3% mid, 0.5% small) is reasonable but approximate. Real-world slippage varies.
Point-in-time data quality. We use a 45-day filing lag and FY data ordered by filing date. FMP coverage of filing dates improves over time. Early periods may have slight timing imperfections.
Single strategy. This combines growth consistency with quality, but doesn't account for valuation, momentum, or sentiment. Pairing with other signals could improve results.
The filter is strict. Requiring 4+ years of FCF growth, all positive, ROIC > 15%, and OPM > 15% narrows the universe significantly. Only about 26 stocks qualify per year on US exchanges. Smaller markets struggle to produce enough candidates.
Run It Yourself
Live screen:
python3 fcf-compounders/screen.py --preset us
Full backtest:
python3 fcf-compounders/backtest.py --preset us --output results.json --verbose
All exchanges:
python3 fcf-compounders/backtest.py --global --output results/exchange_comparison.json
Code: github.com/ceta-research/backtests/tree/main/fcf-compounders
Part of a Series
This is the US edition of our FCF Compounders analysis. We ran the same screen on 18 exchanges globally:
- Germany: +3.96% excess vs DAX, 22 invested years out of 25
- UK: +6.82% excess vs FTSE, 13 invested years out of 25
- Global comparison: exchanges with invested periods side by side
Data: Ceta Research (FMP financial data warehouse), 2000-2025. Full methodology: github.com/ceta-research/backtests/blob/main/METHODOLOGY.md