Revenue analysis

Price Volume Mix Analysis (PVM)

Price volume mix analysis (PVM) separates a revenue movement into what you charged, how much you sold, and what you sold — with items that arrived or left held apart, because neither has two periods to compare.

Explain gross profit with product costs

Add supplied cost of sales to the existing price, volume and mix method. Separate selling-price and unit-cost effects while preserving new/discontinued products and unexplained amounts. This local review is separate from the revenue calculator below; its file and results are not included in account saves.

Required columns and calculation method

Item, QuantityUnit, Currency, BaseQuantity, BaseRevenue, BaseCost, CurrentQuantity, CurrentRevenue, CurrentCost, RowRole

Use one reporting currency and one comparable quantity unit, with unique product labels. RowRole is detail/subtotal. Costs are the cost of sales assigned to these products; missing costs are not zero. Positive costs reduce gross profit; negative costs are credits. Subtotal exclusion follows your declaration and does not validate its equation.

Revenue PVM minus cost PVM produces gross-profit volume, mix and new/discontinued effects. Selling-price and unit-cost changes use current quantities and already contain interaction. Both sub-bridges must reconcile independently. Margin levels use positive revenue; their difference is percentage points. Margin-point attribution and list-to-net categories are not inferred from these inputs.

Input data

Revenue and quantity, never unit price. The price is derived, so the revenue always ties.

Number format
Price measured at
Both land on the same total. The first puts the price and volume interaction inside price; the second gives it a bar.

One reporting currency throughout: this tool never translates. Where the book is multi-currency, translate first and use the FX Variance Bridge to separate the translation effect from this one.

Quantity and revenue by item for Last year and This year, with the unit price each pair derives.
ItemLast year qtycartonsLast year revenueThis year qtycartonsThis year revenueUnit pricederived, Last year → This year
50→52
100→98
—→200
30→—

Tip: paste a rectangular range from Excel or Sheets.

Your financial data is processed locally in your browser and is not uploaded to Consilium.

Revenue movement

+$114.4k

Revenue rose $114.4k between the two periods. Across the products sold in both periods, volume moved revenue the furthest, by $48.0k. Volume grew while mix cost $18.0k, which means the growth came from the cheaper lines. Outside that set, items new in this period added $100.0k and items no longer sold removed $30.0k, which sit apart from price, volume and mix because neither has two periods to compare.

Priceat current qty
+$14.4k
Volume
+$48.0k
Mix
-$18.0k

Revenue bridge

Last year to This year, base average price 60 across items sold in both periods

Reconciled

Last year

$630.0k

Price

+$14.4k

at current qty

Volume

+$48.0k

Mix

-$18.0k

New

+$100.0k

Discontinued

-$30.0k

This year

$744.4k

Show as table
Financial bridge values
LineValueContext
Last year$630.0k—
Price+$14.4kat current qty
Volume+$48.0k—
Mix-$18.0k—
New+$100.0k—
Discontinued-$30.0k—
This year$744.4k—

By item: price effect and mix effect

Price and mix are shown per item and never netted together. Volume is a set-level term and belongs to no single row. Row mix is the change in quantity against that item’s gap to the base average, so the rows sum to the mix bar and an item that shrank cannot read as lifting the blend.

ItemSetPrice Last yearPrice This yearPrice effectMix effectNew or gone
Cartons CNew—200——+$100.0k
Cartons DDiscontinued30———-$30.0k
Cartons BBoth periods10098-$3.6k-$8.0k—
Cartons ABoth periods5052+$18.0k-$10.0k—

Reuse the analysis

Copy the summary, or export the items and the chart.

Transparent by design

How this calculation works

Price is measured at current volumes, so the interaction between a price change and a volume change sits inside the price effect. Any decomposition has to put it somewhere; this one says where.

Unit price

Revenue divided by quantity, per item and per period. Price is never entered, because a pasted price column and a pasted revenue column disagree in real data and the tool would have to choose which to believe.

Price effect

Current quantity multiplied by the change in that item’s unit price. Measured at current volumes, so it carries the interaction term.

Price basis

The default measures price at current quantities, which keeps the interaction inside price. The second option measures it at base quantities and gives the interaction a bar of its own. The two always sum to the first, so the bridge lands on the same total either way and only the account of it changes.

Volume effect

The change in total quantity, multiplied by the base average price across items sold in both periods. It is a set-level term and is never pushed down to individual rows.

Mix effect

At the set level, the change in blend among the products sold in both periods. On a row it is the change in that item’s quantity multiplied by the gap between its base price and the base average price, so the rows sum to the bar and an item that shrank cannot read as having lifted the blend.

Comparable quantity units

Volume and mix add quantities across items, so those quantities have to be in the same unit before either figure means anything. The quantity unit is one label for the whole table and it converts nothing: cases pasted beside pallets produce a total that is not a quantity, and the two effects built on it are not meaningful.

Base average price

Base revenue divided by base quantity across the common set only. Items new or discontinued are excluded, because including them would compare against an average they never contributed to.

New and discontinued

Held in their own buckets at full revenue. Neither has two periods to compare, so neither can carry a price or a mix effect, and putting them inside volume would overstate it.

Dormant items

Zero quantity in both periods. Listed for completeness and excluded from every effect, because there is nothing to compare. Revenue booked on one is excluded too, and is named in a warning rather than being absorbed somewhere it does not belong.

Reconciliation

Base revenue plus price, volume, mix, new and discontinued equals current revenue. Any residual is shown rather than spread across the effects.

Keep this analysis for later. Saving is optional.

Feedback

Save this analysis

We will store the name and this tool’s supported calculation inputs, assumptions, labels, currency and number format, plus its identifier, save dates and your account ID. Outputs are recalculated when you open it.

Chart export styling, materiality filters, monthly review datasets and connected supporting analyses are not included in account saves.

No source workbook or chart file is uploaded. Your inputs stay in the browser until you sign in and confirm saving. A temporary draft stays in this tab for up to 30 minutes while you sign in.

Saved inputs are stored on Cloudflare in Western Europe until you delete them or your account. Deleted data may remain in restricted, encrypted backups in Asia-Pacific until their 30-day expiry. A separate encrypted recovery log keeps record IDs, protected email fingerprints and deletion or unsubscribe times for 35 days so a restore does not bring deleted data back. It contains no financial inputs. Expiry runs automatically and may not remove records at the exact deadline.