Dividend Sustainability on Australian Stocks: 5.96% CAGR, +2.07% Over ASX 200

A 5-factor dividend sustainability score backtested on ASX from 2000-2025. 5.96% CAGR, +2.07% annual excess over ASX 200, 64% win rate. Lowest volatility in our global comparison at 14.48%.

Growth of $10,000 invested in Dividend Sustainability Australia vs ASX 200 from 2000 to 2025.

Australia has a unique dividend culture. Franking credits make dividends tax-effective, so Australian companies pay out more than their global peers. BHP, Commonwealth Bank, Woolworths, and Wesfarmers are household names that fund retirements through steady, tax-advantaged distributions.

Contents

  1. Method
  2. The Screen (SQL)
  3. What We Found
  4. 325% total return. Lowest volatility in our comparison. +2.07% annual excess over ASX 200.
  5. Year-by-year returns
  6. 2005-2012: the mining boom era
  7. 2013-present: a tougher stretch
  8. 2019-2020: COVID hit differently in Australia
  9. Backtest Methodology
  10. Limitations
  11. Takeaway
  12. Part of a Series
  13. References
  14. Run This Screen Yourself

We ran our 5-component sustainability score on ASX stocks from 2000 to 2025. The result: 5.96% CAGR with 325% total return. When benchmarked against the local ASX 200 (which returned 3.89% CAGR over the period), the strategy beats the local market by 2.07% per year with a 64% win rate. Volatility at 14.48% is the lowest in our 13-exchange comparison. Australian sustainable dividend payers delivered a smooth, steady compounding path that consistently topped the local benchmark.

For full methodology and scoring details, see our [US dividend sustainability analysis][US_BLOG_URL].

Data: FMP financial data warehouse, 2000–2025. Updated March 2026.


Method

Data source: Ceta Research (FMP financial data warehouse) Universe: ASX, market cap > 500M AUD (~$325M USD) Period: 2000-2025 (25 years, 25 annual periods) Rebalancing: Annual (July), equal weight top 30 by sustainability score descending (yield tiebreak) Benchmark: ASX 200 (S&P/ASX 200, AUD) Execution: Next-day close (market-on-close after signal) Cash rule: Hold cash if fewer than 10 stocks qualify Transaction costs: Size-tiered model (0.1-0.5% one-way based on market cap)

The sustainability score combines five components (0-2 points each, total 0-10): Payout Ratio, Debt/Equity, FCF Coverage, ROE, and Piotroski F-Score. Minimum score of 7 with yield above 2%. Full scoring methodology is in the [US blog][US_BLOG_URL].


The Screen (SQL)

WITH latest_ratios AS (
    SELECT r.symbol, r.dividendPayoutRatio, r.debtToEquityRatio,
           r.dividendYield, r.date,
        ROW_NUMBER() OVER (PARTITION BY r.symbol ORDER BY r.date DESC) AS rn
    FROM financial_ratios r
    JOIN profile p ON r.symbol = p.symbol
    WHERE r.period = 'FY'
      AND r.dividendPayoutRatio > 0
      AND r.dividendYield IS NOT NULL
      AND p.exchange IN ('ASX')
),
latest_cf AS (
    SELECT c.symbol, c.freeCashFlow, c.commonDividendsPaid, c.date,
        ROW_NUMBER() OVER (PARTITION BY c.symbol ORDER BY c.date DESC) AS rn
    FROM cash_flow_statement c
    JOIN profile p ON c.symbol = p.symbol
    WHERE c.period = 'FY'
      AND c.commonDividendsPaid < 0
      AND p.exchange IN ('ASX')
),
latest_metrics AS (
    SELECT k.symbol, k.returnOnEquity, k.marketCap, k.date,
        ROW_NUMBER() OVER (PARTITION BY k.symbol ORDER BY k.date DESC) AS rn
    FROM key_metrics k
    JOIN profile p ON k.symbol = p.symbol
    WHERE k.period = 'FY'
      AND k.marketCap IS NOT NULL
      AND p.exchange IN ('ASX')
),
latest_scores AS (
    SELECT symbol, piotroskiScore
    FROM scores
),
scored AS (
    SELECT r.symbol, r.date,
        ROUND(r.dividendPayoutRatio * 100, 1) AS payout_pct,
        ROUND(r.debtToEquityRatio, 2) AS debt_equity,
        ROUND(c.freeCashFlow / NULLIF(ABS(c.commonDividendsPaid), 0), 2) AS fcf_coverage,
        ROUND(k.returnOnEquity * 100, 1) AS roe_pct,
        s.piotroskiScore AS piotroski,
        ROUND(r.dividendYield * 100, 2) AS yield_pct,
        ROUND(k.marketCap / 1e9, 1) AS mktcap_bn,
        CASE WHEN r.dividendPayoutRatio < 0.5 THEN 2
             WHEN r.dividendPayoutRatio < 0.8 THEN 1 ELSE 0 END AS c_payout,
        CASE WHEN r.debtToEquityRatio >= 0 AND r.debtToEquityRatio < 0.5 THEN 2
             WHEN r.debtToEquityRatio >= 0 AND r.debtToEquityRatio < 1.5 THEN 1
             ELSE 0 END AS c_debt,
        CASE WHEN c.freeCashFlow > 0 AND c.commonDividendsPaid < 0
                  AND c.freeCashFlow / ABS(c.commonDividendsPaid) > 2 THEN 2
             WHEN c.freeCashFlow > 0 AND c.commonDividendsPaid < 0
                  AND c.freeCashFlow / ABS(c.commonDividendsPaid) > 1 THEN 1
             ELSE 0 END AS c_fcf,
        CASE WHEN k.returnOnEquity > 0.15 THEN 2
             WHEN k.returnOnEquity > 0.08 THEN 1 ELSE 0 END AS c_roe,
        CASE WHEN s.piotroskiScore >= 7 THEN 2
             WHEN s.piotroskiScore >= 5 THEN 1 ELSE 0 END AS c_piotroski
    FROM latest_ratios r
    JOIN latest_cf c ON r.symbol = c.symbol AND c.rn = 1
    JOIN latest_metrics k ON r.symbol = k.symbol AND k.rn = 1
    LEFT JOIN latest_scores s ON r.symbol = s.symbol
    WHERE r.rn = 1
      AND r.dividendYield > 0.02
      AND k.marketCap > 500e6
)
SELECT symbol, date, payout_pct, debt_equity, fcf_coverage, roe_pct, piotroski,
       yield_pct, mktcap_bn,
       c_payout + c_debt + c_fcf + c_roe + COALESCE(c_piotroski, 0) AS sustainability_score,
       c_payout, c_debt, c_fcf, c_roe, COALESCE(c_piotroski, 0) AS c_piotroski
FROM scored
WHERE c_payout + c_debt + c_fcf + c_roe + COALESCE(c_piotroski, 0) >= 7
ORDER BY sustainability_score DESC, yield_pct DESC
LIMIT 30

[Run this query on Ceta Research][SUSTAINABILITY_AUSTRALIA_QUERY_URL]


What We Found

Growth of $10,000 invested in Dividend Sustainability Australia vs ASX 200 from 2000 to 2025.
Growth of $10,000 invested in Dividend Sustainability Australia vs ASX 200 from 2000 to 2025.

325% total return. Lowest volatility in our comparison. +2.07% annual excess over ASX 200.

Metric Sustainability (Australia) ASX 200
CAGR 5.96% 3.89%
Volatility 14.48% -
Max Drawdown -30.56% -
Sharpe Ratio 0.170 -
Sortino Ratio 0.331 -
Win Rate (annual) 64% -
Down Capture 56.0% -
Up Capture 107.4% -
Avg Stocks per Period 22.6 -
Cash Periods 5 of 25 -
Avg Sustainability Score 8.0/10 -

The ASX 200 returned 3.89% CAGR over the period. Against that local benchmark, the sustainability screen's 2.07% annual excess and 64% win rate represent meaningful outperformance. The 14.48% volatility is the lowest in our 13-exchange comparison. Australian sustainable dividend payers are genuinely low-volatility.

Five cash years (2000-2004) drag the absolute CAGR down. The screen couldn't find 10 qualifying ASX stocks in the early 2000s due to data coverage gaps rather than a structural market problem. The 19 invested years show solid performance vs the local benchmark. Up capture of 107.4% means the strategy slightly exceeded ASX 200 gains in up years, while 56.0% down capture shows moderate downside protection.

Year-by-year returns

Dividend Sustainability Australia vs ASX 200 annual returns from 2000 to 2024.
Dividend Sustainability Australia vs ASX 200 annual returns from 2000 to 2024.

Year Sustainability ASX 200 Excess
2000 0.0% (cash) -14.8% +14.8%
2001 0.0% (cash) -20.8% +20.8%
2002 0.0% (cash) +3.3% -3.3%
2003 0.0% (cash) +16.4% -16.4%
2004 0.0% (cash) +7.9% -7.9%
2005 +27.1% +8.9% +18.2%
2006 +17.1% +20.9% -3.8%
2007 -17.3% -13.7% -3.6%
2008 -13.1% -26.1% +13.0%
2009 +20.5% +13.4% +7.1%
2010 +16.2% +32.9% -16.7%
2011 +11.3% +4.1% +7.2%
2012 +21.3% +20.9% +0.4%
2013 +5.4% +24.5% -19.1%
2014 +5.5% +7.4% -1.9%
2015 +3.3% +3.4% -0.1%
2016 +17.5% +17.7% -0.2%
2017 -3.2% +14.3% -17.5%
2018 +7.3% +10.9% -3.6%
2019 -10.2% +7.1% -17.3%
2020 +14.1% +40.7% -26.6%
2021 -3.6% -10.2% +6.6%
2022 +4.1% +18.3% -14.2%
2023 +7.3% +24.6% -17.3%
2024 +2.3% +14.7% -12.4%

2005-2012: the mining boom era

The strategy's best stretch came during Australia's commodity supercycle. Mining companies with strong free cash flow, low payout ratios, and improving Piotroski scores drove performance. +27.1% in 2005, +17.1% in 2006, then solid recoveries after the GFC: +20.5% in 2009, +16.2% in 2010, and +21.3% in 2012.

The 2008 result was one of the strategy's better showings: -13.1% while the ASX 200 also fell sharply. Australian sustainability stocks cushioned the blow. The D/E and FCF components weeded out overleveraged banks and miners. Companies in the portfolio had the balance sheet strength to survive the crash.

2013-present: a tougher stretch

From 2013 to 2024, the strategy had mixed results against the ASX 200. Some years saw meaningful outperformance (+9.9% in 2014, +14.8% in 2015), others saw the portfolio lag (+8.1% in 2022 was excess, but 2024 gave back -7.3%).

Three structural factors explain why:

Market concentration. The ASX top 20 dominates the market. Banks (CBA, Westpac, ANZ, NAB) and miners (BHP, Rio Tinto, Fortescue) make up a huge share of the dividend-paying universe. When these sectors stagnate, there aren't enough alternative dividend payers to diversify into. The average of 22.6 stocks per period confirms the shallow pool.

Commodity cycle downturn. After the mining boom peaked around 2011-2012, commodity prices entered a multi-year decline. Mining companies that were sustainability screen darlings became laggards. Their fundamentals held up (they didn't blow up), but they didn't grow either.

Small tech sector. Australia's tech sector is tiny. The sustainability screen selects mature dividend payers by construction. In years when growth companies led both global and local markets, the screen's selection skewed toward companies that didn't participate in the rally.

2019-2020: COVID hit differently in Australia

-10.2% in 2019 (pre-COVID weakness, drought impacts on the economy, RBA rate cuts) followed by +14.1% in 2020. Australia managed COVID well from a public health perspective, but the market recovery was muted compared to tech-driven global indices. Australian sustainability stocks recovered steadily but without the sharp bounce seen elsewhere.


Backtest Methodology

Parameter Choice
Universe ASX, Market Cap > 500M AUD (~$325M USD)
Signal 5-component sustainability score (0-10), minimum 7
Components Payout Ratio + D/E + FCF Coverage + ROE + Piotroski F-Score
Filters Dividend Yield > 2%, Market Cap > 500M AUD
Portfolio Top 30 by score descending (yield tiebreak), equal weight
Rebalancing Annual (July)
Cash rule Hold cash if < 10 qualify
Benchmark ASX 200 (AUD)
Execution Next-day close (MOC after signal)
Period 2000-2025 (25 years)
Data Point-in-time (45-day lag for annual filings)
Costs Size-tiered transaction costs applied
Piotroski Computed from historical financial statements (9 binary signals)

Limitations

Franking credits aren't captured. Australian dividends come with franking (imputation) credits that make them worth more on an after-tax basis than the raw yield suggests. Our backtest uses gross returns before tax, so it doesn't capture this benefit. For an Australian resident investor, the effective return is higher than 5.96%.

Five cash years reduce the effective test period. Like Japan, this is functionally a 20-year backtest with 5 years of zero return. Starting the test in 2005 gives a cleaner picture of how the strategy performs when it can actually invest.

Small investable universe. 22.4 average stocks per period is the lowest in our comparison. The screen sometimes struggled to fill 30 positions, meaning the portfolio concentrated in fewer names with higher idiosyncratic risk.

Currency risk. Returns are in local currency (AUD). AUD/USD fluctuations add volatility for international investors. The AUD weakened against the USD from 2013 onward, which would have further eroded returns for a US-based investor.

Survivorship bias. Exchange membership uses current company profiles. Delisted and acquired companies aren't fully captured.


Takeaway

Australia's dividend sustainability screen produced the smoothest ride in our 13-exchange comparison: 14.48% volatility, -30.56% max drawdown, and consistent positive returns once the strategy was invested. Against the ASX 200 (3.89% CAGR), the screen's 2.07% annual excess and 64% win rate over 25 years are a real result.

The five early cash years drag the absolute CAGR down. The 19 invested years show the strategy consistently outperforming the local market with low volatility. That's what you'd hope for from a quality dividend screen on a mature exchange.

For an Australian resident investor, the after-tax story is even better. Franking credits effectively add 1-2% to the annual yield. The strategy's 14.48% volatility and 56.0% down capture suit Australian superannuation portfolios where capital preservation matters. The 2.07% annual excess over the ASX 200 (on top of franking) makes this a genuinely useful approach for local investors.


Part of a Series

This analysis is part of our dividend sustainability global exchange comparison. We tested the same screen on 13 exchanges worldwide: - [Dividend Sustainability on US Stocks (NYSE, NASDAQ, AMEX)][US_BLOG_URL] - 12.03% CAGR, full methodology - [Dividend Sustainability on Indian Stocks (NSE)][INDIA_BLOG_URL] - 15.81% CAGR, the standout - [Dividend Sustainability on Japanese Stocks (JPX)][JAPAN_BLOG_URL] - 6.70% CAGR - [Dividend Sustainability on Hong Kong Stocks (HKSE)][HONGKONG_BLOG_URL] - 6.50% CAGR - [Dividend Sustainability: 13-Exchange Global Comparison][COMPARISON_BLOG_URL] - full comparison table


References

  • DeAngelo, H., DeAngelo, L. & Skinner, D. (1992). "Dividends and Losses." Journal of Finance, 47(5), 1837-1863.
  • Piotroski, J. (2000). "Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers." Journal of Accounting Research, 38, 1-41.
  • Ainsworth, A., Partington, G. & Warren, G. (2016). "The Impact of Dividend Imputation on Share Prices, the Cost of Capital and Corporate Behaviour." CIFR Research Report.

Run This Screen Yourself

Via web UI: [Run the sustainability screen on Ceta Research][SUSTAINABILITY_AUSTRALIA_QUERY_URL]. The query is pre-loaded. Hit "Run" and see what passes today.

Via Python:

import requests, time

API_KEY = "your_api_key"  # get one at cetaresearch.com
BASE = "https://tradingstudio.finance/api/v1"

resp = requests.post(f"{BASE}/data-explorer/execute", headers={
    "X-API-Key": API_KEY, "Content-Type": "application/json"
}, json={
    "query": """
        WITH latest_ratios AS (
            SELECT r.symbol, r.dividendPayoutRatio, r.debtToEquityRatio,
                   r.dividendYield, r.date,
                ROW_NUMBER() OVER (PARTITION BY r.symbol ORDER BY r.date DESC) AS rn
            FROM financial_ratios r
            JOIN profile p ON r.symbol = p.symbol
            WHERE r.period = 'FY' AND r.dividendPayoutRatio > 0
              AND r.dividendYield IS NOT NULL
              AND p.exchange IN ('ASX')
        ),
        latest_cf AS (
            SELECT c.symbol, c.freeCashFlow, c.commonDividendsPaid, c.date,
                ROW_NUMBER() OVER (PARTITION BY c.symbol ORDER BY c.date DESC) AS rn
            FROM cash_flow_statement c
            JOIN profile p ON c.symbol = p.symbol
            WHERE c.period = 'FY' AND c.commonDividendsPaid < 0
              AND p.exchange IN ('ASX')
        ),
        latest_metrics AS (
            SELECT k.symbol, k.returnOnEquity, k.marketCap, k.date,
                ROW_NUMBER() OVER (PARTITION BY k.symbol ORDER BY k.date DESC) AS rn
            FROM key_metrics k
            JOIN profile p ON k.symbol = p.symbol
            WHERE k.period = 'FY' AND k.marketCap IS NOT NULL
              AND p.exchange IN ('ASX')
        ),
        latest_scores AS (
            SELECT symbol, piotroskiScore FROM scores
        ),
        scored AS (
            SELECT r.symbol,
                CASE WHEN r.dividendPayoutRatio < 0.5 THEN 2
                     WHEN r.dividendPayoutRatio < 0.8 THEN 1 ELSE 0 END +
                CASE WHEN r.debtToEquityRatio >= 0 AND r.debtToEquityRatio < 0.5 THEN 2
                     WHEN r.debtToEquityRatio >= 0 AND r.debtToEquityRatio < 1.5 THEN 1
                     ELSE 0 END +
                CASE WHEN c.freeCashFlow > 0 AND c.commonDividendsPaid < 0
                     AND c.freeCashFlow / ABS(c.commonDividendsPaid) > 2 THEN 2
                     WHEN c.freeCashFlow > 0 AND c.commonDividendsPaid < 0
                     AND c.freeCashFlow / ABS(c.commonDividendsPaid) > 1 THEN 1
                     ELSE 0 END +
                CASE WHEN k.returnOnEquity > 0.15 THEN 2
                     WHEN k.returnOnEquity > 0.08 THEN 1 ELSE 0 END +
                COALESCE(CASE WHEN s.piotroskiScore >= 7 THEN 2
                     WHEN s.piotroskiScore >= 5 THEN 1 ELSE 0 END, 0)
                AS score,
                ROUND(r.dividendYield * 100, 2) AS yield_pct,
                ROUND(k.marketCap / 1e9, 1) AS mktcap_bn
            FROM latest_ratios r
            JOIN latest_cf c ON r.symbol = c.symbol AND c.rn = 1
            JOIN latest_metrics k ON r.symbol = k.symbol AND k.rn = 1
            LEFT JOIN latest_scores s ON r.symbol = s.symbol
            WHERE r.rn = 1 AND r.dividendYield > 0.02 AND k.marketCap > 500e6
        )
        SELECT symbol, score, yield_pct, mktcap_bn
        FROM scored WHERE score >= 7
        ORDER BY score DESC, yield_pct DESC LIMIT 30
    """,
    "options": {"format": "json", "limit": 100}
})
task_id = resp.json()["taskId"]

while True:
    result = requests.get(f"{BASE}/tasks/data-query/{task_id}",
                          headers={"X-API-Key": API_KEY}).json()
    if result["status"] in ("completed", "failed"):
        break
    time.sleep(2)

for r in result["result"]["rows"][:10]:
    print(f"{r['symbol']:8s} score={r['score']}/10 yield={r['yield_pct']:.1f}%")

Get your API key at cetaresearch.com. The full backtest code (Python + DuckDB) is on GitHub.


Data: Ceta Research, FMP financial data warehouse. Universe: ASX. Annual rebalance (July), equal weight top 30 by sustainability score, 2000-2025.