Learn

The method

Where the equations come from, what they assume, and what they leave out. Written for the reader who wants to decide whether this is a model or a graphic.

The engine

The simulation is pure arithmetic. It runs with no API key and makes no outbound calls.

+60%price down 30%price up 60%profit

The shape of the thing

One month is one step. Inside a step the order is fixed: competitors resolve anything they committed to earlier and decide whether to commit to something new, suppliers move costs, customers make decisions, sales works the pipeline, finance settles the money, people absorb the strain, and the watchers check whether anybody has crossed a line. State carries forward. Nothing is re-derived from the starting position.

A replication runs that loop for the horizon with one set of parameter draws. A run does that many times and takes percentiles across the replications. The seed determines every draw, so a run is reproducible exactly.

The equations below are the standard textbook forms with damping added where the textbook form goes silly at the extremes. That is a deliberate choice: a model built from unfamiliar equations is impossible to argue with, and being arguable is most of the value.

Demand and price

Constant elasticity, damped at large moves

Demand responds to the log of the price ratio against the competitor weighted price, scaled by elasticity. That is the constant elasticity form, and it is used because it is the one every commercial team already has intuitions about.

Unmodified it misbehaves at the extremes: a 70 percent cut predicts a volume response nobody has ever observed. So the price effect on new business carries a damping factor that falls as the size of the move grows, which pulls very large moves back toward something defensible. Small moves are unaffected. If you are running a 10 percent change the damping is doing almost nothing, and if you are running a 90 percent change you should be reading the band rather than the median anyway.

The split between churn and new business

Elasticity is not applied once to a volume number. It is split. Existing customers carry forty percent of it through churn, and new business carries the remaining sixty percent through the customers you fail to win.

The reason that split reproduces the stated elasticity rather than mangling it is the equilibrium identity: in a steady state, account count settles at new business divided by churn. Push one part of the elasticity into churn and the rest into acquisition, and the long run account level lands where the stated elasticity says it should. The difference is timing, which is the entire point. Churn arrives at renewal dates, acquisition arrives immediately, and a price rise therefore hurts the pipeline long before it shows up in the base.

The sixty forty weighting is itself an assumption. It is a constant in the engine rather than a ledger row, it is the one number on this page that is a judgement call with no derivation behind it, and it is stated here rather than buried.

Who is reached, and when

A repricing only reaches a segment as its terms come up, at a rate set by average contract length and how contracted that segment is. Contracted customers cannot act on a price gap the month it opens. This is why the same 20 percent move produces completely different answers for two companies with the same elasticity and different contract books.

Named accounts

Segments get rates, named accounts get decisions

A segment churns at a rate. That is fine for two hundred small customers and wrong for the account that is 18 percent of your revenue, because that account does not churn at a rate, it makes a decision at a renewal date.

So named accounts are handled separately. Each holds a clock counting down to its renewal. When the clock reaches zero the account scores its position: price against the competitor weighted price scaled by elasticity, quality against competitor quality, its own satisfaction against neutral, and switching cost weighted by its own loyalty trait. That score goes through a logistic function to produce a probability of leaving, and the run draws against it.

The account either walks, which is an event in the brief with its name on it, or it renews. A renewal that was close to the edge produces its own event: they stayed and asked for something, and the model takes a small amount of revenue off them because renewals that tight tend to cost either price or scope.

  • Segments: continuous churn rates, moved by deviation from today's conditions
  • Named accounts: a discrete decision at a renewal date, with a probability and a draw
  • Which is why concentration shows up as a lumpy risk rather than a smooth one
18%largest accounttop five are 54 percent of revenue

Competitors, capacity and people

Competitors match once, partially, after a lag

When you move, each competitor forms a target: a fraction of your move, set by its reaction strength and its aggression trait. It then commits the part of that target it has not already answered, scheduled for a month in the future determined by its own lag, shortened if it is aggressive.

Crucially it matches once rather than matching a share of your move every month forever, which is the bug in the naive version and the reason naive versions predict price spirals that never happen. The answered amount is tracked, so a competitor that has already followed you does not follow you again for the same move.

Capacity strain flows to churn through quality

Capacity is headcount times capacity per head. Utilisation is revenue over capacity. Quality moves toward a target that falls as utilisation rises and as headcount falls relative to where it started, adjusting partially each month rather than jumping.

Satisfaction then trails quality and service load. Churn responds to satisfaction and to the quality gap against competitors. That is the chain: win too much work with too few people, quality slips, satisfaction follows, and customers leave about two quarters later. It is the mechanism that makes a hiring freeze look free for a quarter and expensive by month nine.

Morale, and shocks that decay

Morale moves toward a target set by workload and pay, closing a fifth of the gap each month. A discrete event such as a layoff or a department closure applies a shock on top, and that shock decays geometrically, retaining a bit over half its size each month until it is negligible.

Attrition rises exponentially as morale falls below neutral. People leaving costs money to replace before it costs capacity, and the backfill rate is its own assumption. This is the second wave that plans built in spreadsheets almost never include.

The watchers

Regulators, investors and partners stay quiet until a threshold is crossed. A regulator notices a large rise by a company with real share. An investor whose money you took starts asking questions when the numbers slip against what was promised. These are threshold agents rather than continuous ones, and they are the main reason the interesting part of an answer often sits at month seven rather than month one.

Uncertainty

Triangular draws over the bands in your ledger

At the start of each replication, every assumption that has a band is redrawn from a triangular distribution over that band with the stated value as the mode. Triangular is used because it needs exactly the three numbers the ledger already holds, low, likely and high, it has no tails running off to infinity, and it is easy to explain to somebody who has to sign off on the result.

Band width comes from origin. A number read from a document gets a narrow band, one you set yourself gets a narrow band, a derived number gets a wider one, and an industry default gets the widest. This is why replacing a default with a real number narrows the answer, and why the readiness score means something.

Percentile aggregation across replications

At each month the engine takes the median, the tenth and the ninetieth percentile across replications for every metric. Those three lines are what the charts draw and what the brief quotes.

Two consequences are worth stating. The p10 line is not a path any single replication took, it is the tenth percentile at each month taken separately, so reading down the p10 line is not reading a worst case scenario. And events are aggregated too: an event's frequency is the share of replications it appeared in, and its month is the median month across the replications where it did.

What is not modelled

This list is not an apology. It is the specification. If your decision turns on one of these, use something else for that part.

General equilibrium

Your move changes your competitors, and their move changes you. It does not change the size of the market beyond a flat growth rate, it does not feed through to your suppliers pricing everybody else differently, and it does not close the loop through the wider economy. The model is partial equilibrium and stops at the edge of your market.

Inventory

There is no stock, no reorder point, no lead time on materials feeding a shortage, no work in progress. A manufacturer with an inventory problem has a real problem this will not see. Supply appears only as cost, disruption windows and quality effects.

Working capital timing

Revenue is recognised when it happens and cash follows it. There are no debtor days, no creditor days, no invoicing cycle and no seasonal build. A business whose crisis is the gap between billing and collection is not modelled by this, and that is a common enough crisis to say loudly.

Tax

None. Operating profit is the bottom of the chain. No corporation tax, no deferred tax, no allowances, no group structure, no transfer pricing.

Seasonality

A flat market growth rate per month and nothing else. No Christmas, no summer, no fiscal year end push, no quarterly ordering pattern from a customer who buys twice a year. For a seasonal business the twelve month total is more trustworthy than any individual month in the middle.

Anything below department level

The smallest unit of the organisation is a department with headcount, cost, capacity weight and quality weight. No individual people except named salespeople, no shifts, no machines, no routing, no queues, no line balancing. A question about throughput through a plant needs a different kind of model, and the comparison page says which kind.

And the honest summary

This is a model of the commercial system: price, demand, customers, competitors, capacity, people and cash, with actors who react. It is not a model of your operations and it is not a model of the economy. It is good at the shape, the order of magnitude, the timing to within a month or two, and which actor causes the damage. It is not good at telling you what your market will do next year, and nothing on this site should have implied otherwise.

Argue with the equations, then argue with the answer

Every parameter in every equation on this page appears in the ledger with its band and its origin, and the sensitivity will tell you which ones the answer is actually standing on.

The assumption ledgerWhat it cannot tell you