Methodology
How the numbers are made
ValueMarkers is built on one rule: no figure appears on screen unless we can show where it came from. Below: the sources, the formulas, the refusal rules and the limits, with the real weights and thresholds from the engine.
Where the data comes from
Fundamentals come from the accounts each company files: the annual and quarterly reports lodged with its regulator. Where we hold the identifier of the document a figure was read from, the source trail carries it and opens the filing itself. Market scope is the United States: the active universe is NYSE, NASDAQ and AMEX.
Coverage is three tiers, counted live: a few thousand companies verified, more carrying market metrics only, the rest merely listed. Verified means the filed accounts are on disk, and everything on this page applies. Metrics only means indicator values exist with no filed statement behind them. Listed only means the ticker is searchable and nothing more. Every company page states its tier at the top.
What we store
Per verified company: annual income statements, balance sheets and cash flow statements for every fiscal year the filings contain, up to ten years on screen; daily prices for the last five years; trailing-twelve-month ratio snapshots; a profile (sector, exchange, listing currency, beta); and a market quote. Every statement row carries its fiscal year, period, filing date and reported currency, because the provenance drawer cites them later. We show what exists and never pad, interpolate or extend a series.
Refresh policy
The nightly pass, in order (all UTC):
| Time | Job |
|---|---|
| 21:00 | Prices and market capitalisations, stamped at the US close |
| 22:30 | New filings read, statements ingested |
| 22:50 | Trailing-twelve-month inputs topped up |
| 23:00 | Every derived figure recomputed |
| 23:30 | Every guardrail re-tested against the result |
Watchlist alerts are swept every 30 minutes.
Every company page shows a "Data as of" date: that company's last successful refresh, read live from the database. Past 45 days the badge becomes a warning and the page states that values are computed from the last filed statements.
What happens when a fetch fails
Each data type is fetched and validated separately. A failed or malformed response is discarded and the previously stored data stays exactly as it was: an error never overwrites a good statement. When an input needed for an indicator is missing, the indicator is stored as empty, never as zero and never as an estimate.
The composite score
Every company is scored on up to over 100 indicators. Each is converted to a cross-sectional percentile rank from 0 to 100 against the scored universe, so a score always means the same thing: where this company stands relative to every other one we cover. Ranks are direction-aware (a lower P/E ranks higher; a higher return on capital ranks higher), and each indicator's population is winsorized at the 1st and 99th percentiles so a single extreme outlier cannot distort the scale.
A pillar score is the plain average of the available indicator percentiles in that pillar. Missing indicators are excluded from the average, not counted as zero: a company is never punished for a statement its market does not require. The composite is the weighted sum of the five pillar scores. These are the weights in the engine, which must sum to 100% (the backend asserts it at startup):
| Pillar | Weight | What it asks |
|---|---|---|
| Value | 35% | What you pay against what the business earns, owns, and generates: price ratios, enterprise multiples, yields, and intrinsic-value gaps. |
| Quality | 30% | Returns on capital, margin structure, cash conversion, and the consistency of all of these over time. |
| Health | 15% | Balance-sheet integrity: leverage, liquidity, coverage, and the three forensic scores below. |
| Growth | 12% | Revenue, earnings, cash-flow, book-value, and dividend growth over one, three, and five years. |
| Risk | 8% | Volatility, drawdown, debt service, capital intensity, cost structure, and payout sustainability. |
The composite is where a search starts. It opens into the five pillars and into every indicator behind them, so the rank can be argued with.
The screener
16 codified disciplines, each from a named book or paper, with the criteria printed before you run them. Where a threshold is ours rather than the author's, the card says so. Any stored indicator can be added as a filter, and results carry the forensic trio.
The forensic trio
Three published models run on every company with sufficient filing history. Each was proposed in an academic paper, and we implement the published formulas rather than variations of them.
Piotroski F-Score (Piotroski, 2000)
From "Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers", Journal of Accounting Research. Nine binary accounting tests, one point each, designed to separate improving businesses from deteriorating ones. The nine tests, exactly as computed:
- Positive return on assets
- Positive operating cash flow
- Return on assets increasing year over year
- Operating cash flow exceeds net income (the accruals test)
- Leverage decreasing (long-term debt to total assets)
- Current ratio increasing
- No new shares issued (diluted weighted-average share count did not grow)
- Gross margin increasing
- Asset turnover increasing
We read 7 to 9 as strong, 4 to 6 as middling, and 0 to 3 as weak. When prior-year statements are missing, the year-over-year tests score zero and the provenance drawer says so instead of hiding it.
Altman Z-Score (Altman, 1968)
From "Financial Ratios, Discriminant Analysis and the Prediction of Corporate Bankruptcy", Journal of Finance. A weighted blend of five ratios, all scaled by assets or liabilities, built to estimate distress risk:
Z = 1.2 (WC/TA) + 1.4 (RE/TA) + 3.3 (EBIT/TA) + 0.6 (MktCap/TL) + 1.0 (Rev/TA)
| Zone | Threshold | Reading |
|---|---|---|
| Safe | Z > 2.99 | Distress unlikely on this model |
| Grey | 1.81 to 2.99 | Inconclusive; look at the balance sheet directly |
| Distress | Z < 1.81 | Elevated risk of financial distress |
The model was estimated on industrial firms. We do not apply it to banks and insurers, whose balance sheets it was never designed for; those companies show "not applicable" instead of a misleading score.
Beneish M-Score (Beneish, 1999)
From "The Detection of Earnings Manipulation", Financial Analysts Journal. Eight indices that tend to move when earnings are being manipulated, combined as M = -4.84 plus the weighted indices below. It requires two consecutive fiscal years of statements. A score above -1.78 flags a possible manipulator; below it, manipulation is unlikely on this model.
| Index | Weight | What it watches |
|---|---|---|
| DSRI | +0.920 | Days sales in receivables index: receivables growing faster than sales |
| GMI | +0.528 | Gross margin index: margin deterioration versus the prior year |
| AQI | +0.404 | Asset quality index: growth in soft, non-current, non-PP&E assets |
| SGI | +0.892 | Sales growth index: high growth as pressure to manipulate |
| DEPI | +0.115 | Depreciation index: a slowing depreciation rate |
| SGAI | -0.172 | SG&A index: overhead growing against sales |
| TATA | +4.679 | Total accruals to total assets: earnings not backed by cash |
| LVGI | -0.327 | Leverage index: rising debt against the prior year |
None of the three is proof of anything; they flag what to check first.
The glass box contract
Every indicator on a working paper can be opened. The provenance drawer shows the formula, every input with its value, the statement it came from, the fiscal year, period, filing date, and reported currency, and the date the data was last refreshed. There are two levels, and the drawer always tells you which one you are looking at:
- Full. 26 core indicators (the forensic trio, returns on capital, margins, the classic valuation ratios, leverage and liquidity, one-year growth) are recomputed live from the stored statements every time you open the drawer, using the same math as the pipeline.
- Sourced. Everything else cites its origin table and timestamp. A few figures, beta among them, cannot be replayed from statements at all, so they are labelled as imported rather than presented as audited math.
Mismatch badges
For full-level indicators the drawer compares the stored value against the live recomputation. If they diverge by more than 2% (or by more than 0.5 points for the three score models), a mismatch badge is shown on the number rather than hidden. The most common benign cause is basis drift: the stored value came from trailing-twelve-month data while the recomputation uses the latest annual statements. The drawer says so explicitly. A mismatch with no such explanation is a data defect, and surfacing it is the point.
When we refuse to show a number
Some values are refused on principle, because a wrong number is worse than no number:
- Negative shareholders' equity makes return on equity, price to book, and debt to equity meaningless. They show "n/m" (not meaningful), never a figure.
- Missing statements produce "n/a", never 0. A zero is a real measured value that would be percentile-ranked; writing zeros into gaps would silently poison the scores.
- A company with no interest expense has no interest coverage ratio; it shows "n/a" rather than infinity or a placeholder.
- For companies that do not report in USD, indicators that mix USD market data with reporting-currency statements are not recomputed without a reliable exchange rate. The drawer says "recompute unavailable without FX rate" instead of showing a silently mis-converted figure.
Valuation: the DCF workbench
The workbench runs a deliberately simple two-stage discounted cash flow model, and every assumption in it is yours to edit. Stage one grows the starting free cash flow at a single rate for the horizon you choose and discounts each year back to today. Stage two is a terminal value from the Gordon growth formula. Net debt is subtracted to reach equity value, which is divided by diluted shares for a per-share figure. A sensitivity grid shows the result across a range of growth and discount rates around your inputs, because the honest output of a DCF is a region, not a point.
The simplifications, explicitly
- One constant growth rate for the whole explicit stage; there is no fade path from high growth to terminal growth.
- One discount rate for every year and both stages. You enter it directly; the workbench does not compute a WACC for you.
- The terminal value is a Gordon growth perpetuity, so the discount rate must exceed the terminal growth rate; a large share of the result usually sits in this single term, and the workbench shows you that share.
- The starting free cash flow defaults to the latest annual cash flow statement; it is a single base year, not a normalized or cycle-adjusted figure. You can and should edit it.
- The equity bridge subtracts net debt from the most recent balance sheet, with no seasonal or intra-year adjustment.
- The share count is the current diluted count, held fixed; future dilution and buybacks are not modeled.
- No mid-year discounting convention, no scenario weighting, no sector-specific adjustments.
Versions
Assumption sets can be saved as named versions. Each version stores the complete inputs and the per-share value they produced, with a timestamp, and the versions panel shows exactly which assumptions differ from the ones currently on screen. Your reasoning stays reviewable after the fact, including by you, six months later.
A fair value here is an arithmetic consequence of your assumptions, which is why the sensitivity grid matters more than the point estimate. It is not a prediction and not advice.
Monitoring: how assumptions are watched
A thesis records its assumptions as testable conditions: an indicator, a direction, and a threshold, phrased as the condition that keeps the thesis alive (for example, return on invested capital stays at or above 20%). Once per day, at 23:30 UTC, after that day's data refresh and score recomputation, every active assumption is re-tested against the freshest values.
- Fire once. The first day an assumption breaks you get one notification. While it stays broken, silence; you already know.
- Quiet recovery. When the value moves back within your threshold, a recovery note is written to your inbox (no email) and the alert re-arms for any future breach.
- Data gaps never fire. If an indicator has no value on a given day, the check is skipped and the alert state is left untouched. A missing number is a pipeline condition, not evidence about your thesis, and it must never wake you up.
Limitations
Where this page is weakest, in the same detail as where it is strongest.
- Currency conversion. A US listing can still report in another currency, and some do. Statements are stored in the reporting currency while market data is stored in USD, and we do not keep a full exchange rate history, so a recomputation that would mix the two is refused rather than approximated.
- Not every listing is verified. A source trail, a recomputation and an overnight check all need the filed accounts on disk. The counts are printed live on the FAQ, and every company page states which group it is in before you read a single figure.
- Coverage varies within the market. Depth and filing history are thinner on recent listings and small caps, so some percentile ranks are computed against fewer peers.
- TTM versus fiscal-year bases. A headline metric may be trailing-twelve-month while a provenance recomputation uses the latest annual statements. The two legitimately differ, which is what the mismatch badge and its drift note exist to reconcile.
- Upstream errors. Standardisation slips, mis-tagged line items and later restatements all happen before the data reaches us. The provenance drawer is the fastest way to check a suspect number, and the report link below is the correction loop.
- Refresh cadence. A filing is picked up on the night after it is published, and prices are stamped at the previous close. The "Data as of" date on each page is the ground truth: when a refresh fails, that date ages visibly instead of being hidden.
Spotted something wrong? Report a data issue. We would rather show you a gap than paper over one.
Disclaimer
Nothing on this platform is a recommendation to buy or sell any security. Scores, valuations, and models are educational aids derived from third-party data that can contain errors or delays; verify figures against primary filings before relying on them. Investing involves risk, including loss of principal.