Steady Stocks

Methodology

How the Steady Score and annualized growth rates are calculated.

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 four factors using 10 years of annual data:

FactorWeightDefinition
Growth Consistency (GC) 60% How often the metric grows from one year to the next
Growth Rate (GR) 10% How fast the metric compounds, up to a 15%/yr cap
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

Growth Consistency is the simplest factor: across the nn valid year-over-year transitions, it's just the share where the metric went up:

GC={k:Vk>Vk1}n\mathrm{GC} = \frac{\left|\{\, k : V_k > V_{k-1} \,\}\right|}{n}

Growth Rate scales the metric's annualized growth rate (CAGR, see Annualized Growth Rate below) up to a 15%/yr cap:

GR=max ⁣(0,  min(CAGR,0.15))0.15\mathrm{GR} = \frac{\max\!\left(0,\; \min(\mathrm{CAGR},\, 0.15)\right)}{0.15}

GR is 0 when CAGR is undefined — which happens whenever the 10-year window includes even one loss year or zero-value year (e.g. a year with no dividend paid). That's an intentional penalty, not an exception: a gap isn't excused just because a trend can't be computed for it.

Change Smoothness and Downside Resilience care about the size of each year's move, not just its direction, so they're built on a symmetric ratio:

R=VcurrentVpreviousmax(Vprevious,Vcurrent)R = \frac{V_{current} - V_{previous}}{\max(|V_{previous}|, |V_{current}|)}

This keeps changes bounded in [2,2][-2, 2] and handles sign changes (e.g. a loss year followed by a profit) gracefully.

CS=max ⁣(0,  1σ0.5)DR=max ⁣(0,  1δ0.5)\begin{aligned} \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:

  • σ=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).

GR\mathrm{GR}, CS\mathrm{CS}, and DR\mathrm{DR} are all floored at 0.

Every scored company 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 four factors above:

Si=100(0.60GCi+0.10GRi+0.20CSi+0.10DRi)S_i = 100 \cdot \left(0.60\,\mathrm{GC}_i + 0.10\,\mathrm{GR}_i + 0.20\,\mathrm{CS}_i + 0.10\,\mathrm{DR}_i\right)

where GCi\mathrm{GC}_i, GRi\mathrm{GR}_i, CSi\mathrm{CS}_i, and DRi\mathrm{DR}_i are the Growth Consistency, Growth Rate, 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 and no defined CAGR (so Growth Consistency and Growth Rate are both 0), but no volatility or declines either, so its dividend component is capped at 30 rather than zero:

Sdiv=100(0.600+0.100+0.201+0.101)=30S_\text{div} = 100\,(0.60 \cdot 0 + 0.10 \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

Dividend-paying companies are valued 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.

An ordinary least squares regression is performed 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.

Every scored company has a complete 10-year history, so this trend is normally fit across all 10 years. A loss year (or a year with no dividend paid) blocks the calculation entirely — even if every other year was strong. A bad year is never averaged out; a single one is enough to leave the growth rate undefined for that metric.

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 common stock listed on NYSE or NASDAQ that files a standard annual report (Form 10-K) with the SEC. A company won't appear here if it doesn't file a 10-K (e.g. foreign private issuers filing Form 20-F or 40-F instead), if its ticker represents something other than common stock (preferred shares, warrants, rights, units), or if its most recent annual filing is more than 18 months old. REITs are also excluded, since their growth is often driven by acquisitions rather than organic performance, which the Steady Score isn't designed to distinguish. On top of that, every company needs a full, uninterrupted 10 years of revenue and earnings data to be scored at all (see below).

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. This 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 this model, "steady" means uninterrupted growth first and foremost: consistency (60%) and downside avoidance (30% between smoothness and resilience) make up 90% of each component score, so a company that grows 10% every single year still scores far more highly than one that grows 50% one year and stays flat the next. A smaller 10% growth-rate factor then breaks ties among consistent growers, rewarding faster compounding without letting it override the core preference for uninterrupted growth. This predictability is often a signal of a "moat" or a durable competitive advantage.

How often is the data updated?

New data is pulled from SEC EDGAR daily. As soon as a company files its annual (10-K) or quarterly (10-Q) report, the 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.