All rules

A margin the two values it divides do not give

ratio-mismatchon by defaultJapanese / English

A margin in a table or sentence that is not its profit divided by its sales

Example

Flagged
| Item | FY2025 | FY2026 | | --- | --- | --- | | Net sales | 1,200 | 1,320 | | Operating profit | 84 | 96 | | Operating margin | 7.0% | 8.0% |
What chaff prints
5:29 Operating margin "8.0%" is written, but its two values give 7.3%
Fixed
| Item | FY2025 | FY2026 | | --- | --- | --- | | Net sales | 1,200 | 1,320 | | Operating profit | 84 | 96 | | Operating margin | 7.0% | 7.3% |
What chaff prints
no finding

How to fix

Check which of the ratio and the two values is right, and correct the others.

Why it matters

The "Operating margin 7.5%" of a results table is the operating profit divided by the net sales in the same column. Readers trust it without dividing again. It goes wrong when an amount is corrected and the margin is not, or when the margin is copied from last period's table. In a table, a row labelled with only the name of a ratio (Operating margin, Gross margin, Net margin) is compared, column by column, with its numerator divided by its denominator, when the same table has one row of each (Operating profit, Net sales). One sentence that names the ratio, the numerator and the denominator once each, with a value right after each name ("Operating profit was $198 million on net sales of $2,640 million, an operating margin of 7.5%"), is compared too. Which ratio divides which two values is in the language package's lexicons ratio-label and ratio-term. The ratio may be rounded to half its last digit (7.3% is anything from 7.25% to 7.35%). Each amount may be off by one whole step of its last digit, not half, because results tables often round amounts down and the margin is worked out from the amounts before rounding.

What it does not flag

A table without the numerator or the denominator row, with two rows of the same name, or whose three rows have different numbers of cells (its columns may not line up), a cell that is not a plain number (—, a negative or bracketed value), and a column whose two values are in different units ($ million and $ thousand) are not compared. A sentence that names the ratio or a term twice, or has no value right after a name, is not compared. A ratio not in the lexicons (utilisation, equity ratio) is not read. A ratio the rounding of the values can reach is not reported.

Turning it off or relaxing it

Silence this one spot (in the document)
<!-- stet: ratio-mismatch — reason -->
Relax it for the team (the reason is kept as a comment in chaff.yaml)
npx chaffjs relax ratio-mismatch --why "reason"
Turn it off for the team (chaff.yaml)
rules: ratio-mismatch: off
Technical details
Layer
L3
Status
stable
Severity
warning
Languages
Japanese and English
Suited to
business, technical, blog, legal, docs, academic, literature, speech
Reads from the document
quantities

Levels

Set a level for this rule under rules in chaff.yaml. With nothing set, it runs at the level its genre gives it (see By genre below).

stricterror
normalwarning
relaxedinfo

This rule has no limit to count to. A level sets how a finding is marked: relaxed keeps the finding and marks it a step lower.

By genre

Runs by default in
technical/spec, technical/readme, blog/tech, blog/essay, blog/owned-media, business/proposal, business/report, business/email, business/press-release, business/meeting-notes, legal/contract, legal/statute, legal/judgment, legal/patent, docs/manual, docs/faq, docs/glossary, academic/paper, speech/address, speech/transcript
Turned off by the genre in
literature/fiction, literature/essay, literature/poetry, literature/play

Genres

Message

{ratio} "{written}%" is written, but its two values give {computed}%

This page is built from the rule's definition file:packages/chaff/rules/ratio-mismatch.yaml