Why half your variance column has the wrong sign, and the one rule that fixes it.
Here is a spreadsheet argument that happens every month in most businesses.
Revenue came in at £940k against a budget of £1,000k. Costs came in at £820k against a budget of £850k. Someone builds a variance column as `actual − budget` and gets −60 on revenue and −30 on cost.
The revenue variance is bad. The cost variance is good. They have the same sign. Somebody puts a red arrow next to both, somebody else says "hang on, we underspent", and ten minutes go on a formatting question.
A variance is positive when it is good for profit.
That is the whole convention, and applying it takes one change:
Now −60 on revenue and +30 on cost, and the two add to −30, which is exactly what happened to profit. The column totals correctly for the first time, which is the real prize: with the naive convention, summing the variance column gives you a number that means nothing at all.
The objection is that it is "inconsistent" — two different formulas in one column.
The alternative is consistent in the formula and inconsistent in the meaning, which is worse. A reader scanning a variance column is not checking your arithmetic. They are looking for the bad numbers, and they should be able to find them by looking for the minus signs. Any convention that makes them read the row label first has failed at the only job the column has.
The deeper version of the objection is that the sign should follow the account type automatically. It should — that is what the account structure is for. If your sign depends on a human remembering which rows are costs, it will be wrong the month someone adds a row.
The percentage variance is `variance ÷ budget`, and it has two traps.
Divide by budget, not by actual. "We were 6% under" should mean 6% of what we planned, which is the number everyone has in their head. Dividing by actual gives a different figure that is right by some definition and matches nobody's expectation.
Suppress it when the budget is zero or tiny. A line budgeted at £0 that spent £4,000 is not "infinity per cent over" — it is a line that was not budgeted, which is a different and more interesting fact. Show the absolute variance and leave the percentage blank. A column full of `#DIV/0!` teaches readers to ignore the column.
Once the sign convention is right, resist colouring every negative red.
Almost every month has a dozen small adverse variances that are pure noise — a phasing difference, an invoice that landed on the 2nd instead of the 29th. Colour all of them and the two that matter disappear into the pattern.
Set a threshold with two conditions: a percentage and an absolute amount. A 40% overspend on a £500 line is not worth a colour; a 2% overspend on a £4m line is worth a conversation. Requiring both conditions is what stops the report being either all red or all white.
The single most common false alarm in budget versus actual is a timing difference.
A cost budgeted evenly across twelve months that actually lands in two invoices will show a large adverse variance in the month it lands and a large favourable one in the months around it. Nothing has gone wrong.
Two defences:
A variance report with no commentary is a list of differences. It becomes management information when someone writes down why — and the useful commentary has three parts: what happened, whether it repeats, and what is being done.
"Consulting revenue £120k behind" is a number the reader can already see. "Consulting revenue £120k behind: two projects slipped into next quarter, both now signed, so this reverses in Q3" is information. The second one takes twenty seconds longer to write and removes the meeting.
The [Budget vs Actual Tracker](/products/budget-vs-actual-tracker.html) has the sign convention built in, thresholds on both percentage and absolute amount, and month-and-year-to-date side by side — with a complete worked example. £39.