StockCV

How every CV is built

Every number on a StockCV traces back to a company filing or a recorded market price. Scores are computed mechanically from those numbers with fixed thresholds — no analyst opinions, no hand-tuning per company. When data is missing we say so; we never estimate it.

The verdict

The label next to the company name summarises balance-sheet and earnings health using a 0–100 health score (Altman Z-Score, interest coverage, debt load, liquidity and profit history):

LabelHealth score
Strong75 or higher
Solid55 – 74
Mixed35 – 54, or not enough data to score
Strainedbelow 35

It describes financial condition, not whether the stock is a good buy.

Skills — six scores

Each axis of the radar is scored 0–100 from four independent legs worth 25 points each. Legs are laddered (e.g. ROIC above 25% earns 25 points, above 15% earns 20, above 8% earns 12) and reach a real zero. A missing input scores 0 — a data gap is not a good score — except inside Valuation, where a missing leg gets a neutral 10.

ScoreWhat it measuresLegs
ValuationHow cheap the stock is vs its own past and in absolute termsP/E percentile vs own history · FCF yield · Price/Sales · EV/EBITDA
GrowthHow fast the business has been expandingRevenue CAGR · Net income CAGR · EPS CAGR (~5y) · Forward-implied growth
ProfitabilityHow much profit the business earns todayROIC · ROE · Net margin · Operating margin
Financial HealthAbility to survive a bad yearAltman Z-Score · Current ratio · Interest coverage · Net cash / debt-to-assets
QualityTrustworthiness of the reported earningsPiotroski F-Score · Beneish M-Score · FCF conversion · Margin stability
MoatDurability of above-average economics over the yearsShare of years with ROIC > 12% · Median gross margin · Share of FCF-positive years · Worst-year net margin

Moat needs at least three years of filings per leg; with less history a leg scores 0, because durability cannot be shown on two reports.

Qualifications — the beginner checklist

Basic pass/fail checks a business should clear before deeper research. Items without data show “–” and are excluded from the count.

CheckPasses when
Revenue growingTrailing revenue is above the prior year
ProfitableTrailing net income is positive
Profit growingEarnings are higher than a year earlier
Generates cashTrailing free cash flow (operating cash flow minus capex) is positive
Debt under controlMore cash than debt, or net debt repayable from ≤ 5 years of free cash flow (current ratio ≥ 1.2 as fallback)
Established companyMarket capitalisation of at least $2B
Not printing sharesShare count grew no more than 10% over ~5 years
Proven track recordProfitable in at least 5 of the recorded years (or all, if fewer)
Financially stableAltman Z-Score above 1.81 (health score ≥ 55 as fallback)
Pays a dividendDividend yield above zero
Valuation not extremeP/E between 0 and 50

Experience — career milestones

Dated highlights, derived — never written by hand:

  • Revenue thresholds ($1B, $10B, $50B, $100B, $500B) — only when the crossing is visible in the data; if the first recorded year is already above, we say “already above”.
  • Profitability — “turned profitable” only after an observed loss year; otherwise “profitable every year on record”.
  • Became debt-free — the first year cash exceeded total debt after a leveraged year.
  • Best year on record and free-cash-flow streaks of five years or more.
  • Big moves — days the stock moved at least 2 standard deviations versus its own history, with the recorded catalyst when available.
  • Insider purchases — at least two open-market buys by insiders within a quarter.
  • Earnings surprises — EPS beats or misses of 15% or more versus the estimate.

Current status

The 52-week range places today’s price between the lowest and highest daily close of the past year. P/E vs its own history shows the share of past trading days on which the stock was cheaper than today, using the company’s own trailing P/E series. If that series disagrees with the displayed P/E by more than 15% (common for some foreign listings), the comparison is hidden rather than shown on a mismatched basis.

Unusual moves

A move is unusual when its size, measured in standard deviations (σ) of the stock’s own recent daily returns, is at least 2. A 3% day is routine for a volatile stock and remarkable for a utility — σ captures that difference; raw percentage lists do not. Moves and catalysts are detected by our sister site PreMarketPrice.

Data & limits

  • Financial statements come from company filings via Finnhub, with a fallback source for some foreign listings. Quarterly figures are normalised from as-filed year-to-date values.
  • Share counts are filed as reported, so stock splits look like a jump in shares. When the count changes by close to a standard split ratio (2:1, 3:1, 4:1, 10:1 …) we restate earlier years by that exact ratio, which keeps EPS and the dilution check comparable. Any extra issuance in the same year still counts as dilution. A merger paid in shares that happens to land near 2× or 3× can be mistaken for a split.
  • Prices and valuation history come from daily market data; figures may be delayed by up to a trading day.
  • Founding year, CEO and full dividend history are not yet in our data, so CVs do not show them.
  • Restatements, unusual one-off items and short reporting histories can distort ratios. Treat every CV as a starting point for research, not a conclusion.
  • StockCV is information, not investment advice.

← Back to StockCV