Methodology

How we calculate the Steady Score and annualized growth rates.

Steady Score

The Steady Score (0-100) measures how consistently and smoothly a company grows its revenue, earnings, and dividends over time. A higher score means more predictable, uninterrupted growth — a hallmark of high-quality compounding businesses.

The score is a weighted average of three components:

ComponentWeight
Revenue stability35%
Earnings stability35%
Dividends stability30%

Component stability score

Each component is scored on three factors using 10 years of annual data:

FactorWeightDefinition
Growth Consistency (GC) 70% How often the metric grows from one year to the next
Change Smoothness (CS) 20% How even the year-to-year changes are, rewarding low volatility
Downside Resilience (DR) 10% How well the metric avoids large single-year declines

Year-over-year change is measured as a symmetric ratio:

R=VcurrentVpreviousmax(Vprevious,Vcurrent)R = \frac{V_{current} - V_{previous}}{\max(|V_{previous}|, |V_{current}|)}
This keeps changes bounded in [1,1][-1, 1] and handles sign changes gracefully.

Across the nn valid year-over-year transitions, let RkR_k be the symmetric change of transition kk. The three factors are then:

GC={k:Rk>0}nCS=max ⁣(0,  1σ0.5)DR=max ⁣(0,  1δ0.5)\begin{aligned} \mathrm{GC} &= \frac{\left|\{\, k : R_k > 0 \,\}\right|}{n} \\[6pt] \mathrm{CS} &= \max\!\left(0,\; 1 - \frac{\sigma}{0.5}\right) \\[6pt] \mathrm{DR} &= \max\!\left(0,\; 1 - \frac{\delta}{0.5}\right) \end{aligned}

where:

  • {k:Rk>0}\left|\{\, k : R_k > 0 \,\}\right| — the number of transitions that are increases, so GC\mathrm{GC} is the share of years with growth.
  • σ=1nk(RkRˉ)2\sigma = \sqrt{\tfrac{1}{n}\sum_{k}(R_k - \bar{R})^2} — the population standard deviation (volatility) of the changes, with mean Rˉ\bar{R}.
  • δ=max(0,  minkRk)\delta = \max(0,\; -\min_k R_k) — the largest single-year decline (0 when the metric never falls).

Both CS\mathrm{CS} and DR\mathrm{DR} are floored at 0.

Every company we score has a full 10 years of revenue and earnings history. Companies with a shorter or interrupted record are excluded before scoring, so each Steady Score always reflects a complete decade of data.

Putting it together

Each component score combines the three factors above:

Si=100(0.70GCi+0.20CSi+0.10DRi)S_i = 100 \cdot \left(0.70\,\mathrm{GC}_i + 0.20\,\mathrm{CS}_i + 0.10\,\mathrm{DR}_i\right)
where GCi\mathrm{GC}_i, CSi\mathrm{CS}_i, and DRi\mathrm{DR}_i are the Growth Consistency, Change Smoothness, and Downside Resilience of component i{rev,earn,div}i \in \{\text{rev}, \text{earn}, \text{div}\}.

The final Steady Score is the fixed weighted sum of the three component scores:

Steady Score=0.35Srev+0.35Searn+0.30Sdiv\text{Steady Score} = 0.35\,S_\text{rev} + 0.35\,S_\text{earn} + 0.30\,S_\text{div}
a single number from 0 to 100.

Companies that pay no dividends

A non-paying company has a flat dividend history of zeros: no growth, but no volatility or declines either, so its dividend component is capped at 30 rather than zero:

Sdiv=100(0.700+0.201+0.101)=30S_\text{div} = 100\,(0.70 \cdot 0 + 0.20 \cdot 1 + 0.10 \cdot 1) = 30
That fixes the dividend term of the Steady Score at a constant 9 (out of a possible 30):
Steady Score=0.35Srev+0.35Searn+9\text{Steady Score} = 0.35\,S_\text{rev} + 0.35\,S_\text{earn} + 9
We value dividend-paying companies more highly, so a consistent dividend payer scores above an otherwise comparable company that pays nothing.

Interpreting the Score

  • 90 – 100: Elite Compounders. Exceptional consistency. Revenue and earnings grow almost every year with very low volatility.
  • 75 – 89: High Stability. Very reliable growth. Likely a dominant player in its industry with strong competitive advantages.
  • 50 – 74: Moderate Stability. Solid growth but may be subject to economic cycles or occasional "flat" years.
  • Below 50: Low Stability. Cyclical or volatile businesses. Growth is unpredictable or frequently interrupted by declines.

Annualized Growth Rate

The growth rate shown on each chart is derived from an exponential least-squares regression fitted to all available annual data points.

We perform an ordinary least squares regression on the logarithmic values:

log(V)=α+βT\log(V) = \alpha + \beta \cdot T
where VV is the metric value and TT is the fiscal year. The annualized rate (CAGR) is then reported as:
CAGR=eβ1CAGR = e^\beta - 1
Using all data points rather than just the first and last makes the estimate more robust to outlier years.

At least 5 positive data points are required to compute the trend.

Data

Financial data (revenue, net income, dividends paid) comes from official SEC filings. The dataset is refreshed daily. Each stock page shows the date its data was last updated.

Steady Stocks covers a curated list of US-listed companies (NYSE, NASDAQ). Coverage expands over time.

Frequently Asked Questions

Why use Exponential Regression instead of simple CAGR?

A standard CAGR only looks at the first and last years. If a company had an exceptionally good first year or a temporary dip in the last year, the CAGR will be misleading. Our regression-based approach looks at every data point in the 10-year window, finding the "true" trend line that best describes the company's long-term trajectory.

What makes a "Steady Stock"?

In our model, "steady" means uninterrupted growth. We value a company that grows 10% every single year more highly than a company that grows 50% one year and stays flat the next. This predictability is often a signal of a "moat" or a durable competitive advantage.

How often is the data updated?

We pull new data from SEC EDGAR daily. As soon as a company files its annual (10-K) or quarterly (10-Q) report, our pipeline extracts the latest figures and recalculates the scores within 24 hours.

Limitations

  • Historical growth does not guarantee future results.
  • The Steady Score reflects stability, not valuation or business quality in full.
  • Data may be delayed or incomplete for recent fiscal periods.
  • This site is for informational purposes only and is not financial advice.