Financials methodology
Every figure on the Financials pages traces back to SEC EDGAR XBRL company-facts filings (fetched per ticker by CIK), tagged with the us-gaap and dei taxonomies. Share-price-dependent figures — the snapshot market cap and enterprise value tiles on the capitalization page, and the share-price-anchored ratios + EPV gap + reverse-DCF outputs on the valuation page — are rendered server-side at the close on the latest reported period-end (so they reconcile to the same filing as every other number on the page) and re-anchor on the most recent daily close in the browser when JavaScript is enabled. Historical share prices come from our total-returns daily history (split-adjusted).
On this page. Balance-sheet aggregates · Valuation metrics · Valuation ratios · Earning Power Value · Expectations scenario (reverse-DCF) · Special situations · Shares & historical market cap · Earnings history · Financials page
Each entry states what the metric means, how it's computed, and which specific concepts feed it. When multiple concepts can stand in for the same figure, we list them in the priority order the page-level code uses them.
Balance-sheet aggregates
- Net Worth
- Also: book value, stockholders' equity, shareholders' equity,
net assets, shareholders' funds.
Accounting value of the equity: total assets − total liabilities
as reported on the balance sheet — what the company would be
worth if every asset sold at book value and every creditor were
paid off. Sourced as
us-gaap:StockholdersEquity, falling back tous-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest. - Debt
-
Interest-bearing borrowings at carrying value, long-term and
short-term combined, plus ASC 842 lease liabilities. Primary
long-term rollup is
us-gaap:LongTermDebtwith fallbacks throughus-gaap:LongTermDebtNoncurrent+us-gaap:LongTermDebtCurrent,us-gaap:LongTermDebtAndCapitalLeaseObligations,us-gaap:LongTermDebtAndCapitalLeaseObligationsIncludingCurrentMaturities, andus-gaap:DebtAndCapitalLeaseObligations. Short-term extras layered on when present:us-gaap:CommercialPaper,us-gaap:ShortTermBorrowings,us-gaap:NotesPayableCurrent. Convertible notes are folded in for filers that tag them only under the convertible concepts and never a generic long-term-debt rollup:us-gaap:ConvertibleDebt,us-gaap:ConvertibleNotesPayable,us-gaap:ConvertibleLongTermNotesPayable,us-gaap:ConvertibleSubordinatedDebt(each preferring an explicit total, else summing the Current + Noncurrent pieces). Lease extras (post-2019, ASC 842):us-gaap:OperatingLeaseLiabilityalways added (or noncurrent + current pieces summed when the aggregate isn't tagged);us-gaap:FinanceLeaseLiabilityadded only when the primary rollup doesn't already include a CapitalLease designation, to avoid double-counting filers who tag legacy ASC 840 capital leases inside the rollup.
Underfunded pension obligations are debt-equivalent (Damodaran-style) — at liquidation the firm owes plan participants the shortfall between the projected benefit obligation and plan assets. When tagged on the latest BS, we addus-gaap:PensionAndOtherPostretirementDefinedBenefitPlansLiabilitiesNoncurrentand the corresponding Current variant on top of the financial-debt rollup. Footnote-only concepts likeus-gaap:DefinedBenefitPlanFundedStatusOfPlanare deliberately skipped because they're often FY-only and lag the latest balance sheet. - Noncontrolling interest
-
Book value of minority shareholders' claim on a
consolidated subsidiary's equity. Reverse-DCF pages add NCI
to the EV target (so the bisection solves for the
operating-firm value distributable to all capital holders)
and subtract it back out of the equity bridge so per-share
fair value reflects the common-shareholder claim only.
Without the symmetric treatment, filers with material
partial-ownership subsidiaries (NEE 11.4B, XOM 7.2B,
CVX 5.7B, DIS 5.5B, SO 2.8B) would either overstate
per-share fair value (NCI omitted entirely) or print a
systematic
−NCI ÷ mktCapreconciliation gap (NCI subtracted from the bridge but missing from the EV target). Sourced asus-gaap:MinorityInterestfor the regular bucket plusus-gaap:RedeemableNoncontrollingInterestEquityCarryingAmountfor the mezzanine (puttable) bucket when both are tagged on the latest BS. Book NCI is used as a proxy for NCI's market value; the precision loss is small versus the alternative of ignoring NCI entirely. - Cash & equivalents
-
Cash and cash equivalents plus marketable / available-for-sale
securities — the liquid, non-operating assets an acquirer
would pocket at close. Base cash is sourced from
us-gaap:CashAndShortTermInvestmentswhen the filer tags the combined balance; otherwiseus-gaap:CashAndCashEquivalentsAtCarryingValue(falling back throughus-gaap:CashCashEquivalentsAndShortTermInvestmentsandus-gaap:Cash, withus-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsas last resort because it includes restricted balances and overstates free cash for fintechs with material customer-deposit restrictions). On top of that we add both short-term marketable securities (us-gaap:MarketableSecuritiesCurrent,us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent, orus-gaap:ShortTermInvestments) and long-term marketable securities (us-gaap:MarketableSecuritiesNoncurrent,us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent) when tagged — the multi-year Treasury portfolios that tech firms hold as excess cash trade in deep secondary markets and aren't operating capital. The augmentation is skipped for insurers (filers that tag a top-levelus-gaap:Investmentsbalance) and REITs (real-estate investment property >50% of assets) because their AFS portfolios back policyholder or tenant liabilities, not corporate excess cash.Operating-cash carve-out (reverse-DCF only)
On the reverse-DCF page the equity bridge nets only EXCESS cash, not the BS total. An operating business needs a working-cash floor for payroll, inventory funding, and float for clearing payments — that floor isn't distributable to shareholders, so subtracting it from debt would inflate per-share fair value. We approximate the floor at2% × trailing revenue(Damodaran's heuristic; Koller/McKinsey settle in the 1–2% range), and routeexcess cash = max(0, total cash − floor)through the EV target, invested capital, and equity bridge. The rules-of-thumb cash & equivalents figure shown in the snapshot, ratios, and Facts grid stays as the BS total — the carve-out is specific to the DCF mechanics. Banks (NII + non-interest- income tagged together), insurers (top-levelus-gaap:Investmentsbalance), and REITs (real- estate property >50% of assets) are exempt because their cash backs deposits, regulatory reserves, or investment portfolios rather than working capital.Fair-value hierarchy (display only)
ASC 820 classifies fair-value-measured assets into three buckets: Level 1 (active-market quotes — Treasury securities, listed equities), Level 2 (observable inputs — corporate paper, agency MBS, OTC quotes), Level 3 (unobservable inputs — private credit, strategic equity stakes, hard-to-mark derivatives). XBRL exposes the classification underFairValueByFairValueHierarchyLevelAxis; the SEC's companyfacts API flattens this axis away, so the L1/L2/L3 split only reaches us through thefetch-axis-factspipeline that parses the latest 10-K/10-Q XBRL instance directly. We extract every fact tagged on the FVHL axis underus-gaap:MarketableSecurities*,AvailableForSaleSecurities*, orEquitySecuritiesFvNi*, summing across any inner dimension (e.g.FinancialInstrumentAxis's Treasury / Corporate / MBS sub-cuts) within each level. When a parent concept and its current/noncurrent children are both tagged at the same as-of, the parent is dropped to avoid double-counting. The Facts grid surfaces the resulting breakdown beneath the cash & investments line; the equity bridge above it still nets the full balance-sheet total at par. A reader who finds a large L3 share may mentally discount it before reading the per-share fair value, but the page does not bake a haircut into the math — Damodaran's reverse-DCF doesn't ask you to second-guess the filer's marks.
Valuation metrics
- Market Cap
- Also: market capitalization, equity market value, equity value. What the stock market currently values the equity at — shares outstanding × share price. Reflects what investors are willing to pay today, not what the business owns or owes. The snapshot tile is rendered server-side at the close on the latest reported period-end (so it reconciles to the debt + cash figures from that same filing) and re-anchors on the most recent daily close in the browser when JavaScript is enabled; historical rows use the period-end close × that period's shares outstanding (see Historical market cap below for the calibration).
- Enterprise Value
- Also: firm value, total enterprise value, EV, TEV.
The takeover price of the whole business free and clear — an
acquirer pays off lenders (add debt) and pockets the cash on
the balance sheet (subtract cash). Formula:
Market Cap + Debt − Cash. The snapshot combines the period-end market cap with the latest-filed debt and cash (so the EV bridge reconciles to a single filing) and re-anchors on the most recent daily close in the browser when JavaScript is enabled; each historical row combines that period's computed market cap with that period's filed debt and cash. Preferred stock and minority interest aren't broken out separately, so capital-structure-heavy firms may see a small gap versus the price a sophisticated acquirer would pay. The reverse-DCF and EPV blocks on the valuation page use a stricter operating-firm EV — see conventions on the valuation page below. - Net Debt
-
Debt − Cashusing the same concepts as above. Negative values mean the company holds more cash than debt.
Valuation ratios
These are the ratios surfaced on each ticker's
/financials/{ticker}/valuation/ page. Each
deep-links to its derived-concept chart and period history on
the main facts page so you can see how the ratio evolved over
time, not just today's value.
A note on conventions
The trailing-multiples cards on the valuation page and the reverse-DCF / EPV blocks below them use different market-cap and enterprise-value definitions. This is deliberate — each block uses the convention that's standard in its own context — but it means the same filer can show a $3.61B market cap on the cards and a $3.62B market cap in the DCF lead-in without any of the numbers being wrong. P/E, P/FCF, and FCF Yield are unaffected because they're per-share ratios (price ÷ per-share denominator) that never reach for a market cap; the cards that DO involve a market cap are P/S, P/B, and EV/EBITDA.
- Cards (P/S, P/B, EV/EBITDA)
-
MktCap = price × point-in-time basic shares(chain:us-gaap:CommonStockSharesOutstanding,dei:EntityCommonStockSharesOutstanding, then weighted-average diluted / basic if neither point-in-time concept is tagged). This matches the standard P/E-style multiples convention on Bloomberg / S&P / press tear sheets. The EV/EBITDA card usesEV = MktCap + Debt − Total Cashwith no NCI add-back — the headline enterprise-value number, not the operating-firm value. - Reverse-DCF + EPV
-
MktCap = price × TSM-scaled diluted shares(basic ×WeightedAverageNumberOfDilutedSharesOutstanding÷WeightedAverageNumberOfSharesOutstandingBasic), and the EV target the DCF reconciles to is the operating-firm EVMktCap + Debt + NCI − Excess Cash— what a strategic acquirer would pay for the operating business once they've paid lenders, retained the working-capital cash floor inside the operating value, and accounted for the minority claim on operating subsidiaries. Excess cash uses the operating-cash carve-out (2% × TTM revenue floor on the operating side).
For a typical filer the two market caps differ by <0.5% (the diluted scaling factor); the two EVs can differ by a few percent because of the cash-floor split and NCI inclusion.
- P/E (Trailing, Diluted)
-
Price-to-earnings on a trailing-twelve-month basis, using the
diluted share count so stock-based compensation and
convertibles dilute the denominator. A high P/E says investors
pay more dollars today for each dollar of reported accounting
profit — justified only if earnings are expected to grow fast
enough to pull the ratio back down. TTM EPS is the sum of the
latest four quarterly
us-gaap:EarningsPerShareDilutedfacts, falling back tous-gaap:IncomeLossFromContinuingOperationsPerDilutedSharefor filers that route EPS through the continuing-operations branch of the taxonomy (see EPS for why); when the latest filing is a 10-K we use the FY value directly. - P/E (Trailing, Underlying)
-
A second P/E card appears next to the headline GAAP P/E on
filers where the two trailing-EPS bases disagree by more
than 5%. The denominator switches to a TTM adjusted
EPS — sum of the four most-recent quarterly
epsActualvalues fromnextEarnings.history[], the same press-release figure analysts publish on each earnings call. Adjusted EPS strips out one-time items (restructuring charges, divestiture or asset-sale gains, tax-reform impacts, impairment write-downs) so the resulting P/E reflects the underlying earnings power of continuing operations rather than a TTM window distorted by a single quarter's one-off. GAAP and adjusted EPS converge most of the time; when they diverge, the gap usually means a material non-recurring item landed inside the trailing-twelve-month window.
Important caveats: (1) Adjusted EPS is a third-party normalisation, not GAAP. The adjustments reflect aggregator judgement about what counts as one-time, not the filer's own non-GAAP reconciliation. Different data vendors will produce different adjusted numbers for the same filer in the same quarter. (2) The card only fires when the divergence exceeds 5% AND four quarterly actuals are available AND those actuals align (within ~95 days) with the GAAP TTM window — otherwise the GAAP card alone is shown. (3) The two cards together are the right answer; resist any urge to "blend" them into a single number. - P/FCF
-
Price-to-free-cash-flow. Free cash flow = operating cash flow −
capital expenditures, so it strips out non-cash accruals and
forces you to account for the cash the business actually spent
on plant and equipment. Unlike P/E it can't be inflated by
aggressive revenue recognition or soft-dollar add-backs, which
is why value investors often prefer it. Sourced from the
latest fiscal year's
derived:FCFPerShare(built fromus-gaap:NetCashProvidedByUsedInOperatingActivitiesminusus-gaap:PaymentsToAcquirePropertyPlantAndEquipment); quarterly cash-flow facts are usually YTD-cumulative on 10-Qs, so summing four would double-count. - FCF Yield
- The inverse of P/FCF, shown as a percentage: how much free cash flow each dollar of share price buys in a year. A 5% FCF yield on the whole market cap is the cash-return version of a 20× P/FCF.
- EV/EBITDA
-
Enterprise value divided by earnings before interest, taxes,
depreciation, and amortization. EV adjusts market cap for the
capital structure (+debt, −cash), and EBITDA strips out how
the business financed its assets, so the pair lets you
compare firms with very different leverage and depreciation
policies more cleanly than P/E. EBITDA is built per quarter
as
us-gaap:OperatingIncomeLoss+ D&A and summed across four quarters for the TTM denominator. The D&A leg uses the same chain as the EPV adjusted variant; if none of the four concepts resolves on the latest quarters the card falls back to the latest fiscal-year value rather than stitching a stale window. As a defense-in-depth check we reject any 4-quarter window that fails either of two sanity bars: (1) start-to-end span exceeds 14 months — a real TTM has its endpoints 9 months apart, so a wider span signals a discontinuous tagging chain rather than a contiguous trailing year; (2) the window's end-date is more than 6 months older than the latest available quarterly period — i.e. the four hits are contiguous but stale, typical of filers whose tagging conventions changed mid-history. Either failure falls through to the latest-fiscal-year value rather than stitch a misleading number. - P/S
-
Price-to-sales, computed as market cap ÷ trailing-12-month
revenue. Usable even when a business is unprofitable, since
revenue almost always exists — which is also its weakness:
two companies with identical revenue but different margins
deserve wildly different multiples. Revenue uses
us-gaap:RevenueFromContractWithCustomerExcludingAssessedTaxwhen present, falling back throughRevenues,SalesRevenueNet, and the assessed-tax variant. - P/B
-
Price-to-book: market cap ÷ common book value, where common
book value is stockholders' equity less preferred stock at
carrying value (
us-gaap:PreferredStockValue). For filers without preferred stock — the majority — the formula collapses to market cap ÷ stockholders' equity. The subtraction matters for banks, insurers, and Berkshire-style structures with material preferred capital, where leaving it in the denominator overstates book value relative to the common-stock market cap in the numerator. Anchored on accounting net worth rather than earnings, so P/B is most informative for asset-heavy businesses (banks, insurers, industrials) where book value tracks liquidation value. Less useful for asset-light software firms whose real value sits in intangibles.
Negative book value. Aggressive buybacks at prices well above book (MCD, MO, PM, AZO, SBUX, LOW, and others) eventually push stockholders' equity below zero. The mechanical P/B against negative equity is a negative number that has no useful interpretation — it doesn't mean the stock is "cheap to book", it means there is no positive book left to anchor against. We surface "N/M" (not meaningful) on the latest-filing card and omit the bar from the historical chart for periods where common equity is ≤ 0; the gap in the chart is intentional and the card's basis line spells out the underlying equity figure so the reader can see what happened.
Historical bars: per-row TTM construction
The historical bar charts behind P/E, EV/EBITDA, and P/S apply the same trailing-twelve-month rule on every row, but the practical outcome differs by row type — so you'll occasionally see two cosmetic artefacts that are intentional, not data quality issues:
- FY rows use the fiscal-year value directly — a 10-K row labeled "FY 2023" carries the bare annual EPS / EBITDA / revenue, which is mathematically the TTM at the period end. The tooltip prose says "trailing-twelve-month" because that's still true; we don't substitute a row-specific phrase. The input row in the chart popover already calls out the actual basis used ("Annual Diluted EPS" on FY rows, "TTM Diluted EPS" on quarterly rows).
- Early quarterly rows can be empty. The rolling 4-quarter sum only fires once four contiguous quarterly facts have been observed, so the first three quarters at the start of any ticker's available history (or the first three after a mid-fiscal-year IPO) carry no TTM-based ratio even if subsequent quarters do. We don't backfill from annual EPS proportionally — synthesising quarterly history from annual values would silently mix tagging conventions and produce a number that doesn't match the filer's own quarterly disclosures. The gap is the honest signal: there isn't enough quarterly data yet to compute TTM.
- Negative-denominator FY rows are dropped. P/E,
P/FCF, FCF Yield, and EV / EBITDA are all "price (or enterprise
value) ÷ a flow that's supposed to be positive". A loss-making
year, a year of negative free cash flow, or a year where EBITDA
was negative produces a mathematically defined but interpretively
meaningless ratio (a negative P/E doesn't tell you anything about
how expensive the stock is — it just confirms the company lost
money). For those rows the historical bar chart and table omit
the period entirely. The "Today" callout that sits directly above
each chart applies the live formula without that filter,
so during a negative-flow year you'll see a card showing e.g.
P/FCF -65.94×sitting above a chart that has no bar for the matching fiscal year. Both are correct: the live card tells you what the mechanical formula returns today; the chart tells you the rows where the ratio was interpretively meaningful. Each affected concept page surfaces a callout listing the omitted periods (e.g. "2 annual periods omitted from the chart and table: FY 2024, FY 2025") so the gap is never silent. - Basic EPS fallback when diluted EPS isn't tagged.
P/E history prefers
us-gaap:EarningsPerShareDiluted; for periods where the filer didn't tag it, the calculation falls back tous-gaap:EarningsPerShareBasicrather than dropping the row. This is rare on modern filers but common pre-2014 (older Berkshire 10-Ks for example never tagged diluted EPS) and crops up intermittently when a single recent filing omits the diluted tag. Diluted and basic typically agree within ~1% on filers that report both, and on a money-losing year they're identical (no dilution from converts when a loss is being divided), so swapping in basic is an honest stand-in rather than a methodology change. Each chart row's input popover names the concept that actually fed the value: the input label reads "Annual / TTM Diluted EPS" by default, "TTM Basic EPS (fallback)" when basic was used, or "TTM Diluted EPS (mixed)" on a quarterly TTM row whose 4-quarter rolling buffer straddles a basic→diluted transition. The concept hyperlink in the popover points at whichever EPS tag actually drove the number so you can drill into the underlying fact's own chart. - One-off-charge outliers are annotated, not smoothed. Periods where a ratio (or per-share concept like EPS) deviates more than 2σ from the trailing 3-year mean are flagged with an asterisk in the table cell and listed in a callout above the chart. Examples: AAPL FY 2018's tax-repatriation charge spiked P/E for one year; many travel and hospitality filers' 2020 quarterly EPS readings were dragged below trend by COVID shutdowns; LEN and AN's recent FY P/FCF readings broke from their mid-cycle range when working-capital swings dominated operating cash flow. The bar is rendered as-is — these are real numbers from the filer's own books, and "cleaning" them would silently rewrite the disclosed history. Annotation is the right policy: the reader sees the spike, sees why we flagged it (the σ deviation + direction is in the row's tooltip), and can read the underlying 10-K for the one-off cause. The detection uses a per-row trailing window (3 prior annual periods, 12 prior quarterly periods — both representing a 3-year history on each cadence), requires at least 3 finite prior values, and additionally gates on a 25% relative-deviation floor so smooth-growth concepts whose σ collapses to a tiny number don't get false-positive flags. Limited to ratio, percent, and per-share-EPS units — dollar totals like Revenue or Total Assets grow consistently, so the outlier framing isn't useful there.
- Log y-axis when ratio range spans an order of magnitude. Ratio-typed concept charts (the six valuation derived metrics plus non-valuation ratios like Current Ratio and Debt/Equity) auto-switch the y-axis from linear to logarithmic when the populated value range — max ÷ min across the displayed periods — is 10× or more. Near-zero-EPS years produce mathematically valid but visually dominating spikes (CALM's FY 2023 P/E at ~872, ANF FY 2020 at ~546, PPC FY 2021 at ~212, THC's pre-2020 P/B near ~220, LAD and LEN's pinched-FCF FY rows at four-digit P/FCF): on a linear axis those bars flatten the rest of the history into a single horizontal line, hiding the ten- or fifteen-year context that makes the spike meaningful. The log transform is well-defined here because the backend gates each ratio with a strict-positive denominator filter (negative- denominator periods are surfaced separately via the negative-denominator callout), so every plotted point is greater than zero. Linear remains the default when the range is narrower than 10× — the bulk of the cohort sits at 2–5× compression, where linear is more legible. The chart heading badge prints "(LOG SCALE)" next to the unit label whenever the auto-switch fires; the underlying values (table cells, tooltips, the outlier asterisks) are unchanged.
Daily overlay (last 12 months)
Below the Annual + Quarterly historical bar charts on each of the six valuation derived ratio pages (P/E, P/FCF, FCF Yield, EV/EBITDA, P/S, P/B), a third "Daily (last 12 months)" card renders a daily-resolution line of the same ratio. It exists to answer the question the bars can't: "where is today's multiple relative to the path it traced between the last few filings?"
- Numerator: daily split-adjusted close. The same price series feeding the total-returns pages — split- adjusted, sourced from the daily price pipeline that runs after the NYSE close. Dividends are not reinvested into the numerator (the historical bars don't reinvest either, so the line and bars stay on a comparable basis).
- Denominator: a step-function of the most-recent filing's
TTM denominator. Whichever filing's
fileddate is the most recent on-or-before each daily price date supplies the period's TTM EPS / TTM FCF-per-share / TTM EBITDA / TTM Revenue / Stockholders' Equity, held flat from one filing to the next. The line steps the moment a 10-Q or 10-K hits EDGAR and stays flat in between. We resist any temptation to smooth or interpolate the denominator — making the line wobble continuously would imply continuous fundamentals data we don't have. The steps are intentional and document themselves. - Anchor convention is
filed, notperiodEnd. The historical bars are anchored atperiodEndbecause each bar reads "value AS OF the last day of the period". The daily overlay is anchored atfiledbecause each daily ratio reads "value the market could compute on this date" — the new TTM isn't knowable until the filing is published, which lands a few weeks past quarter-end. Both conventions are mathematically honest; they disagree by the gap between the period close and the filing date. - Limitation: preliminary press-release earnings beat the 10-Q by days. Companies typically publish a press- release earnings summary a few days before the formal 10-Q lands on EDGAR, and the market reprices on the press release. The overlay doesn't reflect that pre-announcement window — it assumes the market only "sees" the new TTM denominator on the EDGAR filing date. So the line will occasionally make a step that visibly lags the price action a few trading days before it, especially around earnings season.
- EV/EBITDA, P/S, P/B reuse the period's reference market
cap. Those three ratios bake market capitalization
into the formula, which means the daily overlay needs the
period's share count. We back it out implicitly:
shares = period market cap ÷ period close(both available on the same filing's historical bar inputs), then scale to today viadaily MC = daily close × shares. Buybacks / issuance between filings are not reflected mid-step — the share count is held flat alongside the rest of the denominator until the next filing, when both refresh together. For tickers with active programmes (MCD / AZO / O'Reilly et al.) this is a known minor source of overlay drift that the step transitions correct on each new filing. - Negative-denominator filings drop the entire step. The same gate the historical bars apply (non-positive TTM EPS / FCF / EBITDA / equity periods are interpretively meaningless) carries through to the overlay. If the most-recent filing for a given daily window has a non-positive denominator, the overlay line shows a gap on those days rather than a synthesized negative ratio. The historical-bar callout above already names the affected periods.
- Lazy-loaded. The price-series fetch and
line-chart construction don't fire until the card scrolls
into view (or, on browsers without
IntersectionObserver, immediately on render). Cold page loads pay nothing for readers who never scroll past the historical bars.
Earning Power Value (Greenwald)
The "Earning Power Value" block on each
/financials/{ticker}/valuation/ page sits between
the multiples cards and the reverse-DCF. It implements Bruce Greenwald's
no-growth fair-value floor (Value Investing: From Graham to Buffett
and Beyond, 2001): capitalise after-tax operating earnings (NOPAT)
at the firm's cost of capital (WACC), then bridge to common equity
with the same balance-sheet adjustments the reverse-DCF uses.
EPV is not a forecast or a target price. It's an earnings-power floor: what equity is worth if today's normalized operating profitability persists indefinitely, with zero growth premium and zero terminal-value uplift. Compare EPV per share against the current price — and against the reverse-DCF fair value below — to see how much of today's price is paying for steady-state earnings versus expected future growth.
Why normalize, instead of using TTM NOPAT
The capitalisation step (NOPAT ÷ WACC) compounds any
single-period distortion straight into EPV at 1/WACC: at
a 7% WACC, a $100M one-time charge to TTM EBIT moves enterprise EPV
by ~$1.4B before the equity bridge, and a cyclical filer at a peak or
trough in margins can swing 20–30%+ on the floor figure alone. Greenwald's
textbook recipe (Value Investing: From Graham to Buffett and
Beyond, 2001, ch. 5) explicitly normalises both margin and
revenue before capitalising — that's what makes the figure a floor
rather than a moving target.
Normalized NOPAT recipe
Both variants on the page derive NOPAT from the same normalisation:
Normalized margin = mean(latest 3 FY EBIT margins)
Normalisation revenue = median(latest 3 FY revenues) [3 FY available]
= mean(latest 2 FY revenues) [2 FY available]
= latest FY revenue [1 FY available]
= TTM revenue [no FY available]
= analyst forward FY (or TTM) [TTM EBIT carries
a segment-
disposition gain]
= pro-forma substituted into median/mean
[an FY in the
sampled window
tagged
BusinessAcquisitions
ProFormaRevenue
≥ reported × 1.05]
Normalized EBIT = Normalized margin × Normalisation revenue
NOPAT = Normalized EBIT × (1 − tax rate)
Margin: averaging across three full fiscal years washes out cyclical peaks/troughs and one-time charges that aren't separately tagged in XBRL. The 3-year window is short enough that secular margin shifts (e.g. a software company expanding gross margin from 60% to 75%) still flow through within a couple of refresh cycles, but long enough to dampen single-quarter noise.
Normalisation revenue: capitalising on the most recent quarter's revenue exposes EPV to a single-period distortion (M&A close, divestiture, pandemic shock) the same way raw TTM EBIT would. The median of the latest three FY revenues rejects one outlier year cleanly while keeping the input strictly backward-looking — analyst FY1/FY2 consensus is intentionally excluded so EPV remains the independent backward-looking sanity check on the forward-looking reverse-DCF, not a one-year-forward DCF. The 3-yr window matches the margin window so both EPV inputs are smoothed over the same horizon. For a filer with fewer than three FY periods filed (recent IPO, restated history) the recipe degrades down a ladder: 2-yr FY mean → 1-yr FY → TTM fallback, surfaced as a label in the build-up ladder so readers can see which level fired.
Divestiture-window override. The "backward
looking is more honest" argument flips when the trailing window
contains a structural break the FY history can't see. When the
TTM EBIT envelope flagged a material whole-segment disposition
gain (XBRL GainLossOnSaleOfBusiness or the
deprecated synonym GainLossOnDispositionOfBusiness,
sized at ≥5% of TTM EBIT — same materiality gate the reverse
DCF's ebitMargin0Adjusted uses), the latest 3 FY
revenues were sampled from quarters that still included the
divested business and overstate the go-forward run-rate. In
that case the ladder is overridden once: prefer the analyst
forward FY consensus revenue when available, with
TTM revenue as the fallback. Build-up ladder labels the row
"forward (divestiture-adjusted)" so readers see the override
fired. The gate is intentionally narrow — it does not
fire on GainLossOnDispositionOfAssets alone (PP&E
sales typically don't shrink the revenue base) or on filers
whose TTM gain came from non-divestiture sources (insurance
proceeds, contract terminations, FX). Mirrors the v22
EBIT-margin adjustment one layer deeper into the revenue input
so EPV and the reverse-DCF agree on a "underlying" baseline
rather than a divestiture-flattered TTM.
Acquisition-window override. The symmetric case
fires for partial-period acquisitions, where the reported FY
revenue understates the run-rate because the acquired entity
contributed only part of the year. When an FY in the 3-yr
window carries a filer-disclosed
BusinessAcquisitionsProFormaRevenue tag (the
filer's "as if owned at start of period" disclosure required
by ASC 805) materially higher than reported (≥5% uplift — same
materiality gate the divestiture path uses), the pro-forma
value substitutes for the reported value in the median / mean.
Build-up ladder labels the row "3-yr FY median
(acquisition-adjusted)" and the per-FY rows show both numbers
("FY2023 = $36.7B (pro-forma $36.7B ← reported $31.0B)") so
the override is auditable. The gate is one-sided
(proForma > reported only), so a divestiture
captured as a lower pro-forma value never flows through this
path. When both signals fire on the same filer, the
divestiture override takes precedence (segment-disposition
shrinkage is strictly more disruptive than partial-period
acquisition uplift).
Post-FY-merger step-up override. The pro-forma
path above only catches an acquisition that closed inside
a sampled FY. A transformative merger that closes after
the latest FY end (an all-stock combination or a large cash
acquisition) is invisible to it — every FY in the 3-yr window is
entirely pre-event, so the median predates the new scale. When a
business-combination concept
(BusinessCombinationConsiderationTransferred or
PaymentsToAcquireBusinessesNetOfCashAcquired) is
recorded in a period strictly after the latest FY end and
TTM revenue has stepped up more than 30% versus the prior FY, the
ladder is overridden to the analyst forward FY consensus (the
full-period combined-entity revenue) when available, else the TTM
run-rate. Build-up ladder labels the row "forward (post-FY-merger
step-up)". The gate requires an actual combination signal, not raw
growth — an organic >30% grower's lower 3-yr median is a
deliberately conservative floor, not a distortion to override.
Fallback: if the filer hasn't filed three full years of FY data
(recent IPOs, restated history) the normalisation degrades to
NOPAT = TTM_EBIT × (1 − tax rate) with a warning on the
page. The capitalised number is still produced so EPV stays present,
but readers are flagged that the floor is more sensitive to
single-period distortion than the normalized form.
Two variants on the page
- Normalized (default)
-
EnterpriseEPV = NOPAT ÷ WACC, with normalized NOPAT from the recipe above. This is what loads on first paint and what the headline EPV/share + premium-vs-price reflect. - Adjusted (less growth CapEx)
-
EnterpriseEPV = (NOPAT − growthCapEx) ÷ WACC, wheregrowthCapEx = max(0, TTM_CapEx − TTM_D&A). Treats the portion of CapEx in excess of D&A as growth investment that doesn't contribute to current earnings power, and floors the deduction at zero so a filer shrinking its asset base (CapEx < D&A) doesn't get a "negative growth CapEx" bonus added back to NOPAT. The toggle is hidden when no TTM D&A is available.
When the two variants diverge — and how to read the gap
For a steady-state filer where CapEx ≈ D&A (asset-light software, consumer staples in maintenance mode, late-stage tobacco), basic and adjusted converge — growth CapEx floors at zero and the two formulas agree. The variant toggle is mostly cosmetic. For a filer mid-investment-cycle where CapEx runs well above D&A (cable / telecom rolling out fiber + mobile, semis ramping fab capacity, oil & gas in a drilling phase, freight & rail in a fleet-renewal cycle), the two diverge sharply — and the *direction* is worth pausing on:
- Basic is the optimistic read. It capitalises NOPAT as though every dollar of CapEx in the latest TTM merely replaces wear. For a filer mid-cycle that implicitly assumes today's elevated CapEx will normalise back to D&A — i.e. the cycle ends and the growth investment lapses, leaving steady-state earnings power untouched.
- Adjusted is the pessimistic read. It subtracts the CapEx-above-D&A wedge from NOPAT and capitalises the remainder. That implicitly assumes today's growth CapEx is permanent — and produces zero offsetting NOPAT growth ever (no future subscribers, no fab ramp payoff, no fleet-renewal earnings uplift).
The truth typically sits between the two. Some of the elevated spend is genuinely growth and will lapse when the cycle ends; some is catch-up maintenance the bare D&A line under-states; and most of it eventually shows up in higher future NOPAT — captured by the reverse-DCF below, not by EPV (which is by construction zero-growth and backward-looking). The variant toggle is the lever a reader uses to put a bear/bull range around the floor.
Why the per-share gap can be enormous for leveraged filers. Growth CapEx is subtracted from NOPAT pre-tax (the tax shield on CapEx flows through future D&A, which is already inside NOPAT — tax-affecting the subtraction would double-count the shield). For a capital-intensive leveraged filer the wedge is small in enterprise terms but devastating at the equity stub. CHTR is the textbook case (Q1 2026 numbers, all rounded): normalised NOPAT $9.93B; growth CapEx ($12.12B − $8.74B) = $3.37B; earnings power $6.56B. Capitalising at WACC 6.47%: enterprise EPV drops from $153B (basic) to $101B (adjusted) — a 33% reduction. But the equity bridge subtracts $95.2B of debt and $4.7B of NCI on both sides, so equity EPV drops from $53.6B to $1.5B — a 97% reduction. Per share: $422 (basic) vs $11.69 (adjusted), a ~36× ratio on the same filer. The market price ($165 at review) sits between the two, implicitly pricing partial growth-CapEx productivity. Don't take either extreme as a fair value; treat them as the brackets the cycle has to land between.
Equity bridge
- + Excess cash
-
From the operating-cash carve-out —
total balance-sheet cash + short-term marketable securities, less
the 2%-TTM-revenue working-capital floor. Banks, insurers, and
REITs are exempt (operating cash floor not applied). The
summary equity-bridge table on the page renders both numbers
inline when the floor fires (
total $X − operating $Y), so a reader can verify by inspection that the bridge reconciles to the equity value rather than re-deriving the carve-out from the audit trail. - − Total debt
- Same debt rollup as the reverse-DCF (long-term debt and capital lease obligations + commercial paper + short-term borrowings + operating-lease liabilities + finance-lease liabilities). See balance-sheet aggregates for the full concept chain.
- − Minority interest
-
MinorityInterest+RedeemableNoncontrollingInterestEquityCarryingAmount, using book value as a proxy for market value (Damodaran's standard approximation). For most filers book and market NCI are within single-digit percentages and the proxy is harmless. Filers where the divergence matters: parent-with-minority structures where the minority units are exchangeable into the parent's listed common (CHTR's Charter Holdings common units, GOOG/L dual-class with public Class C, BRK.A/B share-class conversion, certain MLPs and partnership-converted REITs). Book NCI on those filers builds with the subsidiary's retained earnings even as the underlying units' market value moves with the parent's stock; the two can diverge 30%+ in either direction. The page reports book — readers who care about the look-through claim should compare the NCI line tounits_outstanding × parent_share_pricefrom the latest 10-K's capital-structure note. A pending merger that absorbs the NCI (e.g. Liberty Broadband ↔ Charter close mid-2027) collapses the divergence on close. - ÷ Diluted shares
- Same diluted-share count the reverse-DCF uses. See shares & historical market cap for how multi-class filers are handled.
WACC clamp warning
EPV is the most WACC-sensitive number on the page — a 1pp swing in WACC at 7% moves enterprise EPV by ~14%. Our WACC is clamped to [5%, 16%]; the page surfaces a warning in the WACC ladder row when the unclamped value falls below the 5% floor, because EPV at the floor is fragile and probably understated. The ceiling clamp understates EPV less dramatically.
XBRL concepts (variants beyond what's elsewhere)
EPV reuses every concept the reverse-DCF reads (EBIT, operating cash, debt, NCI, shares). The adjusted variant additionally needs TTM Depreciation & Amortisation, chained in this priority order:
us-gaap:DepreciationDepletionAndAmortizationus-gaap:DepreciationAndAmortizationus-gaap:DepreciationAmortizationAndAccretionNetus-gaap:Depreciation
DepreciationAmortizationAndAccretionNet covers
cable, telecom, utility, oil-and-gas, and mining filers (CHTR,
T, VZ, NOC, RTX-class) that fold asset-retirement-obligation
accretion into the same line. It outranks the bare
Depreciation fallback because the latter excludes
amortization of intangibles entirely — when both exist, the
bare-Depreciation tag understates true D&A by ~5–10% on the
affected cohort, which propagates into derived:EBITDA,
the EV/EBITDA card, and the EPV-adjusted growth-CapEx subtraction.
Expectations scenario (reverse-DCF)
The "expectations investing" block on each
/financials/{ticker}/valuation/ page is a
Rappaport-style reverse-DCF: we take the current enterprise
value as given and construct the operating path that
reconciles with it. The scenario's levers (Y1 growth, Y2
growth, plateau length, long-run EBIT margin, ROIC fade) are
not predictions; each is built from rules stated below, and
the solver flexes the margin lever until the discounted cash
flows match today's EV. The "fair value per share" line is
just a reconciliation check — ≈ 0 by construction whenever
the normal solver bracket clears.
Base numbers (year zero)
- Anchor & TTM
-
The base revenue, EBIT, OCF, and CapEx feeding the DCF are
read off the most recent filing of any form. When the
anchor is a 10-K the numbers are taken as-is. When it's a
10-Q, income-statement items (Revenue, OperatingIncomeLoss)
are reconstructed as the sum of the last four per-quarter
facts; cash-flow items (OCF, CapEx), which are usually
YTD-cumulative on 10-Qs, use the identity
TTM = prior-FY + anchor-YTD − prior-year-same-quarter-YTD. Anchor period, method, and contributing-fact audit trail are surfaced on the page under "Facts" and in the audit block (section 1). - Starting EBIT margin
-
Base margin is the anchor TTM margin
(
OperatingIncomeLoss ÷ Revenue). When the latest FY margin deviates from the 3-year mean FY margin we blend the two on a continuous ramp so the run-rate margin isn't anchored on a single anomalous year (cyclical filers like CALM or TSLA pull strongly toward the mean; quiet filers stay on the latest FY):- Gap ≤ 4pp: 100% latest FY margin — recent and trailing margins agree; no smoothing needed.
- 4pp < gap < 6pp: linear blend between latest FY and 3-year mean. At a 5pp gap the starting margin is a 50/50 mix; at 4.5pp it's 25%-mean/75%-current; at 5.5pp it's 75%-mean/25%-current. The audit text under the Facts grid surfaces the exact mix per ticker so the blend is auditable.
- Gap ≥ 6pp: 100% 3-year mean — the latest FY is far enough from the trailing run rate that we treat it as anomalous and ignore it for the anchor.
- Tax rate
- Year 0: 3-year median of
derived:EffectiveTaxRatewhen three sane annual values (0 < rate < 60%) are available; otherwise the latest FY's effective rate when it's sane; otherwise the 21% US statutory default. REITs are pinned to 0% because the pass-through structure makes corporate-level tax structurally near zero.
Year-by-year fade. When the year-0 rate is below the US federal statutory rate (21%) — typically because the most recent FY ran an NOL, captured outsized R&D credits, or carried a foreign-mix tilt — the explicit forecast linearly fades the effective rate from the year-0 reading to a terminal 21% by year {horizon}. Holding the NOL-year rate as the perpetuity rate would compound a one-off benefit across the whole DCF (PINS FY2025's 6.5% rate would inflate NOPAT by ~18% across the horizon if held flat). Filers already at or above 21% see no fade. WACC's after-tax cost of debt uses the terminal rate so the discount rate is consistent with the long-run cash flows it discounts; using a one-off NOL rate for WACC would understate the cost of capital across the horizon. - WACC
-
Computed per filer rather than held at a 9% global default.
Cost of equity is CAPM:
Re = Rf + β × ERP, where:- Rf is the trailing 90-day
mean of FRED's DGS10 (10-year Treasury constant-maturity
yield), refreshed every weekday by the
treasury_yields.ymlworkflow. The 90-day window smooths daily noise — a single FOMC print can swing 20+ bp — without lagging a rate cycle. - β is a 5-year weekly log-return
regression against VOO (S&P 500 proxy), computed
by
scripts/build-betas.mjsat every total-returns refresh. Tickers with <2 years of history are skipped and fall back to the WACC default.
Floored at the cost-of-equity step. The empirical security market line is much flatter than CAPM predicts (Frazzini-Pedersen 2014, "Betting Against Beta"; Fama-French 1992): low-β stocks have historically delivered higher risk-adjusted returns thanRf + β × ERPsays they should, meaning unfloored CAPM systematically under-estimates required return for low-β filers. We usemax(β, floor)in the CAPM calc so the cost-of-equity floor never drops below the relevant required-return anchor.
Default floor 1.0 (market β). Cyclicals — Industrials, Consumer Discretionary, Financials, Information Technology, Energy, Materials — fall through to this default. For those sectors, 1.0 is roughly the structural mid-cycle β anyway, so the floor is non-binding for the average filer and only catches outlier low readings.
Sector-specific floors for genuinely defensive sectors where 1.0 is structurally too high — the empirical β sits well below the market and that's signal, not noise. Sourced from Damodaran's industry-β central tendency and set conservatively (close to the median, not the bottom):- Utilities: 0.55
- Consumer Staples: 0.65
- Real Estate: 0.70
- Health Care: 0.80
- Communication: 0.85
- ERP is Damodaran's latest US total ERP (mature ERP + US country-risk premium), pulled from the ERP master JSON the indicator pipeline already builds.
- Cash-flow walkback (preferred for the leveraged
cohort).
Rd = TTM InterestPaidNet ÷ avg(Debtt, Debtt-1)— a directly-measured pre-tax cost of debt computed from the cash-flow statement. Fires when the filer'sD/V ≥ 25%, the cash-flow statement tagsus-gaap:InterestPaidNet(or legacyInterestPaid), at least two FY snapshots of total debt are available so the denominator is a trailing average rather than a single point-in-time number, and the resulting rate is in[1%, 20%](out-of-band implies either no real debt service or CCC-level distress the coverage table handles better). The walkback is the honest input where it's available — for the leveraged-asset cohort (cable, telecom, auto, utility-adjacent industrials) the synthetic Rf+spread approach below typically overstates real cost of debt by 150-250bp because Damodaran's coverage table is a coarse stair function calibrated to non-regulated industrials. CHTR FY2025 example: TTM cash interest ~$5.0B on avg debt ~$94B = ~5.3% pretax vs the synthetic 7.7% (BB, EBIT/Interest ≈ 2.6×) — atD/V = 0.83that 240bp pretax error compounds into ~150bp of WACC overstatement, which the reverse-DCF would otherwise bake into the implied operating path.
Why the gates. TheD/V ≥ 25%floor avoids surfacing a noisy walkback for cash-rich filers paying minimal interest (small numerator on small denominator → unstable rate). The two-FY denominator captures "average debt during the period the cash interest was paid" rather than justDebtt— important for filers who refinanced or paid down debt mid-year. The[1%, 20%]sanity band is a circuit-breaker; out-of-band hands the filer to the synthetic path. - Synthetic credit rating (fallback).
Rd = Rf + creditSpread(coverage), where the spread is looked up from Damodaran's interest-coverage table (EBIT ÷ Interest Expense→ AAA/AA/A/.../D rating bucket → typical spread). When the latest filing doesn't tag a standalone interest-expense concept (AAPL stopped after FY2023, bundling interest intoNonoperatingIncomeExpense), the page walks back up to three fiscal years of disclosure and falls back further to the cash-flow-statementInterestPaidNet/InterestPaidfor the coverage numerator. Filers with no debt fall through harmlessly becauseD/V = 0washes out the term. The audit trail prints "synthetic [RATING], EBIT ÷ interest = N×" when this tier fires.
Rdafter-tax = Rd × (1 − t)).
Coverage-uncomputable fallback. When neither the income-statement walk-back nor the cash-flow-statement fallback finds a usable interest figure — or when EBIT is negative or zero so the ratio is meaningless — the page previously defaulted to a flat BBB (1.85%spread) regardless of the filer's leverage or distress signal. That over-rated negative-EBIT filers and under-rated conservative balance sheets. The replacement uses leverage (D / (D + E)) plus an EBIT-sign signal:EBIT < 0withD/V > 5%→ B+ (4.5%) — distress: coverage can't help and the filer can't service current debt out of operating earnings.D/V < 10%→ A− (1.45%) — conservative balance sheet; the absence of a tagged interest expense isn't itself credit stress.D/V10–30% → BBB (1.85%) — typical investment-grade structure.D/V30–50% → BB+ (2.85%) — elevated leverage without an earnings cushion to defend the rating.D/V ≥ 50%→ BB (3.5%) — high leverage; the structure itself implies sub-investment-grade pricing.
Banks carve-out. For commercial / investment banks (those tagging bothus-gaap:InterestIncomeExpenseNetandus-gaap:NoninterestIncome), interest expense is a cost of goods rather than a financing cost, so EBIT ÷ Interest doesn't measure credit quality. We substitute Damodaran's 2024 financial-services sector default of A− (1.45%spread) — close to the median large-bank rating without claiming per-filer accuracy. Insurers keep the standard coverage table because their interest expense is a genuine financing cost on holding-co debt.
Regulated-utility carve-out. Utilities run on rate-base capital structures with high leverage approved by their regulator, so EBIT ÷ Interest typically lands at 2–3.5× and the Damodaran large-firm coverage table buckets them into B+/BB junk (DUK 2.4× → B+, AEP 2.9× → BB, XEL 1.8× → B) despite their actual S&P ratings sitting in the BBB+/A− range. The table is calibrated for non-regulated industrials and doesn't know the leverage is regulator-blessed. We detect the utility signature via the regulator-only XBRL concepts (us-gaap:RegulatoryAssetsNoncurrent,us-gaap:RegulatoryLiabilityNoncurrent,us-gaap:PublicUtilitiesPropertyPlantAndEquipmentNet) and substitute the same Damodaran sector default of A− (1.45%spread). No industrial, oil-major, or tech filer in the S&P 500 tags any of these concepts, so the override is utility-specific.
REIT carve-out. REITs run with structurally high leverage (D/Voften 0.4–0.6) backing a rent-roll income stream that produces ~2–3× coverage by EBIT measure — which the industrial coverage table maps to BB junk (EQIX 2.1× → BB, AMT 2.4× → B+, WELL 1.6× → B). Real S&P ratings for these issuers cluster BBB / BBB+ / A− because the lender's view is "rent-paying tenants on long leases" rather than "cyclical EBIT". Detection mirrors the cash-chain REIT signature (us-gaap:RealEstateInvestmentPropertyNet > 50%ofus-gaap:Assets) and we substitute Damodaran's REIT sector default of BBB (1.85%spread).
Sector floors / ceilings. The Damodaran coverage table is calibrated for non-regulated industrials whoseInterestExpenseroughly tracks total debt. Two failure modes the carve-outs above don't catch:- Lease-heavy retailers. Apparel
(ANF, GPS, AEO, URBN), specialty retail (ULTA), some
hotels/restaurants tag tiny credit-facility commitment
fees as
InterestExpensewhile the operating-lease interest sits insideLeaseCost.EBIT/Interestexplodes (ANF: 294×) and the engine prints "AAA" on a filer with no real public credit rating — visibly absurd given the operating-lease liability that's been pulled intototalDebtfor the EV bridge. Fix: a per-GICS-sector ceiling caps the synthetic rating where the table isn't trustworthy (Consumer Discretionary capped atBB+, Communication / Real Estate capped atA, Materials capped atA). - Filers slipping past the bank/utility/REIT
carve-outs. A diversified financial that doesn't
tag both
InterestIncomeExpenseNetandNoninterestIncome, or a non-REIT real-estate operator that fails theRealEstateInvestmentPropertyNet/Assets > 50%test, would otherwise run the unmodified industrial table and might land at sub-investment-grade junk on artificial coverage. Fix: the same per-sector table imposes a minimum rating (Financials floored atA−, UtilitiesBBB, Real EstateBB).
data/credit/sector-floors.jsonand is consulted insidecomputeFilerWaccafter the coverage-table lookup; the carve-outs above take precedence (a bank pinned at A− by the carve-out is never re-floored downstream). Calibration is intentionally coarse — these are bounds against absurdity, not point estimates. Per-filer accuracy at the sub-industry level (e.g. capping cable & satellite at BB while leaving Internet platforms unbounded inside the same GICS Communication sector) would require GICS sub-industry tags, which aren't in the iShares holdings file we already parse for sector. The current sector-level calibration accepts collateral cost on a few healthy Consumer-Discretionary names in exchange for sweeping the "AAA on apparel retail" credibility gap off every page in one pass. The audit trail prints the pre-floor rating + the sector label + the binding side ("capped to ... ceiling" / "raised to ... floor") whenever the floor fires, so a reader can tell at a glance that the rating reflects the table and not raw coverage.
Capital-structure weights are market value of equity (current price × diluted shares) and book debt (the same total-debt figure used for the EV bridge, including operating-lease liabilities under ASC 842). The weighted sum is the displayed WACC. Computed values are clamped to the band [5%, 16%] and tagged "clamped" when the bound activates; out-of-band inputs typically signal a recent IPO with sparse β history or distressed coverage where the synthetic-rating extrapolation gets unreliable.
Terminal WACC fade (cash-flow-walkback cohort only). The walkback rate is the realised book yield on legacy paper —TTM cash interest ÷ avg total debt. For the leveraged-asset cohort (cable, telecom, utility-adjacent industrials) that paper was issued at coupons set in a prior rate regime, so the walkback can sit materially below today's marginal new-issue yield (CMCSA: ~3.7% pretax walkback vs Rf ~4.2% vs ~5.3% sector marginal). Across the 10-year DCF horizon every dollar of debt principal eventually rolls and refinances at then-prevailing rates, so the terminal cost of debt converges upward to the marginal floor rather than pinning to today's lagged book.
The terminal floor isRf + spread(sector best-rating), where the best-rating bucket per sector comes fromdata/credit/sector-floors.json(the same table that bounds the synthetic-rating engine) — for Communication / Real Estate / Materials this isA(1.05%); for Consumer Staples / Utilities / Energy it'sAA(0.69%); Financials isAAA(0.59%). We use the best-rating bucket as a floor (lowest plausible spread for the sector at large) — terminal cost of debt sits atmax(walkback, marginal floor), so a walkback already above the floor produces no fade. Terminal WACC is re-weighted at the same E/V and D/V as current WACC and obeys the same[5%, 16%]clamp.
Inside the explicit window the WACC fades linearly from current atyear 0to terminal at year 10 (WACCt = WACC + (terminalWACC − WACC) · t/10), and the perpetuity capitalisation at year 10 uses the terminal WACC. The discount factor is generalised to the cumulative-product formD(t) = ∏i=1..t−1 1 ÷ (1 + WACCi) · 1 ÷ √(1 + WACCt)so the mid-year convention extends continuously across the fade — when terminal equals current (the no-fade cohort: synthetic-rating filers, sector-override filers, and walkback filers already above the marginal floor), the factor collapses bytewise to the legacy1 ÷ (1 + WACC)t − 0.5. Terminal ROIC anchors at the terminal WACC (no economic profit at perpetuity, which would be inconsistent with a higher terminal discount rate). On CMCSA-class filers a 60-bp terminal-WACC lift translates into roughly 15–20% lower terminal value, which materially shrinks the gap between the model's fair value and the price-implied scenarios. EPV uses the current WACC throughout (single-rate capitalisation by construction); the EPV box flags the walkback gap so a reader can see where the two views diverge.
The synthetic-rating and sector-override paths already use today'sRfin their cost-of-debt formula (Rf + creditSpreadis a forward / marginal rate by construction), so terminal == current there and no fade applies.
Terminal growth is held at 2.5% and horizon at 10 years across all tickers. To stress-test any single input, the "Open this scenario in the calculator" link pre-fills every DCF input into/calculators/expectations/where WACC, growth, margin, and ROIC can all be overridden and re-solved. The calculator runs a single-rate WACC (no fade), so its EV will sit slightly above the page's for the walkback-fade cohort. - Rf is the trailing 90-day
mean of FRED's DGS10 (10-year Treasury constant-maturity
yield), refreshed every weekday by the
- Discounting
-
Mid-year convention: explicit-period FCFs are discounted by
1 ÷ (1 + WACC)t − 0.5, since cash flows arrive across the year rather than landing on December 31. The terminal value uses the same convention (1 ÷ (1 + WACC)N − 0.5) so the explicit window and the perpetuity share a discount basis. Versus end-of-year discounting this lifts NPV by roughly(1 + WACC)0.5 − 1 ≈ 4.4%at WACC = 9%.
Capital efficiency (ROIC)
- Starting ROIC
-
Raw ROIC₀ =
NOPAT ÷ Invested Capital, whereInvested Capital = Total Debt + Book Equity − Excess Cash − Net Deferred Tax(excess = total cash minus the operating-cash floor; see operating-cash carve-out above). Capped at 40% for the DCF path. The cap exists because aggressive buybacks shrink book equity (and thus IC); filers like AAPL would otherwise show a raw ROIC above 100%, which the DCF would then treat as an infinitely repeatable rate of return. 40% is still generous versus the highest sustained real-world ROICs (LVMH, Mastercard territory). The uncapped raw value is displayed for honesty, and the ROIC override is threaded into the calculator so the hub and calculator show the same starting rate.
Net deferred-tax adjustment. DTAs (NOL carryforwards and credit carryforwards, post valuation allowance) and DTLs (timing differences from accelerated depreciation, etc.) are tax-accounting artifacts, not capital deployed in operations. Per the BS identityEquity = Assets − Liabilities— with DTA inside Assets and DTL inside Liabilities — an equity-based IC inadvertently absorbs them, so we strip the net position back out (subtract net DTA, equivalently add back net DTL). Material for NOL-rich filers like Pinterest (a 1.6B DTA on a 4.7B equity base would otherwise crush ROIC₀ to ~10% and have the DCF model NOPAT growth as requiring more reinvestment than it generates, printing negative early-year FCF that has no relationship to the firm's actual cash generation).
Post-ASC-842 lease treatment. Total debt here includes the operating-lease liability (along with the underfunded pension obligation when present), so a reader familiar with pre-ASC-842 conventions might wonder whether the corresponding ROU asset is captured. It is — the ROU sits inside total assets on the post-ASC-842 balance sheet, and book equity (Assets − Liabilities) absorbs it, soD + E − Excess Cashreflects the full operating-capital base without an explicit add-back. The imputed-interest portion of operating-lease expense remains inside GAAPOperatingIncomeLoss(rather than being moved below the line into interest expense), so NOPAT and ROIC are marginally understated for leasing-heavy filers versus a fully Damodaran-adjusted treatment; we accept the small inconsistency rather than introduce a per-period imputed-interest add-back that would compound awkwardly through the projection. - Terminal ROIC & fade
-
Terminal ROIC = WACC (floored at 5% to keep the formula
well-defined for low-WACC filers). This is the no-economic-
moat-at-infinity null hypothesis — at terminal, a typical
filer earns exactly its cost of capital, so growth past the
horizon neither creates nor destroys value
(
NOPAT × (WACC − g) ÷ (WACC × (WACC − g)) = NOPAT ÷ WACC, the no-growth perpetuity). Genuine compounders that earn excess returns into perpetuity exist, but assuming them by default would build permanent value creation into every ticker. By default the ROIC path fades linearly from ROIC₀ to terminal across the 10-year horizon, which prevents capital-light filers from generating negative early-year FCF through spurious reinvestment sizing. - Reinvestment cap (FCF ≥ 0)
-
Per-year reinvestment is capped at NOPAT, so explicit-window
FCF can't go negative. The accounting formula
Reinvestment = ΔNOPAT ÷ ROICanswers "how much capital, at the firm's blended ROIC, is needed to grow NOPAT by ΔN" — but for filers whose price implies aggressive growth the always-solving solver can drive Y1 growth bumps high enough that the implied reinvestment exceeds NOPAT for years in a row. That isn't wrong arithmetically (it's saying the firm would have to raise external capital to fund growth at this pace), but it prints negative model FCF that looks unrelated to the firm's actual cash generation. Clamping to NOPAT enforces "the explicit-window scenario is self-funded" — when the cap binds, the table showsReinvestment = NOPAT, FCF = 0, signalling that the price requires growth fast enough to absorb every dollar NOPAT generates. Terminal-year reinvestment isn't capped (terminal growth is 2.5% and a perpetuity reinvestment rate ofg ÷ ROIC≈ 28% never approaches NOPAT). - Reinvestment formula (3-tier ladder)
-
The standard Damodaran growth-firm closure
Reinvestment_t = ΔRevenue_t ÷ salesToCapital(wheresalesToCapital = ΔRev_3y ÷ netReinvest_3y) collapses to noise whenever EITHER side of the historical ratio is small relative to the revenue base. Two failure modes show up most often:- Mode A — leveraged-cohort flat revenue. When ΔRev is essentially zero on a large base (cable / telecom / utility / freight in their build-out years), the ratio collapses toward zero and implies "every dollar of revenue growth costs $13+ of capital" — mathematically true, but only because the numerator is rounding noise.
- Mode B — harvest-window high revenue growth on tiny CapEx. When a filer is pruning capacity and re-pricing into a brand revival (post-restructuring retail, asset-light services), the ratio explodes upward and implies "12.5¢ of capital funds $1 of revenue growth" — again mathematically true, but only because the denominator is harvest-window noise.
- Tier 1 — Standard salesToCapital.
Fires only when all three checks pass:
|ΔRev_3y| ÷ avgRev_3y > 1%(numerator carries signal),netReinvest_3y ÷ avgRev_3y > 1.5%(denominator carries signal), and the resulting s2c sits inside the typical Damodaran-sector band0.5 ≤ s2c ≤ 8. AAPL/MSFT/COST-class healthy compounders cluster at s2c 1–3 and clear all three. - Tier 2 — CapEx-of-revenue heuristic.
When any tier-1 check fails AND the TTM signal is
computable, the model substitutes
capexOfRevenueRatio = (CapEx_TTM − D&A_TTM) ÷ Revenue_TTMand applies it to each year's revenue in the projection (not its delta). Floored at 0% — a filer whose D&A exceeds CapEx is harvesting installed capital, not earning negative reinvestment. Captures ANF's actual ~1.6% per-year reinvestment vs the artifact 0.3% the standard formula would imply, and CHTR's actual ~6% per-year vs the artifact ~zero in years where ΔRev is small. - Tier 3 — ΔNOPAT ÷ ROIC fallback. When neither tier-1 nor tier-2 inputs are usable (no clean 3-year CapEx + D&A history AND no TTM signal — typically a freshly-IPO'd filer or one with materially missing XBRL tags), reinvestment is backed out from the year's NOPAT change and the year's modelled ROIC.
NOPAT capstill binds on top of every tier (FCF ≥ 0 in every explicit year). The audit trail on each ticker's valuation page prints which tier fired, which gate failed (when not tier-1), and the underlying components — so the reader can reconcile the year-by-year reinvestment column to either a $-per-year, a %-of-revenue, or the ΔNOPAT/ROIC closure. - Elevated-CapEx harvest window
- When latest-period CapEx is more than 1.4× the 3-year mean and CapEx is at least 5% of revenue, we treat the filer as mid-investment in a capital-intensive build-out (AI infra, hyperscalers, logistics). In that case the scenario holds ROIC flat at ROIC₀ for five years (the "harvest window") and only then fades to terminal over the remaining five. Both gates must clear — the 5%-of-revenue gate screens out fabless / capital-light filers whose year-to-year CapEx swings would otherwise trigger the heuristic. Terminal ROIC is unchanged either way so the Gordon-growth TV stays honest; the relief is entirely inside the explicit forecast window.
Growth inputs
- Growth source priority
-
- Analyst consensus (absolute forecast).
When analyst current-FY revenue in dollars is
available, Y1 growth is
(analyst currentFY ÷ TTM base) − 1and Y2 growth is(analyst nextFY ÷ analyst currentFY) − 1. Using absolute forecasts avoids double-counting: if our base is TTM but the analyst growth % is FY-over-FY, applying the %-growth directly would stack 12 months of forecast growth on top of a base that already contains some of those months. - Analyst consensus (growth %). When only the % is available, use it directly and accept the TTM-vs-FY mismatch.
- Trailing 3-year revenue CAGR (from the most recent four FY revenue points), when four full FYs exist in the filings.
- Observed YoY growth (TTM revenue vs prior-year TTM), as a last resort.
Both Y1 and Y2 rates are clamped to the range
[−30%, +60%]— the floor lets analyst-forecast declines through honestly (CALM's egg-cycle reversion, sector downturns) instead of pinning them at terminal growth; the ceiling caps one-off 80%+ spikes from rare low-base periods. - Analyst consensus (absolute forecast).
When analyst current-FY revenue in dollars is
available, Y1 growth is
Growth path construction
- Plateau-holding rate
- Year 1 uses the Y1 rate from the source. From year 2 through the end of the plateau the scenario holds the Y2 rate when analysts provide one; when no Y2 forecast is available it holds the Y1 rate across the plateau. Y2 is treated as the run-rate after the first-year comp effect rolls off, not a one-year step-down that reverts to Y1.
- Plateau length (tier rule)
-
Length is tiered by the plateau-holding rate (Y2 when
present, otherwise Y1):
rate < 15% → 3 years,rate < 25% → 5 years,rate ≥ 25% → 7 years. Fast-growers realistically keep their rate longer before fading, so the tier prevents the solver from compressing all the growth into three years and then piling margin expansion on top. - Compound-growth cap
-
The plateau's total compound growth is capped at 10× base
revenue:
(1 + Y1) × (1 + plateau_rate)^(n − 1) ≤ 10. If the tier length violates the cap, the plateau is shortened one year at a time until it fits. Without the cap a 60% Y1 compounded for seven years alone is 27×, which is beyond the realm of realistic revenue scales. - Fade window
- After the plateau, growth fades linearly from the plateau-end rate to terminal growth (2.5%) over the remaining years of the 10-year horizon.
Margin path & solver
- Margin path
-
Linear interpolation from the starting margin (year 0) to
the solver's target margin (year 10):
margin_t = start + (target − start) × (t ÷ 10). The target is what the solver finds; the starting point is fixed by the filings. - Solver ladder
-
The solver bisects the target margin to match the DCF's PV
to today's enterprise value, stepping through this ladder
until a feasible solution is reached:
- Normal margin bracket, no growth bump, tier
plateau. Upper bracket =
max(3-yr max EBIT margin × 1.15, starting margin × 1.20), capped at an absolute 55%. Lower bracket =max(−5%, starting margin − 15pp). The 3-yr max anchor prevents the solver from silently landing on an ahistorical margin when the price is easy to reconcile. - Growth bumps (+2pp, +4pp, …, +20pp). Y1 and Y2 are nudged upward in 2pp steps, re-clamped to 60%, and the normal bracket is retried at each step. The bump is applied to both years so the plateau doesn't become an abrupt step-up.
- Extended plateau (+2 years). If the full bump ladder fails, the plateau is extended by two years (capped at 7) and the full bump ladder is retried at the longer plateau.
- Widened margin band. Final fallback:
reset growth to the source (no bumps), widen the
margin bracket to
[−10%, 80%], and solve once. The scenario's margin may land below the 3-yr minimum (when the EV is low enough that compression clears it) or above the 3-yr maximum (when the EV demands unseen expansion).
Every attempt — plateau, bump, solved margin, resulting EV, feasibility — is surfaced in section 7 of the audit block on the valuation page.
- Normal margin bracket, no growth bump, tier
plateau. Upper bracket =
- Path stretch flag
-
The solver's stretch label measures whether the scenario
deviates from the source data at year 1 (growth bump) and
year 10 (terminal margin band). It does not measure
whether the projection's intermediate years
(Y1–Y9) sit at margin levels the filer has produced before.
Path stretch closes that gap — it compares the per-year
operating margin path against the filer's own historical
FY EBIT-margin distribution and trips a "Path stretch"
badge when any of three sub-flags fire.
- Margin history. We walk every available
FY in the filings and compute
p25 / p50 / p75on a 10–90 trimmed distribution (drop the top + bottom 10% before the percentile calc — preserves trend filers while suppressing single-year shocks like COVID, tax- repatriation hits, or re-opening bounces). Theminandmaxstay untrimmed: we want the filer's actual extremes for the "above max-ever" trigger. When fewer than 8 FY are available the percentiles are too noisy to be meaningful — the flag is suppressed entirely and the existingnear-consensuslabel stands. - Sub-flag 1: extended above-typical.
extendedRevivalCount= number of projection years wheremargin_y > filer_p75. Trips when 4+ years sit above the filer's 75th percentile — calibrated against revival-cycle filers (post- restructuring retail, consumer-brand revivals) without false-routing healthy growth filers whose margins fade below p75 by Y3. - Sub-flag 2: above-max-ever.
unprecedentedYearCount= number of projection years wheremargin_y > filer_max_ever. Trips on a single year above the filer's all-time high — the most surprising failure mode (the projection is asking for a margin level the filer has never produced). - Sub-flag 3: severe fade.
severeCompressionRatio=terminal_margin / starting_margin. Trips below 0.5 — the existing margin-compression branch fires only when terminal − start < −10pp absolute, which misses proportional fades (a 13% start fading to 5% is severe in ratio terms but only −8pp absolute).
Precedence. Path-stretch slots into the existing
stretchKindchain after the stress / margin-compression / margin-expansion / growth-stretched / both-stretched branches and beforenear-consensus. So the existing checks keep their precedence and path-stretch only refines the false-comfort case. When more than one sub-flag fires, the badge label names the most surprising binding trigger: unprecedented-margin > extended-revival > severe-compression. The audit-block readout shows all three counts so the reader can see the full picture.Why filer-own history, not sector medians. Sector medians smooth out exactly the cyclicality the flag is designed to surface — a revival-retail filer's historical p75 is far below the sector's, and that gap is the signal. Sector context belongs in the WACC's synthetic-rating sector floor (a different page section) where the input is a credit-cycle fact, not a per-filer operating-history fact.
- Margin history. We walk every available
FY in the filings and compute
Flag colours
Each lever the scenario lands on is coloured by where its level sits vs a reference (tier default, 3-yr historical band, source growth): green when the scenario's level is at or below the reference, amber when it sits above, and red when the solver had to step outside the historical band entirely. The colour describes the scenario's own choice, not an under/overvalued call; the model doesn't know whether the filings' history will persist, only where the reconciliation sits relative to it.
Special situations
The Earning Power Value and reverse-DCF models above both lean on operating continuity — EPV normalises against a multi-year EBIT-margin window, and the reverse-DCF anchors the forward-margin envelope on the same history. When a filer's recent history no longer represents the entity going forward, both models produce headline numbers anchored on the pre-transformation economics, and the green/red premium chips end up describing a company that no longer exists. The page suppresses those headline conclusions and surfaces a red banner whenever any of the detectors below fires, while keeping the full audit trail visible because the underlying math is still useful diagnostically.
Six categories the models can't handle
- Material divestitures or spin-offs within TTM. The freshly-divested parent has a TTM window that mixes pre- and post-disposition periods; the long-history normalisation treats the discontinued segment's margins as the filer's ongoing economics. Examples in recent history: GE / Vernova / Aerospace, IBM / Kyndryl, JNJ / Kenvue, AT&T / WBD, CommScope / Amphenol (renamed Vistance Networks).
- Net-cash deep-value plays. When the cash hoard is the asset rather than operating earnings power, EPV's "capitalise NOPAT at WACC" lens systematically understates value relative to the balance-sheet liquidation floor.
- Recent IPOs or re-listings. Without enough FY history (less than ~5 years) the trimmed margin envelope is too narrow to be meaningful and the reverse-DCF's history-anchored target margin band is unstable.
- Asset-rich, earnings-poor entities. REIT conversions mid-transition, miners pre-production, biotechs post-approval — book and cash matter more than earnings power for the next few years; the EPV/DCF lens fits poorly.
- Liquidation or runoff candidates. When the going-concern assumption no longer holds, NPV of asset sales matters more than NOPAT capitalisation. The page's models assume perpetual operations.
- Pending M&A targets. Awaiting close, the announced deal price is the better anchor than DCF; the trailing history doesn't help reconcile the implied path to the take-out price.
Detection signals
Detection runs on the slim object's pre-computed fields — no
additional XBRL fact pulls. When any signal below fires,
derived.val.specialSituation.flagged = true on the
per-ticker slim, and the valuation page replaces the EPV / DCF
premium chips with the red banner.
- Divestiture (EBIT one-time gain)
-
When any
us-gaap:GainLossOnSaleOfBusiness,us-gaap:GainLossOnDispositionOfAssets, orus-gaap:GainLossOnDispositionOfBusinessappears on the TTM EBIT adjustments and the absolute value reaches ≥ 30% of TTM revenue, fire divestiture-ebit-adjustment. Captures whole-segment dispositions whose gain still sits inside the TTM window the DCF anchors on. - Divestiture (revenue divergence)
- When TTM revenue diverges from prior FY revenue by more than ± 30%, fire revenue-divergence. Catches both forward-divestiture-shrinking (CommScope post-Amphenol close) and acquisition-inflating cases the EBIT-adjustment signal misses because the disposition gain falls outside the standard concept set.
- Forward-divestiture override
-
When the DCF's normalisation revenue ladder already substituted
a forward-divestiture-adjusted base (
normalizationRevenueSource === "forward-divestiture-adjusted"), fire forward-divestiture-override. This is the backend's own "FY median is unrepresentative" finding — surfacing it on the banner avoids reader confusion about why two different EPV revenue anchors show up across runs. - Net cash > 50% of market cap
-
When
(cash − totalDebt) ÷ marketCap > 0.5, fire net-cash-deep-value. Both inputs come from the per-filer balance block already on the slim; market cap comes from the WACC block's snapshot (live price × shares outstanding) with the snapshot-helper market cap as fallback. - GAAP vs adjusted EPS divergence > 4×
-
When the TTM-summed GAAP diluted EPS (same chain the P/E card
uses:
us-gaap:EarningsPerShareDiluted→IncomeLossFromContinuingOperationsPerDilutedShare) and the four-quarter sum of adjusted EPS actuals differ by more than 4× the adjusted base, fire eps-divergence. Picks up transformative one-time items (massive disposition gain, tax-reform charge, restructuring) that the 5%-divergence Underlying-P/E card alone doesn't escalate.
Detection is additive — when none of the signals above fire, the page renders exactly as before (green/red premium chips, no red banner). The cards section (P/E, P/FCF, FCF Yield, EV/EBITDA, P/S, P/B) stays useful in either state, and is especially diagnostic on net-cash deep-value cases where P/B and EV/EBITDA carry information that EPV / reverse-DCF cannot.
Earnings history
- EPS (Basic & Diluted)
-
Reported directly by the filer as
us-gaap:EarningsPerShareBasicandus-gaap:EarningsPerShareDiluted(unitUSD/shares). The earnings page shows a per-card toggle between the two; the diluted view is the default because it reflects the impact of options, RSUs, and convertibles outstanding.Continuing-operations fallback. Some filers (e.g. ABNB) tag earnings-per-share through the continuing-operations branch of the taxonomy rather than the headline concept. When the headline EPS facts aren't present we fall back to
us-gaap:IncomeLossFromContinuingOperationsPerDilutedShareandus-gaap:IncomeLossFromContinuingOperationsPerBasicShareso the chart, table, and the P/E ratio on the valuation page all populate. For filers without discontinued operations the two concepts are identical; for filers that do report discontinued operations the fallback excludes that line, so the per-share figure can sit a few cents below the headline EPS the filer would print on a press-release cover. -
Derived from the cash-flow statement, not directly tagged by
most filers. Formula:
(Operating Cash Flow − Capital Expenditures) ÷ Diluted Shares Outstanding. Operating cash flow comes fromus-gaap:NetCashProvidedByUsedInOperatingActivities; capex fromus-gaap:PaymentsToAcquirePropertyPlantAndEquipment(sign-normalised to a positive outflow); shares fromus-gaap:WeightedAverageNumberOfDilutedSharesOutstandingfor the same period. - Q4 derivation
-
XBRL tags 10-K filings with full-year flows only — Q4 isn't a
separately-reported period. So for flow facts (EPS,
revenue, cash flow, etc.) we derive Q4 as
FY − Q1 − Q2 − Q3(equivalently full-year minus nine-month YTD when that's what the filer tagged). Per-share Q4 values are approximate to within a cent or two when the weighted-share count drifts across the year (buybacks or issuances); we're subtracting two per-share figures whose weighted-average denominators differ slightly. Instant facts (balance-sheet snapshots) at the fiscal-year end are taken directly from the 10-KCY{Y}Q4Iinstant and aren't derived. - Split adjustment
- Per-share values on the earnings chart are presented in today's share class. Historical values are multiplied by the product of split ratios that occurred after each period end; for example, a pre-split $39.75 EPS reported before a 7-for-1 and then a 4-for-1 split becomes $39.75 ÷ 28 ≈ $1.42 in today's class. The conversion factor per period is surfaced in the per-row tooltip so readers can cross-check.
Financials page
- Statement grouping
-
Every tagged fact from the filing is rendered on the main
ticker page, grouped by the statement it belongs to: Income
Statement, Comprehensive Income, Balance Sheet, Cash Flow
Statement, Stockholders' Equity, Notes. Grouping uses FASB's
base
us-gaappresentation taxonomy (the linkbase we fetch viapython -m backend.cli fetch-gaap-taxonomyand parse into a concept→statement map). Filers may re-parent individual concepts onto different statements in their own extension taxonomy, so for a small number of concepts the section shown on our page can differ from where the line item appears on the company's actual 10-K / 10-Q. - "Other"
-
Holds filer-specific custom concepts (their own namespace, not
us-gaapordei) plus the handful of standard concepts we couldn't map to a statement via the base taxonomy — typically deprecated or newly-introduced tags not yet in the linkbase we parse. - Derived Metrics
- A dedicated group for figures the filer doesn't tag directly but that are computable from tagged flows. Each derived row carries its formula and audit trail (the specific facts and values that fed it) in its hover tooltip, so readers can verify the math against the primary facts.
- Fact tooltips
-
Every fact cell has a hover tooltip showing the fully-qualified
concept (e.g.
us-gaap:EarningsPerShareDiluted) plus the filer's description of the concept when one is provided. Derived rows show the formula and the audit inputs instead.