Skip to content
New: ask the Rexfin Analyst Agent about your model. Every figure comes back cited.
· 6 min read

How Numbers Get Normalized: From a Footnote to One Canonical Figure

How a raw cell like "1,234 (in thousands, SAR)" becomes one typed, comparable number: the scale, currency, period and sign decisions Rexfin makes before any figure is trusted.

By The Rexfin team

Most of what happens to a number in a filing happens before it’s a number. A cell reads “1,234.” A footnote three pages back says the statement is presented in thousands of Saudi Riyals. A parenthesis around a different cell means the value is negative, or means it’s a cost line the filing prints in its own convention. None of that is visible in the cell itself: it has to be read out of headers, footnotes, and statement structure, and attached to the value before the value means anything. That attachment step is normalization, and it runs immediately after ingestion locates the statement a cell belongs to.

What a raw cell actually needs

A printed “1,234” is not one piece of information; it’s a value bundled with at least four things it depends on to be read correctly: the scale it’s presented at (units, thousands, millions), the currency it’s denominated in, the period it belongs to (an instant, like a balance-sheet date, or a span, like a fiscal year), and its sign (is a bracketed figure a loss, a contra-account, or a cost line the filing prints as positive that Rexfin needs to store consistently). Rexfin parses each of these out of the raw cell and stores them alongside the value itself, along with the entity the figure belongs to (parent company or consolidated group), so a number never floats free of the context that makes it a fact rather than a digit.

Scale and currency are read per filing, not assumed

The obvious trap is a hardcoded assumption: decide once that a deal “reports in thousands” and apply that everywhere. Rexfin doesn’t do that. Scale and currency are detected per filing, because a single deal can mix a group’s SAR-thousands consolidated statement with a subsidiary’s AED-full-unit standalone accounts. Detection reads the statement-face header itself (an “AED ‘000”-style label, including OCR variants of it) and falls back to prose, such as a note stating figures are presented “in thousands of Saudi Riyals,” with a further fallback for pages that are fully scanned images. When none of that resolves cleanly, Rexfin refuses rather than guesses: an ambiguous scale, a currency that doesn’t match the rest of the filing, or a filing that mixes currencies without saying so are all reasons to hold a number back rather than normalize it on a guess. That refusal discipline is the same one ingestion applies to a page it can’t classify: normalization inherits it for the numbers themselves.

Why the tolerance has to scale too

Getting the scale wrong doesn’t just mislabel a number: it breaks the check meant to catch errors. A reconciliation tolerance built for figures printed in full units is far too tight for a statement rounded to the nearest thousand: a subtotal that’s off by a few units purely from rounding will look like a genuine mismatch if the tolerance doesn’t know the statement’s scale. So the scale detected for a filing feeds directly into the tolerance used later to reconcile totals: the allowed gap is set relative to the printed scale rather than a fixed absolute amount, so a thousands-rounded statement doesn’t trip false alarms that a full-unit statement never would.

What comes out the other side

Once scale, currency, period, sign, and entity scope are attached, every figure across a balance sheet, income statement, and cash flow statement is stored on the same footing: a cash balance bound to the instant it was measured, a flow bound to the fiscal year it covers, an outflow keeping the sign it was printed with while a cost or expense line is stored as a positive magnitude. Quarterly or trailing-twelve-month figures built by combining reported periods are marked as computed rather than directly sourced, and carry the confidence grade of their weakest input rather than borrowing the confidence of the strongest one.

That consistency is what lets a comparison across companies (including companies that file in different currencies) start from numbers that mean the same kind of thing, instead of two footnotes nobody reconciled. It’s also what the canonical atom store holds: not a bare figure, but the figure plus the scale, currency, period, and sign that make it defensible on its own.

Who this is for

Anyone who has compared two companies’ revenue lines and later discovered one was in thousands and the other in full units, or totaled a cash flow statement where a cost line’s sign didn’t match what the model assumed. Normalization is the layer that catches that before a wrong number ever reaches a chat answer or an export. See how it fits the rest of the intake pipeline at the pillar overview.

Part of Inside the Rexfin Platform: How the Trust Machinery Works

Keep reading

Book a demo

See your numbers tie out.

Book a 30-minute demo. Bring a question you can never answer fast enough, and we will model it live against real financial data.