Gross Profit Decomposition Using Transactional Data

By: Armin Kakas.  This is a guest post from our partner Armin Kakas on Gross Profit Decomposition. It originally appeared on Armin’s blog with this version edited for consistency. To learn more about our partnership please read our partnership announcement.

Explaining Gross Profit Growth Decomposition

This week, we’ll dive into another foundational but influential Margin Analytics technique. We explore the Gross Profit Growth Decomposition using raw Transactional Data.

Growth Decomposition is a simple technique that allows us to understand the critical drivers of our Revenue or Gross Profit growth (or decline).

More specifically, it enables us to dynamically drill down into important Customer or Product level drivers to understand:

  1. Pricing Impact: What is our Net Price Realization, and what Business Segments, Customers, Brands, Products, etc. are the winners/losers of our pricing execution?
  2. Cost Impact: What areas in our business are driving the highest Cost Inflation? Where do we need to focus on rightsizing our List Prices or Sales Discounting efforts? Is this because our Price Realization has not kept pace with rising costs?
  3. Volume Impact: Which Customer Segments or Products drove substantial volume losses despite lower prices (or a negative Pricing Impact)? Which Customers or Products increased volume despite higher prices? What are the learnings we can get from this?
  4. Mix Impact: What are the areas (Customers, Products, or both) where we have offset a negative Price Realization with positive Mix impacts? In other words, despite lower prices, we have sold a higher portion (mix) of highly profitable products this year than last year (or some prior period).

Applied Example

Let’s understand our example below, which has been built from detailed transactional data using a fictional manufacturer:

  1. Our US & Canada Region drove the lowest Gross Profit $ improvement YTD vs. YTD Prior Year @ $0.2M. Despite favorable Cost impacts (+ $34.8M), the region managed to drive a -$38M Price Realization. Costs declined heavily, and instead of capitalizing on it, the region lowered Net Prices by -$38M (either through List Price decreases or Discounts & Rebates). Volume impact was -$0.7M (sold fewer units), while it had a positive Mix Impact.
  2. Once we drill down into US & Canada, we see that all of the negative Price Realization is driven by one large Customer Segment, “Buying Groups.”
  3. Double-clicking on “Buying Groups,” we see that two Products are responsible for all the negative Pricing Realization. We should understand if this behavior is concentrated with a handful of Customers or Sales Reps before formulating a plan to course correct.




Building a dynamic, near real-time Gross Profit Growth Decomposition solution can provide critical insights.  It is a potent way to augment Margin Analytics capabilities and quickly turn around bad-performing areas.

Despite its simplicity, most companies don’t get this right. Instead, they often use high-level, aggregate measures (i.e., Brand-level calculations instead of building it up from the Customer-Product level).

Fortunately, building these dynamic capabilities is pretty simple nowadays. We recommend familiar tools like Tableau and Power BI or using a few lines of code in R or Python.

For more information on how to build dynamic Gross Profit Decomposition using your Transactional Data, please visit our Revenue Analytics Tools section, where you can find free resources using Excel, Tableau, or R.


Recent Posts