1. Lighthouse

Level 6 · Metric trap: the margin that rose by itself

The request

From Catherine Hale, Chief Executive Officer

“Gross margin went from 53.13% in Q2 to 54.01% in Q4. I'd like to thank the merchandising team at the all-hands for better pricing. Before I do: is that what happened?”

Your goal

Pick the explanation that matches the numbers for Q2 and Q4 2025 (valid lines of booked orders with a known unit cost).

Store gross margin rose from 53.13% in Q2 2025 to 54.01% in Q4. In the same quarters, the margin fell in Decor (54.13% → 52.12%), Furniture (55.32% → 53.15%), Kitchen (56.40% → 55.34%) and Textiles (56.00% → 55.82%), and rose in Lighting (55.19% → 55.67%) and Outdoor (49.64% → 50.42%). Outdoor, the lowest-margin category, went from 39.5% of net sales in Q2 to 9.4% in Q4. What explains the rise?

Pick one answer, then check it.

The lesson

A blended rate has two moving parts

The store’s gross margin % is not a separate measurement. It is a weighted average of the category margins, each weighted by the category’s share of net sales:

store_margin = (share * margin).sum()   # one row per category

So it can change for two reasons: the rates change (categories get better or worse margins), or the mix changes (sales shift between categories that already had different margins). A report that only shows the blended number cannot tell the two apart.

What happened between Q2 and Q4

Harbor & Pine’s Outdoor category peaks from April to July. In Q2 2025 it was 39.5% of net sales on lines with a known cost; in Q4 it was 9.4%. Outdoor also has the thinnest margin, around 50%, while the other categories sit between 52% and 57%. When the low-margin group shrinks, the average climbs even if nothing else changes.

Meanwhile Q4 was the holiday quarter, with discounts of 3.11% of gross sales against 1.64% in Q2. That pushed four category margins down. The two effects went in opposite directions, and mix won.

Splitting the change

The standard check is to recompute the current period at the old mix:

q4_at_q2_mix = (q2_share * q4_margin).sum()   # 52.77
  • Q2 actual: 53.13%
  • Q4 at Q2’s mix: 52.77% (rate effect: −0.36 points)
  • Q4 actual: 54.01% (mix effect: +1.24 points)

The rates alone made Q4 slightly worse. The mix made it look better.

Why not just average the categories?

The plain average of the six category margins fell from 54.45% to 53.75%. It points the right way here, but it is the wrong number in general: it gives a small category the same weight as a big one. The honest split is the one above, with sales shares as the weights.

Common mistakes

  • Thanking or blaming a team for a mix change. Nobody priced better; the season changed.
  • Comparing blended rates across periods with different mixes (summer vs holiday, new vs old customers, mobile vs desktop) without the split.
  • Using a simple average of group rates as the total.

Interview note

This is Simpson’s paradox in a business setting, and interviewers love it. Say “I would split the change into a rate effect and a mix effect by recomputing at a fixed mix”, and you have answered it.

Pick what may run on this site. You can change this any time from "Cookie settings" at the bottom of every page.