← Back to blog
Articlesby Datama Team

Price volume mix analysis: the complete guide

#PriceVolumeMix#MixEffect#Finance#Excel

How to break down a revenue or margin variance into volume, price and mix effects, with no double counting and no unexplained residual. Formulas, the classic trap, and a method to build an analysis your finance leader…


Revenue moved. Margin did too. The first question you get is "why", and "we sold more" is never enough. Did you sell more units (volume effect)? Did the average selling price change (price effect)? Or did you simply sell a different mix of products, customers or channels, with volumes and prices unchanged (mix effect)? These are three different questions, with three different operational answers, and most analyses built by hand in Excel blend them without anyone noticing.

This guide walks through the full method: the formulas, the double-counting trap that invalidates most homemade models, an end-to-end numbered example, and how to rerun the calculation on a test dataset in Datama.

What is price volume mix analysis?

Price volume mix analysis (sometimes called PVM) breaks down the change in an indicator (revenue or margin) between two periods or two perimeters into three families of effects:

  • Volume effect: how much of the variance comes from the number of units sold, all else equal?
  • Price effect: how much comes from the average selling price?
  • Mix effect: how much comes from a change in the composition of sales (more of product A, less of product B, a channel gaining weight), even if nobody changed a list price or a commercial policy?

The third effect is the one almost nobody isolates cleanly. A falling average price can mean two opposite things: either you really cut prices, or you simply sold more of SKUs that were already cheaper. The decision you take is not the same in both cases, and without a decomposition you cannot tell them apart.

Why the mix effect is harder to isolate than it looks

An average price or an average cost is a weighted average computed across your whole range. As soon as the weights change (more volume on one segment, less on another), the average moves mechanically, without any pricing decision having been taken. That shift in weighting is the mix effect, and it lives inside your price and cost metrics, not next to them.

We unpacked this mechanism in depth, with a line-by-line example, in our case study on the mix effect of weather: total revenue rises slightly, but the sales mix shifts towards a cheaper product, and the average price falls even though nobody changed a tariff. The same phenomenon shows up on a margin, an acquisition cost, or any metric built as an average.

The base formula

For revenue, the two-factor decomposition is:

Revenue = Volume × Average price

From there, the total variance between period 0 and period 1 splits into two top-level effects:

  • Volume effect = (Volume₁ - Volume₀) × Price₀
  • Price effect = Volume₁ × (Price₁ - Price₀)

Added together, these two effects reconstitute the total revenue variance exactly. So far, no issue: it is a two-term decomposition, so it cannot leave a residual.

The problem starts when you want to go further and, inside the price effect, separate a genuine tariff change from a change in composition. That is where the third effect, the mix effect, appears, and where most Excel models break.

Trap number one: double counting

As soon as you break a variance into more than two effects (volume, price, mix, cost…), there are infinitely many mathematically valid ways to allocate the movement between them, and most of them either leave a residual or count the same movement twice.

The most common error: compute the volume effect with the starting-period price, then compute the price effect with the arriving-period volume (or the other way around). Each effect looks correct in isolation, but their sum does not reconstitute the total variance exactly. The leftover gap, often labelled "cross effect" or "mix effect" by default, is actually a calculation artefact: nobody can explain it to an executive committee because it corresponds to nothing operational.

We documented the same trap for margin, with the three symptoms that give a poorly built model away (the numbers do not add up, mix and true price are blended, the model breaks as soon as you add a dimension), in Stop getting your margin analysis wrong. The cause is the same on a classic price volume mix: without an explicit, consistent allocation method, the decomposition is not reliable, even if the spreadsheet looks tidy.

What a sound decomposition must guarantee:

  • Effects are additive: their sum reconstitutes the total variance exactly, to the last euro.
  • Effects are orthogonal: no effect contains part of another effect's explanation.
  • The result does not depend on an arbitrary choice of "which effect we compute first".

Decomposing cleanly: volume, price, mix

Once the volume effect is isolated on the base formula, the price effect itself splits into two components, by analysing the composition inside the average price:

  • Mix effect: variance due to a shift in weight between segments (more volume on high-price SKUs, or the reverse), with each segment's unit price unchanged.
  • True price effect (or rate effect): variance due to a genuine tariff change inside each segment, with composition unchanged.

In practice, that means going down to the segment (product, range, customer, channel, depending on your business) rather than reasoning on a global average price, then recomposing the two effects with a consistent allocation method from one end of the calculation to the other. The arithmetic is mechanical, but it quickly becomes unmanageable by hand once you have more than a handful of segments or you want to rerun it every month.

A numbered example

Take a company that sells two product ranges, A and B. Between month M and month M+1:

Month MMonth M+1
Product A volume800 units at 25 €600 units at 25 €
Product B volume200 units at 10 €500 units at 10 €
Total revenue22,000 €20,000 €
Average price22 €18.18 €

No price has changed. Yet revenue is down 2,000 € and the average price has dropped by nearly 4 €. A quick reading of the average price ("our prices are deteriorating") would be wrong: it is the sales mix that has shifted towards product B, which is cheaper, and whose weight has gone from 20% to 45% of units sold.

A clean decomposition isolates:

  • Volume effect: almost nil; total volume stayed broadly stable (1,000 → 1,100 units).
  • Mix effect: explains almost all of the drop; the shift towards product B mechanically pulls the average price, and therefore revenue, down.
  • True price effect: zero; no tariff has moved.

Without that decomposition, the commercial team would be left justifying a "price cut" that never happened, and looking for an explanation on the wrong side.

How Datama Compare automates this calculation

Datama Compare applies this decomposition method (the "market equation") to any indicator expressed as a combination of factors, with no manual recalculation:

  • Guaranteed additive decomposition: volume, price and mix effects reconstitute the total variance exactly, with no residual.
  • Automatic mix / performance split: for every dimension in your dataset (product, customer, region, channel…), Datama distinguishes what comes from a change in composition from what comes from a rate change inside each segment.
  • Ranking by explanatory dimensions: rather than listing every available dimension, Datama ranks them with an interest score that shows which one actually explains the observed variance, not merely which one has the most rows.
  • Contribution by segment: down to which product, customer or area is pulling the effect up or down, and by how much.

The result is read as a Waterfall (cascade chart): each effect stacks visually between the starting point and the end point, and can be read in under 30 seconds. You can go further by building your own market equation; we walked through the method in How to build my business metric relation.

For a margin rather than revenue, the equation simply extends (Margin = Volume × (Price - Cost per unit)), and each extra term adds an effect to the Waterfall without changing the method. The full detail is in Stop getting your margin analysis wrong.

The template: your first analysis in 15 minutes

The fastest path is not to rebuild the calculation in Excel, but to reread it on a test dataset, then run Datama Compare on it.

1. Open the test dataset. Use the price volume mix demo dataset: an aggregated table with a comparison dimension (the month), explanatory dimensions (country, channel, product) and summable metrics (units sold, revenue, margin). That is the format Datama expects: no precomputed ratios. Datama calculates them.

Preview of the price volume mix test dataset

2. Launch Datama. Connect this dataset in Datama Compare. The equation used is of the form Margin = Volume × Average price × Margin rate. The waterfall reconstitutes the margin variance exactly, with no residual.

Datama waterfall: volume, average price and margin rate

The volume effect is the first column: it is the quantity of items sold. Here, volume is down, mainly in Germany.

Volume effect by country: France up, Germany down

The second column is average price (revenue / quantity). Once opened, it splits into two effects: performance, which is the true price effect, and mix, which is the change in weight of product types in sales.

Average price detail: mix effect and price (performance) effect by product

Here, on product B, a rise in production cost reduced sales volumes, especially in Germany (as seen in the previous point). That drop has a double effect on average price: a negative mix effect (product B, which used to sell at a higher price, weighs less, and the reverse for product A) and a positive price effect, driven by the rise in product B's net price.

The margin rate has barely moved: the slight variance comes from the mix between products A and B, which do not have quite the same margin rate.

Datama Compare is available where your data already lives: Google Sheets, Excel, Skill (Claude, ChatGPT) or your usual visualisation tools (Power BI, Tableau, Looker Studio, Qlik).

Who this analysis is for

  • Financial controllers who have to justify a revenue or margin gap in the monthly pack.
  • Category managers and pricing leads who need to know whether a change in average price comes from a genuine tariff decision or from a composition effect.
  • FP&A teams who prepare variance explanations for an executive committee and cannot afford an unexplained residual.

In short

A revenue or margin variance never has a single cause. It always decomposes into volume, price and mix, and until those three effects are isolated cleanly, without double counting, every explanation remains a hypothesis. The method described here (additive formula, mix / performance split, numbered example) works by hand for a simple case; Datama Compare automates it as soon as the number of segments or the frequency of the analysis makes a manual calculation untenable.

→ Learn more about the solution: datama.io

Want the why behind your own numbers?

Try Datama free, or book a 30 minute demo with the team.