The slow way, made survivable Chapter 6 of 23 Svenska

The map · Part One · The method · Chapter 6 of 23

What gets read

Only the company's own filings. Every figure with its origin, period and page. Nothing stretched, scaled or annualised to fill a gap. A concrete example of the wrong kind of number and what believing it would cost. About 8 minutes.

Once a name survives the gates, the reading changes character. The screen used a vendor's summary of the accounts because that is the only thing that scales to two thousand names. From here on, every figure that will touch a decision comes from the document the company itself published.

The rule, in one sentence

A figure is admissible if it can be pointed to: this filing, this period, this page. Everything else is hearsay.

That sounds obvious and is violated constantly. A data vendor's "revenue" might be the company's revenue, or it might be revenue with one segment reclassified, or it might be last year's number the vendor has not updated. A news article's "profit rose 12 percent" might be operating profit, net profit, or adjusted profit on the company's own definition. None of these are lies. They are just not the figure, and a person who builds a valuation on them has built it on something they cannot check.

So the tool's reading code fetches only company filings and regulatory documents, and refuses to follow links or search.11The source module's own description: 'Primary source ONLY: a company IR release or a regulatory filing. Never a news article about one. This module does not search, guess or follow links.' For American companies it reads the structured data companies must file with the regulator. For Nordic companies it reads the exchange's own disclosure feed. For everything else, a person reads the PDF and types the figure in, with the page number beside it.

Every figure carries three things

  1. Where it came from. The document, and the page or the tag within it.
  2. What period it covers. A quarter, a half year, a year, and which one.
  3. Whether a person has checked it. A figure enters as unchecked. It becomes checked only when the owner has read it back against the page named beside it, and the record says which kind of check it survived: matched to the regulator's structured data, matched across two separate documents, or read back against the same page it came from, which is the weakest kind and says so.22Ruling E40 and the verification kinds in vss/manual.py: tagged, cross-document, same page. Unchecked is not the same state as absent: 'UNVERIFIED is the state a figure is entered in, and it is what section 5 refuses on. It is NOT the same state as absent.'

The valuation refuses to run on an unchecked figure. Not warns: refuses, and the command exits with an error. A figure nobody has read back is a figure nobody has read.

Nothing is stretched to fit

The valuation works on twelve months of cash flow. Suppose the company has reported three quarters of this year and you want a full year. The tempting move is to take the nine months and multiply by four thirds. The method forbids it. A figure of the wrong length is missing, not a figure adjusted to fit.33Framework §5 basis rule (rulings E19, E20): 'Nothing here is annualised and nothing is scaled — a figure of the wrong length is DATA MISSING, never a figure adjusted to fit.' Twelve months are assembled from four actual quarters, all four checked, and the report names all four beside the figure. A twelve-month figure that ends on a different date from the other figures in the same calculation is also refused, with both dates printed, because two windows are not a ratio.

The same strictness applies to things that look trivial. A share count must be stated by the company, not derived. A zero is a claim about the company and needs a basis: the line exists and reads zero, or the company says the item is nil, or the whole report was searched and the record says so. A figure converted from one currency to another names the rate and the date, and a change of unit is not a rate.44Rulings E22 and following (the share count), E25 (a zero is a claim), E98 (a rate and a date; a unit is not a rate).

The wrong kind of number, and what it would have cost

A real defect, with the name removed

NAME A is listed in London. Its shares are quoted in pence. Its accounts, and therefore the owner's estimate of its value, are in pounds. The first draft of the tool's overview page took the value in pounds, the price in pence, and computed how far apart they were. The answer it printed was that the price was about 12,700 percent away from the value.

Nobody would have bought on that number; it was absurd on sight. But the same defect, on a name where the units differed by a factor of ten instead of a hundred, would have printed a distance that looked merely surprising. The fix was not to convert. It was to refuse: where the two currencies are not the same code, the distance is missing and the seam is named.

The defect and the rule that replaced it are written into the page generator's own comments, so the next person to touch that code meets the number before the arithmetic.55The page generator's own rule: 'NO ARITHMETIC CROSSES A UNIT SEAM ... A distance computed across it would read as roughly −12,700%, which is the shape of the defect this project has already met once.' The first draft printed +10,543% on one name and +12,791% in a dry-run table.

A second example from the same family. A data vendor's price history for one large company switched, for four weeks, between two scales: one adjusted for a share split and one not. The computed fall from the year's high was 52 percent. The true figure was about 4. A check was built that treats a jump one way followed by a matching jump back as proof of two scales in one column, because real corporate events do not reverse themselves, and that treats a lone jump as suspect unless the day traded at many multiples of normal volume, which real repricings do and feed errors do not.66vss/series_sanity.py, ruling K4. Measured: two real large single-day moves traded at roughly 24× and 14× their median volume; the corrupted halvings traded at 0.7× to 2.6×.

Believing either number would not have cost a wrong purchase directly. It would have cost something worse: a system whose figures nobody could trust, and therefore a system nobody would use on the night it mattered.

Decided
Figures come only from the issuer's own documents, carry origin, period and page, and are never scaled, annualised or borrowed across windows. The valuation refuses to run on a figure nobody has read back.
Why
A figure that cannot be pointed to cannot be checked, and a figure that cannot be checked will eventually be wrong on the night it matters.
Cost
Reading is slow. Some companies cannot be valued at all for months because a figure they never state is missing. The tool says which figure, and waits.

Sources for this chapter

  1. Primary-source and provenance rulings — read from this repository: vss/source.py; reference/FRAMEWORK.md §5 basis rule; reference/FRAMEWORK-EDITS.md E19, E20, E22, E25, E40, E98; vss/overview.py (the unit seam); vss/series_sanity.py (ruling K4)

The slow way, made survivable. Built 2026-09-13 from the repository as it stood that day. NAME A and NAME B are fictional; no company, price or holding appears on this site. Not financial advice: one private investor's method, shared as it is.