Your margin was supposed to be $100K this month. It came in at $75K. You're $25K short.
But why? Did you cut prices? Did volume drop? Did you sell more of lower-margin products? Did costs rise? Without Price-Volume-Mix analysis, you have no idea. You just know the number.
With PVM analysis, you know exactly which lever moved:
- Price variance: −$8K (you dropped prices 5% to compete)
- Volume variance: +$5K (volume increased despite price cut)
- Mix variance: −$12K (you sold more of lower-margin SKUs)
- Cost variance: −$10K (freight spiked 8%)
- Total: −$25K
Now you can make decisions. "Mix shift is hurting us. Let's incentivize the higher-margin SKUs. And that freight cost spike: can we negotiate or nearshore?"
This is what PVM analysis does: it breaks the black box of variance into actionable pieces.
This guide covers: What PVM is, how to build a model, variance formulas for price/volume/mix, and how to write commentary that drives action.
What is Price-Volume-Mix (PVM) Analysis?
PVM analysis is a framework for understanding variance. Instead of "we missed margin by $25K," you answer: "What drove that $25K miss?"
It breaks variance into four categories:
- Price variance: Did we change prices? How much impact?
- Volume variance: Did units sold change? How much profit impact?
- Mix variance: Did we sell more high-margin or low-margin products?
- Cost variance: Did COGS or fulfillment costs change?
Each variance component ties to a business decision or external factor. Price variance = pricing strategy. Volume variance = demand / marketing effectiveness. Mix variance = product strategy. Cost variance = sourcing / efficiency.
Why it matters for consumer brands
- Multiple channels: A brand selling DTC + Amazon + wholesale has different pricing, volume, and mix dynamics on each. PVM analysis by channel shows which channel is underperforming.
- Multiple SKUs: A brand with 50 SKUs can't track profitability by SKU without PVM. Which SKU drives volume? Which drives margin?
- Monthly reforecasting: Once you see "mix variance was −12K," you can adjust the forecast for next month and pricing to steer mix higher.
- Board reporting: Investors don't want to hear "we missed by $25K." They want to hear "price cuts drove $8K of miss, but mix shift cost $12K so we're adjusting strategy."
PVM is how mature FP&A teams move from "variance explained" to "variance acted upon."
The PVM Framework
PVM variance separates margin change into pieces. Here's the structure:
| Variance Component | Definition | Cause | Example |
|---|---|---|---|
| Plan (baseline) | Expected price × volume × margin % | - | Price $50, Volume 1000, Margin 40% = $20K margin plan |
| Price Variance | (Actual Price − Plan Price) × Plan Volume × Plan Margin % | Pricing decisions, competitive pressure, promotions | Price dropped to $48: −$2 × 1000 × 40% = −$800 |
| Volume Variance | (Actual Volume − Plan Volume) × Plan Price × Plan Margin % | Demand, marketing effectiveness, seasonality | Volume grew to 1200: +200 × $50 × 40% = +$4,000 |
| Mix Variance | Shift in SKU sales from higher to lower margin (or vice versa) | Product strategy, channel mix, market demand | Sold 300 more of $40 (30% margin) SKU, 200 fewer of $60 (50% margin) = −$2,000 |
| Cost Variance | (Actual Cost − Plan Cost) × Actual Volume | Sourcing, freight, efficiency | COGS up $2/unit on 1200 units = −$2,400 |
Reconciliation formula
Plan Margin+ Price Variance+ Volume Variance+ Mix Variance+ Cost Variance= Actual Margin
All pieces should add up perfectly. If not, you have a data quality issue.
Variance Components: Deep Dive
1. Price Variance
Formula: (Actual Price − Planned Price) × Planned Volume × Planned Margin %
Measures the profit impact of raising or lowering prices.
Example:
Plan: $50 price, 1,000 units, $20/unit margin
Actual: $48 price (5% cut for promotion)
Price Variance = ($48 − $50) × 1,000 × 40% = −$800
Interpretation: The 5% price cut cost $800 in margin (assuming volume didn't change).
Use case: "We cut prices to stay competitive. What did it cost?" Answer from price variance.
2. Volume Variance
Formula: (Actual Volume − Planned Volume) × Planned Price × Planned Margin %
Measures the profit impact of selling more or fewer units.
Example:
Plan: 1,000 units
Actual: 1,200 units (demand was stronger)
Planned price: $50, margin: 40%
Volume Variance = (1,200 − 1,000) × $50 × 40% = +$4,000
Interpretation: Higher demand added $4,000 in margin.
Use case: "Sales were up. How much of that was true profit?" Answer from volume variance.
3. Mix Variance
Formula: (High-margin SKUs sold) − (Low-margin SKUs sold), weighted by margin difference
Measures the profit impact of selling more high-margin or low-margin products.
This is the trickiest variance to calculate, so here's a step-by-step:
- 1. List all SKUs with planned and actual volume, and margin % for each
- 2. Calculate planned mix: (Planned Volume by SKU) ÷ (Total Planned Volume)
- 3. Calculate actual mix: (Actual Volume by SKU) ÷ (Total Actual Volume)
- 4. For each SKU, calculate the volume shift: (Actual Mix − Planned Mix) × Total Actual Volume
- 5. Weight by margin: Volume Shift × SKU Margin % = Mix Variance contribution
- 6. Sum across all SKUs
Example:
Plan: 60% sales of Premium SKU ($50, 50% margin), 40% of Standard SKU ($35, 30% margin)
Actual: 50% Premium, 50% Standard
Actual total volume: 1,000 units
Premium: Planned 600 units, Actual 500 = −100 units
Premium margin loss: −100 × 50% = −$5,000
Standard: Planned 400 units, Actual 500 = +100 units
Standard margin gain: +100 × 30% = +$3,000
Net Mix Variance = −$5,000 + $3,000 = −$2,000
Interpretation: Shift to lower-margin product cost $2,000 in margin.
Use case: "Why did margin drop if volume was good?" Answer: Mix variance. The high-volume sales came from lower-margin SKUs.
4. Cost Variance
Formula: (Planned Cost − Actual Cost) × Actual Volume
Measures the profit impact of COGS and fulfillment cost changes.
Example:
Plan: $20/unit COGS
Actual: $22/unit COGS (freight spike)
Actual volume: 1,200 units
Cost Variance = ($20 − $22) × 1,200 = −$2,400
Interpretation: Rising costs ate $2,400 in margin.
Use case: "Costs went up. What's the profit impact?" Answer from cost variance.
Building a PVM Model in Excel
Basic structure (by SKU)
Create a table with columns:
- SKU Name
- Planned Price
- Actual Price
- Planned Volume
- Actual Volume
- Planned Margin % (or $ per unit)
- Planned Revenue (Price × Volume)
- Actual Revenue (Price × Volume)
- Planned Margin ($)
- Actual Margin ($)
- Price Variance (formula)
- Volume Variance (formula)
- Mix Variance (formula)
- Cost Variance (formula)
- Total Variance (formula)
Example table structure
| SKU | Plan Price | Act Price | Plan Vol | Act Vol | Plan Margin % | Plan Revenue | Act Revenue | Plan Margin $ | Act Margin $ |
|---|---|---|---|---|---|---|---|---|---|
| Premium | $50 | $48 | 600 | 500 | 50% | $30,000 | $24,000 | $15,000 | $12,000 |
| Standard | $35 | $34 | 400 | 500 | 30% | $14,000 | $17,000 | $4,200 | $5,100 |
| Total | - | - | 1000 | 1000 | - | $44,000 | $41,000 | $19,200 | $17,100 |
Now add variance columns for Price, Volume, Mix, Cost, Total.
Formula examples (Excel)
- Price Variance: =(Actual Price − Planned Price) × Planned Volume × Planned Margin %
- Volume Variance: =(Actual Volume − Planned Volume) × Planned Price × Planned Margin %
- Cost Variance: =(Planned Cost − Actual Cost) × Actual Volume
- Total Variance: =Actual Margin − Planned Margin
Mix variance is harder to formulize in Excel. Most teams calculate it as the residual: Total Variance − Price − Volume − Cost = Mix Variance.
Pro tips
- Always reconcile: Sum of all variances should equal total margin variance. If not, there's a data error.
- Build by channel: Create separate tabs for DTC, Amazon, Wholesale. Mix variance is very different by channel.
- Build monthly: Update once a month when actuals are final. Keep historical tabs for trend analysis.
- Automate if possible: Pull planned data from budget, actual data from accounting system. Manually calculating is error-prone.
Worked Examples: PVM by Channel
Example 1: DTC Channel (one month)
Illustrative example:
| Metric | Plan | Actual | Variance |
|---|---|---|---|
| Total Revenue | $50,000 | $45,000 | −$5,000 |
| COGS + Fulfillment | $20,000 | $21,000 | −$1,000 |
| Contribution Margin | $30,000 | $24,000 | −$6,000 |
| Price Variance | −$1,500 (price cuts) | ||
| Volume Variance | −$2,500 (10% fewer units) | ||
| Mix Variance | +$800 (more premium SKUs) | ||
| Cost Variance | −$2,800 (freight spike) | ||
| Total Reconciliation | −$1,500 − $2,500 + $800 − $2,800 = −$6,000 | Matches |
Commentary: "Contribution margin missed by $6K this month. Volume was down 10% (likely seasonality), costing $2.5K. We also cut prices 3% to clear inventory, costing $1.5K. Mix improved by $800 from higher premium SKU sell-through. Cost variance was the biggest driver (−$2.8K) from ocean freight spike. For next month, we're raising prices 2% and negotiating freight."
Example 2: Omnichannel (blended)
Illustrative example:
| Channel | Plan Margin | Act Margin | Price Var | Vol Var | Mix Var | Cost Var | Total Var |
|---|---|---|---|---|---|---|---|
| DTC | $30,000 | $24,000 | −$1,500 | −$2,500 | +$800 | −$2,800 | −$6,000 |
| Amazon | $18,000 | $16,500 | −$500 | +$1,000 | −$2,000 | −$1,000 | −$2,500 |
| Wholesale | $12,000 | $13,500 | +$500 | +$1,000 | −$500 | +$500 | +$1,500 |
| Total | $60,000 | $54,000 | −$1,500 | −$500 | −$1,700 | −$3,300 | −$6,000 |
Commentary: "Total margin missed by $6K. DTC was the biggest miss (−$6K), driven by volume softness and cost inflation. Amazon recovered with volume growth (+$1K) but mix shifted negative (−$2K). Wholesale actually beat plan (+$1.5K) because of strong volume. On a forward basis: (1) DTC volume is likely seasonal; we expect recovery in Q2. (2) Amazon mix needs attention; we oversold lower-margin SKUs. (3) Wholesale is trending well; let's invest in retailer relationships."
Variance Commentary Template
Once you have the numbers, the narrative matters. Here's a template for writing variance commentary that drives action:
Variance Commentary Template
Summary (1-2 sentences):
"[Metric] came in at $[X], [Y%] vs plan of $[Z]. Main drivers: [top 2-3 variances]."
By Variance Type (1-2 sentences each):
Price: "Price variance was [±$X]. This was driven by [reason: discounts, competitive pressure, channel mix]. Impact: [outlook]."
Volume: "Volume variance was [±$X]. [X%] above/below plan, driven by [reason: seasonality, marketing effectiveness, product availability]. Outlook: [next month]."
Mix: "Mix variance was [±$X]. Sales skewed toward [high/low margin products] due to [reason: demand, promotions, availability]. Action: [what will we do]."
Cost: "Cost variance was [±$X]. [COGS/freight/labor] was [X%] higher/lower than plan due to [reason: sourcing, tariffs, efficiency]. Mitigation: [action]."
Actions & Next Month (2-3 sentences):
"To address [biggest variance], we will [action]. We expect [metric] to [trend] in next month based on [reason]. Board input on [specific question]?"
Real example
Actual variance commentary (from a CPG brand):
"November contribution margin: $54K vs plan $60K (−10%, −$6K). Three drivers:
Price (−$1.5K): We cut DTC prices 3% mid-month to clear seasonal inventory. Amazon and Wholesale stayed flat.
Volume (−$500): Overall units down 3%. DTC down 10% (expected seasonal decline), Amazon up 5%, Wholesale flat.
Mix (−$1.7K): Amazon mix was negative; we oversold the Standard SKU (lower margin) due to promotional pricing. Wholesale was actually positive; retailer focused buys on Premium.
Cost (−$3.3K): Freight from Vietnam spiked 12% mid-month (geopolitical). Absorbed the full impact to maintain customer pricing. Negotiating alternative sourcing for Dec forward.
December Outlook: We expect volume recovery from holiday demand (DTC +15%, Wholesale +8%, Amazon flat). Mix should improve once we pause promotions. Freight will remain elevated through Jan unless tariff situation shifts. No price changes planned December."
From Variance to Action
Variance commentary without PVM is a blame game: "Revenue missed. Oops." Variance commentary with PVM is a strategic conversation: "Revenue missed because volume was down 10% (seasonality), mix shifted negative (promotions), but cost inflation was the biggest driver (tariffs). Here's what we're doing about it."
The brands that scale use PVM monthly. They know exactly which levers moved. They adjust pricing, product focus, and sourcing based on variance signals, not guesses.
The challenge: building and maintaining a PVM model manually is tedious. Most brands build it once, then let it rot. The best teams automate: pull actuals from accounting, planned data from the budget, calculate price/volume/mix/cost variances daily, and reconcile to the books weekly.
That's where FP&A platforms come in. They calculate PVM automatically, by channel, by SKU, by day. When price changes post, volume shifts, or mix drifts, the variance updates instantly. The finance team sees what drove the change and can act the same week.
Stop guessing why margin changed.
Niblin calculates Price-Volume-Mix variance by channel, by SKU, monthly. See exactly how price decisions, volume trends, and mix shifts impact contribution margin. Make pricing and product decisions with data, not gut feel.
Calculate PVM Variance by Channel
Key Takeaways
- Price-Volume-Mix analysis breaks margin variance into components: price, volume, mix, and cost variance.
- Price variance = (Actual Price − Plan Price) × Plan Volume × Plan Margin %. Shows impact of pricing decisions.
- Volume variance = (Actual Volume − Plan Volume) × Plan Price × Plan Margin %. Shows impact of volume growth/decline.
- Mix variance = shift in sales from high-margin to low-margin products (or vice versa). Shows impact of SKU strategy.
- Cost variance = (Plan Cost − Actual Cost) × Actual Volume. Shows impact of COGS/freight changes.
- All variances should reconcile: Price + Volume + Mix + Cost = Total Variance.
- Build PVM monthly by channel and by SKU for actionable insights on profitability drivers.
Frequently Asked Questions
What is price-volume-mix (PVM) analysis?
PVM analysis breaks margin variance into components: price (did we change prices?), volume (did units change?), mix (did we sell more high or low-margin products?), and cost (did COGS change?). It explains why results differ from plan and drives decisions.
Why is PVM analysis important for consumer brands?
Consumer brands have multiple channels (DTC, Amazon, wholesale) and multiple SKUs with different margins. Without PVM, you only see "margin was $X below plan." With PVM, you see why: "price cuts cost $8K, volume grew $5K, mix shift cost $12K, freight spiked $10K." This breakdown drives action.
How do I calculate price variance?
Price Variance = (Actual Price − Planned Price) × Planned Volume × Planned Margin %. Example: Price dropped $2/unit, planned 1,000 units, 40% margin: ($2) × 1,000 × 40% = −$800. Shows the profit impact of pricing decisions.
What is mix variance and why is it hard to calculate?
Mix variance measures the profit impact of selling more high-margin or low-margin products. It's tricky because it requires tracking planned vs actual volume and margin % for each SKU, then weighting by margin difference. Most teams calculate it as a residual: Total Variance − Price − Volume − Cost = Mix.
Should I build PVM by product or by channel?
Both. Build by channel first (DTC, Amazon, Wholesale) because each has different pricing, margin %, and cost structures. Then build by SKU within each channel to understand product-level mix drivers. Roll up to total for the board.
How often should I update PVM analysis?
Monthly at minimum, once actuals are finalized. Best practice: update weekly or daily if you have the systems. When variance signals are fresh, you can act faster (adjust pricing, shift product focus) rather than waiting 30 days for month-end close.
By