Skip to content


If you know about Tesla, you know what mix variance is.

Price variance is the impact of the change of price on revenues, keeping volumes constant. Volume variance is the impact of the change of volume on revenues, keeping prices constant.


What kind of variance is it when prices and volumes do not change but customers shift their purchases towards more expensive or less expensive things? That is mix variance.

You are still selling 10 jars of nutella, prices per SKU have not changed, but instead of selling 5 small jars and 5 large jars, you are suddenly selling 2 small jars and 8 large ones. In this case your mix variance will simply be the difference of the price between large and small nutella jars times 3. Mix variance is very important . It is also tedious to calculate as the number of products increases.

Let's start super simple with our fake Tesla dataset (type "Tesla" on 'Mparanza dataset list). We all know that Tesla is selling a lot more cars, but at an average lower price per car, since now it is selling mostly Model E and a lower proportion of Model X and Model S.

Set Run as "Variable dimension bridge" and Show Variance as "price, volume, mix" and hit submit. You get the report below.

The 3.8M (fake number 🤥) increase in the volume variance tied to number of cars sold is partially offset by negative 2.3M mix variance value, reflecting the fact that now the mix is poorer. On a very theoretical line 💭 it would have been "better" if Tesla had sold as many cars as it is actually selling, but all top-of-the-line Model S 💰 and Model X 💰. The 300k price variance shows the impact of the price increase of the different models.

waterfall (5)

table (6)

You can see what is going on by plotting the dataset. Choose Plot Entire Dataset in the Choose Row to Plot parameter. Model S 💰 and Model X 💰 cost more than twice as much as a Model E. But Tesla is selling a lot more Model E cars and a lower number of Model S and Model X.

visualization (2)


Tesla experienced a negative Mix variance that was more than offset by the positive volume variance of the much larger number of products sold. For Tesla Mix variance measures the impact of the fact that - everything else (volume and prices) constant - now "instead" of Model S, Tesla sells Model E.

Now imagine if Tesla started selling also 1000$ home charging stations, or, for that matter, if Tesla merged with Space X and started selling also 10M$ space launches. Nobody would say that people that are buying Tesla batteries are buying them "instead" of buying a Model E - "impoverishing" the mix - nor that Nasa is buying space launches "instead" of buying a Model X - "enriching" the mix.

In this case, it would not make sense to speak about "Mix" variance. Adding batteries or space flights to Tesla's mix should not impact on the "Mix" variance metric. In the same way, if a company that sells furniture starts selling a few more kits of screws to mount the furniture, there is no relevant change of Mix variance. The screws were never meant to be sofas. There is a change in Mix variance only if the customers start buying less or more expensive sofas.

Calculating Mix variance makes sense if it refers to a change in the sales proportion of the products that in some way share similar characteristics. Mix variance calculation can return misleading results when calculated across a too wide spectrum of prices.

For this reason, when calculating Mix variance, the app allows you to drop the highest and lowest price quartiles.

This might result in a Balance value like in this example. The balance value is the sum of the rows that have been dropped because their price was too high or too low relative to the "significant" range of prices.

waterfall (12)

To enable this behavior, click on the ➕ sign below the "Show variance as" widget and set the "Drop price outliers from mix variance calculation" widget to True.


You can also change the quartile range of dropped prices with the "Quantile value to exclude" widget. Top and Low quantiles will be dropped.


By default, with the setting on False, the app will return a result with no balance. However if the price range is too wide, the indicated Mix variance might not be "real"/"factual" in business terms.

waterfall (13)

After you have finished calculating your Mix Variance please clear the cache . Otherwise, the app might continue to use your dataset with dropped rows!

To clear the Streamlit Cache simply key in the letter "c", like "cache". This dialog will appear.


Confirm and key in the letter "r", like "rerun" in order to rebuild the cache. The hit the submit button again to get the corrected chart.


Please not that, by necessity, mix variance only measures the effect on variance of the change in relative proportions of the combinations that exists in both periods. If a combination exists only in one period, the impact will be entirely booked as positive or negative volume variance.

Going back to are Tesla example, let's imagine that the Model E were sold only in the second period. In that case it is obviously impossible to calculate the Model E price for the first year, and therefore it is impossible to calculate a Mix variance tied to the greater number of Model E sold in the second year. The average price will go down, indicating an "impoverishment" of the Mix, but as far as the variance calculation is concerned, all that that has happened is that Tesla has sold more Model E, and that translates into volume variance.

Here is the result with a dataset with no Model E in the first period. The period A revenue has gone down by just .4M - the sales of Model E in the first year - but the negative Mix variance has all but disappeared.

waterfall (5)

It is all New volume. Please note that this happens not only when there is a new "product", but, at a less obvious level, when there is a new combination. For instance, if the Model E exists in the first year but is only sold in the USA and not in China, the app would book the effect of the sale of a large number of Model E as mix variance in the USA, but as volume variance in China. Because Model E sales in China are considered New volume, and in the USA are considered Changed volume.

waterfall (7)


A related question we might ask, is what was the impact of the change of mix on margins. We assume we have the COGS for each row of the dataset. Set "show variance as" to "Price, Volume, Mix, Costs". You get this. In this scenario the negative impact on margins of mix change is almost equivalent to the positive impact of the increase of volumes. The positive cost variance is a reflection of the fact that the unit costs did not follow the increase in prices.

waterfall (6)

table (7)

We might want to understand how this change in margin is tied to the specific models and markets. Set "choose columns you want to see in every report row" to model.


The output that clearly shows Model 3 increasing in volumes, and the other models decreasing.

waterfall (7)

table (8)