Gross Margin PVM Bridge
A price–volume–mix bridge that explains every dollar of gross-margin change.
It measures price, volume, mix, and unit-cost effects (materials, labour, burden) summing to ΔGM.
Use it in variance meetings so the story matches the math before you change price or mix.
Signal Lab · Model
Gross Margin PVM Bridge
PVM (Price–Volume–Mix) — prior / budget vs actual, then unit-cost split into Materials, Labor, and Burden. Effects should sum to 100% of ΔGM.
Illustrative AU product mix sample until you enter actuals. Not financial advice.
Product rows — prior vs actual
Up to 8 SKUs. Unit GM uses prior (P0 − C0) for volume/mix. Persist locally · Jump to bridge
GM bridge waterfall
Prior GM → Price · Volume · Mix · Materials · Labor · Burden · Residual → Actual GM. Bars and % shares should reconcile to 100% of ΔGM.
Equations
- GM0_i = P0_i − C0_i · GM1_i = P1_i − C1_i · ΔGM = GM$1 − GM$0
- Price = Σ (P1 − P0) × Q1 · Unit cost = Σ (C0 − C1) × Q1
- Volume = (Q1 − Q0) × (GM$0 ÷ Q0) · Mix = Σ ((Q1_i/Q1 − Q0_i/Q0) × Q1 × GM0_i)
- Mat / Lab / Bur split UnitCost (default 50/30/20) · Residual = ΔGM − (Price + Vol + Mix + Mat + Lab + Bur)
How this is calculated
- Prior / actual GM$ = Σ units × (price − unit cost)
- Price effect = Σ (actual price − prior price) × actual units
- Unit cost effect = Σ (prior cost − actual cost) × actual units (cost up = negative)
- Volume effect = (total actual units − total prior units) × prior average GM$ per unit
- Mix effect = change in volume share × total actual units × prior unit GM, summed across products
- Materials / Labor / Burden are a user-editable split of the unit-cost effect (default 50/30/20)
- Residual closes the bridge to actual GM — should be ~0 when the split matches unit cost and maths are clean
Illustrative PVM bridge — not financial advice. Ask your agent to confirm the bridge ties.
Take it with you
Download a prompt, export the Excel workbook, or email yourself.
Email opens your mail client with the prompt in the body (mailto). No account required. Data stays in this browser (localStorage).
