Cost of Saving: make informed decisions

The formulas

Everything the calculator does, written out: what goes in, every formula, the assumptions, a worked example you can follow with a pocket calculator, and what it leaves out. Nothing is hidden, so the result can be checked by anyone.

What this is, and what it is not

It is a differential analysis, also called incremental or relevant-cost analysis: the business with a change compared with the business without it, counting only what differs. This is a standard management accounting method for decisions such as dropping a product line, outsourcing, or cutting a department.

It is not a financial statement and it does not claim financial statements are wrong or that anyone is hiding anything. Companies report what the rules require, bad news included. What the rules do not require is tracing a decision through to everything it later affects. An income statement correctly records what was paid. It records transactions, so it cannot show income that a decision caused not to happen. That is an opportunity cost, which has to be estimated separately. This tool estimates it and puts it beside the saving.

Its results are estimates built on the user's own inputs. It is a way to structure a judgement and to find the assumption the answer depends on. It does not predict.

What goes in

SymbolOn screenUnitMeaning, and the accounting term
SExpected saving (or gain) each year$ / yearReduction in operating cost, or added income, expected from the change.
C0One-time cost of making the change$Restructuring or switching cost: severance, penalties, set-up. Paid at the start.
DYearly income that relies on it$ / yearRevenue that could not be earned without the thing being cut.
cHow much of it you are cutting0 to 1Share of that resource removed.
sHow much of the cut was truly spare0 to 1Idle capacity: the share of what is cut that was producing nothing.
gContribution margin on that income0 to 1Contribution margin ratio: what is kept from each dollar of D after its other variable costs. It must leave out the cost being cut, or the saving is counted twice.
w1..wnWhat relies on it, and how strongly0, 0.5 or 1 eachOne strength for each part of the business marked as relying on it. "Partly" is 0.5, "Fully" is 1. A model assumption; see below.
t0Months before the loss shows upmonthsLag before lost income begins (orders already in hand, stock, goodwill).
kSide costs each year$ / yearIncremental operating costs caused by the change and booked elsewhere: overtime, rework, returns, replacing people who leave.
pChance you have to undo it0 to 1Probability of reversing the change within the period.
UCost of undoing it$Cost of reversal: rehiring, retraining, re-contracting.
TLook aheadmonthsYears entered, times 12, rounded to whole months.
rDiscount rateper yearCost of capital. 0 gives plain sums; above 0 gives present values.

The formulas

F1a = c x (1 - s)Working share cut: what is removed, less the part that was idle.
F2K = (1 - a x w1) x (1 - a x w2) x ... x (1 - a x wn)Share of output kept. Each part that relies on the resource passes on what it received. With one part at full strength, K = 1 - a.
F3L = 1 - KShare of output lost.
F4O = D x L x gLost contribution each year: the opportunity cost.
F5Y = T / 12 when r = 0 Y = sum over m = 1..T of (1 + r)^(-m/12) / 12Years' worth of a level yearly flow over the period. With discounting this is the present value of 1 a year paid monthly in arrears.
F6YL = max(0, T - t0) / 12 when r = 0 YL = sum over m = 1..T of active(m) x (1 + r)^(-m/12) / 12 active(m) = min(1, max(0, m - t0))The same, for a flow that only starts after the delay.
F7G = S x YThe saving over the period.
F8one-time cost = C0 side costs = k x Y lost contribution = O x YL expected reversal cost = p x U x (12 / T) x Y (= p x U when r = 0)The four costs. The reversal cost is an expected value, spread evenly across the period.
F9TC = C0 + k x Y + O x YL + p x U x (12 / T) x Y N = G - TC M = TC / GTotal cost, net result, and the multiple. N = G x (1 - M). Below M = 1 the saving wins; above it the loss wins.
F10B = G - C0What the books show beside the decision. B - N is the cost that is booked elsewhere or not booked at all.
F12income supported per dollar saved = D x c / S contribution supported per dollar saved = D x c x g / SWhat each dollar of the saving was supporting. The cost of a resource is what is paid for it; what it produces is larger, which is why it was worth paying for. When the second figure is above 1, removing the resource loses more than it saves unless enough of it was idle. This is the plainest form of the multiple and uses no model beyond proportional dependence.
F13idle = c x s R = G - C0 - k x Y - p x U x (12 / T) x Y net(q) = (q / c) x R - D x g x YL x L( max(0, q - idle) ) saving per point = R / c / 100 loss per point past idle = D x g x YL x (w1 + w2 + ... + wn) / 100The same decision at a different size q. It assumes the idle part is removed first, and that the saving and the other costs scale in proportion to the size of the cut. Cutting only the idle part loses no income. Past it, compare the saving per point with the loss per point: this is ordinary marginal analysis. The best size and the largest size that does not lose are found by trying a thousand sizes between zero and the planned cut. Sizes beyond the plan are not tried, because the scaling assumption cannot be trusted there.
F11find s* such that D x g x YL x L(s*) = G - C0 - k x Y - p x U x (12 / T) x Y one part, full strength: s* = 1 - (right-hand side) / (D x g x YL x c)Break-even spare share: how much of what is cut must have been idle for the net result to be zero. With several parts it is solved by repeated halving, which is exact to far more digits than are shown.

A worked example

The "Lay off staff" example, step by step. These figures are calculated live by the same code the calculator uses, so this section cannot drift out of step with it. The inputs are illustrative round numbers, not data from any company.

The formulas behind "Why it multiplies"

W1kept = (1 - cut) ^ stepsChain. A 10% cut needed at 3 steps keeps 0.9 x 0.9 x 0.9 = 0.729, a loss of 27.1%.
W2touched at step n = k ^ n total = 1 + k + k^2 + ... + k^nCascade. Each thing affects k others. With k = 3 over 3 steps: 1 + 3 + 9 + 27 = 40.
W3gain needed = loss / (1 - loss)The climb back. Lose 50%, need 100%. Check: 0.5 x (1 + 1.00) = 1.
W4balance after n years = balance x (1 + rate) ^ nCompounding. Applied to a negative balance it deepens it: -100,000 at 10% for 5 years is -161,051.
W6step n = first x ratio ^ (n - 1), ratio below 1 ceiling = first / (1 - ratio) last step worth taking = the last n with step n > cost of a stepThe rabbit hole. Gains shrink by a fixed ratio, so they approach a ceiling and never pass it. With 40,000 first, a ratio of 0.62 and 8,000 a step: steps gain 40,000, 24,800, 15,376, 9,533, 5,911; stop after step 4; the ceiling is 105,263.
W7step n = first x ratio ^ (n - 1), ratio above 1 total = first x (ratio ^ n - 1) / (ratio - 1)The runaway. Costs grow by a fixed ratio. With 5,000 first and a ratio of 1.62, eight steps total 374,494 and the last alone is 39% of it. The Fibonacci spiral on the page pictures both with a ratio of about 1.618; that number is an illustration, not a property of real costs.
W5each year: owed = owed x (1 + rate) - payment years to clear = -ln(1 - rate x debt / payment) / ln(1 + rate), rounded upClimbing out. Growth is added first, then the payment is made at the year end. If the payment is no more than rate x debt, it never clears. 100,000 at 10% paying 15,000: 12 years, 173,079 paid in all.

Conventions and assumptions

What it leaves out

How to check it yourself

By hand. Follow the worked example above with a calculator, or put F1 to F10 in a spreadsheet with one row per month.

By running the tests. The code ships with five test files. With Node.js installed, in the folder holding the files:

node saving_test.js 33 checks: hand-worked cases, limits, break-even node saving_reach_test.js 18 checks: the chain form node saving_touch_test.js 20 checks: parts and strengths node multiple_test.js 51 checks: chain, cascade, climb back, compounding, shrinking and growing steps node verify_test.js 27 checks: independent verification

Independent verification. verify_test.js contains a second implementation written from the formulas on this page, one month at a time like a spreadsheet, sharing no code with the calculator. It compares nine figures across 500 random cases, checks the discounting against the textbook annuity formula, the break-even figure by substitution, and the climb-out figures against the textbook loan-term formula.

Sources for the method

The example inputs throughout the tool are illustrative and are not drawn from these sources.