Track 15 · Applied Statistics for Professionals · Lesson 1 of 12
Sales performance and KPIs
Calculate period and compound growth rates and make seasonality-aware sales comparisons that a manager can act on.
On a Monday morning the weekly dashboard shows chain sales up 43% on the previous week, and the marketing team is already celebrating. It was a holiday week. Whether that number is good news depends entirely on what you compare it with — and choosing the comparison is the most important statistical decision in sales reporting.
A key performance indicator (KPI) is a number a business tracks to judge performance: weekly sales, sales per square metre, average spend per visitor. On its own a KPI says little. It becomes information only when it is compared with something — last week, the same week last year, a target, or another store — and most reporting mistakes are mistakes of comparison, not of arithmetic.
- the KPI in the current period (this week, this month, this year)
- the KPI in the comparison period — the base. Growth is always measured relative to the base, never to the new value.
- the growth rate; negative values are declines
Growth rates compound. A 10% rise followed by a 10% fall does not return you to the start: , a 1% loss. For the same reason the average growth per year over several years is not the total growth divided by the number of years but the compound annual growth rate (CAGR), which is a geometric mean of the yearly growth factors.
- the KPI at the start and at the end of the period
- the number of years (growth steps) between them — not the number of yearly values
Dataset
Weekly store sales
4,160 rows · one row = one store-week · synthetic data
| Store | Region | Store size | Week number | Holiday week | Promotion | Footfall (visitors) | Weekly sales (SAR) |
|---|---|---|---|---|---|---|---|
| ST01 | Central | Small | 1 | false | true | 1986 | 214951.9 |
| ST01 | Central | Small | 2 | false | false | 1811 | 201838.41 |
| ST01 | Central | Small | 3 | false | true | 2045 | 217021.33 |
| ST01 | Central | Small | 4 | false | true | 1947 | 212706.67 |
| ST01 | Central | Small | 5 | false | false | 1798 | 193921.23 |
| ST01 | Central | Small | 6 | false | false | 1894 | 201477.48 |
Lumen Bay Stores (fictional): 40 stores × 104 weeks of sales, footfall and holiday/promotion flags.
Show the data as a table
| Week number | Weekly sales |
|---|---|
| 1 | 214952 |
| 2 | 201838 |
| 3 | 217021 |
| 4 | 212707 |
| 5 | 193921 |
| 6 | 201477 |
| 7 | 197267 |
| 8 | 206280 |
| 9 | 211218 |
| 10 | 201213 |
| 11 | 206739 |
| 12 | 199819 |
| 13 | 209185 |
| 14 | 197123 |
| 15 | 293939 |
| 16 | 313148 |
| 17 | 203765 |
| 18 | 197709 |
| 19 | 232446 |
| 20 | 246758 |
| 21 | 212820 |
| 22 | 205871 |
| 23 | 216734 |
| 24 | 205562 |
| 25 | 198589 |
| 26 | 266500 |
| 27 | 236579 |
| 28 | 204712 |
| 29 | 225071 |
| 30 | 177968 |
| 31 | 189915 |
| 32 | 194620 |
| 33 | 171665 |
| 34 | 166083 |
| 35 | 181943 |
| 36 | 199899 |
| 37 | 185408 |
| 38 | 296005 |
| 39 | 189010 |
| 40 | 179410 |
| 41 | 186868 |
| 42 | 195030 |
| 43 | 185182 |
| 44 | 176416 |
| 45 | 197533 |
| 46 | 188537 |
| 47 | 192513 |
| 48 | 178527 |
| 49 | 192016 |
| 50 | 187312 |
| 51 | 309569 |
| 52 | 203754 |
| 53 | 166637 |
| 54 | 210566 |
| 55 | 214755 |
| 56 | 195425 |
| 57 | 184641 |
| 58 | 250361 |
| 59 | 199192 |
| 60 | 205819 |
| 61 | 241159 |
| 62 | 209134 |
| 63 | 223981 |
| 64 | 213078 |
| 65 | 211331 |
| 66 | 334444 |
| 67 | 369291 |
| 68 | 215761 |
| 69 | 212458 |
| 70 | 208998 |
| 71 | 222373 |
| 72 | 228725 |
| 73 | 231077 |
| 74 | 227540 |
| 75 | 210337 |
| 76 | 204514 |
| 77 | 323839 |
| 78 | 227540 |
| 79 | 218137 |
| 80 | 221926 |
| 81 | 188962 |
| 82 | 235957 |
| 83 | 192834 |
| 84 | 214758 |
| 85 | 198978 |
| 86 | 197903 |
| 87 | 205242 |
| 88 | 236614 |
| 89 | 202619 |
| 90 | 259522 |
| 91 | 194378 |
| 92 | 189092 |
| 93 | 203780 |
| 94 | 206979 |
| 95 | 213130 |
| 96 | 193551 |
| 97 | 215059 |
| 98 | 197784 |
| 99 | 234531 |
| 100 | 190308 |
| 101 | 198242 |
| 102 | 199824 |
| 103 | 308311 |
| 104 | 195791 |
Retail sales are seasonal: they follow the calendar. In this (synthetic) chain, total weekly sales are usually between 11 and 14 million SAR, but holiday weeks jump to 16–19 million. That is why week-on-week growth is a poor guide in a seasonal business: from week 14 to the holiday week 15, chain sales rose by 42.9% — almost all of it the calendar, not performance.
Worked example
Comparing a holiday week fairly
In Year 1 the festival holiday fell in weeks 15–16; in Year 2 it fell in weeks 66–67 (lunar-calendar holidays move about 11 days earlier each year). Chain sales were 12.70M SAR in week 14, 18.15M in week 15, 18.43M in week 16, 13.33M in week 65, 18.90M in week 66 and 18.64M in week 67. How did the Year 2 holiday perform?
Week-on-week. Week 66 vs week 65: . This compares a holiday week with an ordinary week, so it measures the holiday, not the business.
Same week number last year. Week 66 is week 14 of Year 2, so a naive year-on-year comparison uses Year 1 week 14: . The holiday moved, so this compares a holiday week with a normal week again. One week later the same method gives week 68 vs week 16: −26.7%, an apparent collapse.
Align the calendars. Compare the holiday period with the holiday period: .
The Year 2 holiday was about 2.6% above the Year 1 holiday — a little below the chain's underlying growth of 4.8% a year (two weeks are a noisy basis, so treat that gap as "no clear difference"), and nothing like the 41.8% the week-on-week view suggests.
Over a full year the calendar effects mostly cancel. The mean store-week sales were 315,402 SAR in Year 1 (weeks 1–52) and 330,639 SAR in Year 2, a growth of 4.83%. Every one of the 40 stores traded in both years, so this is also a like-for-like (same-store) comparison. In real chains, new store openings inflate total growth, so analysts report like-for-like growth on stores open in both periods.
Normalise before you rank. Large stores sell the most per week (513,322 SAR on average vs 210,274 SAR for small stores), but per square metre of floor the small stores lead: 245.8 vs 196.7 SAR per m² per week (total sales ÷ total floor area of each group: a ratio of totals, so every square metre counts equally). Sales per m², sales per visitor (here about 94.5 SAR) and like-for-like growth answer different questions; choose the KPI that matches the decision (space allocation, staffing, marketing).
Quick check
Sales rose 20% in March and fell 20% in April. What is the net change from the start of March to the end of April?
| Comparison | Good for | Watch out for |
|---|---|---|
| Week-on-week | Spotting sudden operational problems | Seasonality, holidays and promotions dominate |
| Same period last year | Underlying growth in a seasonal business | Moving holidays, calendar shifts, store openings |
| Seasonally adjusted (÷ seasonal index) | Month-to-month trend reading | The index must come from several past years |
| Like-for-like (same stores) | Organic growth of the existing estate | Excludes the effect of openings and closures |
| Per m² / per visitor | Fair ranking of different-sized stores | Ratios hide total volume |
Exercises
The lesson is complete when every exercise is answered correctly. Hints are free; viewing a worked solution before solving means the exercise won't count towards mastery.
0 of 8 exercises correct (not saved — sign in to keep your progress)
Exercise 1 · Guided, difficulty 1 of 3
Week-on-week growth
A store sold 227,506.00 SAR last week and 201,271.91 SAR this week. What is the week-on-week growth rate? Give a percentage to 2 decimal places (negative for a decline).
Exercise 2 · Practice, difficulty 2 of 3
Compound annual growth
A regional chain's annual sales were 17.3 million SAR in the base year and 21.5 million SAR 3 years later. What was the compound annual growth rate (CAGR)? Give a percentage to 2 decimal places.
Exercise 3 · Interpretation, difficulty 2 of 3
Choosing the comparison for a moved holiday
In this chain the festival holiday fell in weeks 15–16 of Year 1 and weeks 66–67 of Year 2 (weeks 14–15 of the second year). The regional director wants to know whether week 66 was a good week. Chain sales in week 66 were 18.90 million SAR. Which comparison should the report lead with?
Exercise 4 · Application, difficulty 2 of 3
Year-on-year growth of the chain
Use the retail_weekly dataset. Year 1 is weeks 1–52 and Year 2 is weeks 53–104; all 40 stores trade in every week. In the lab, filter on week and find the mean store-week sales for each year, then the year-on-year growth rate. (Because both years have the same number of store-weeks, the ratio of the means equals the ratio of the totals.)
Data: retail_weekly · Open in the lab to explore and calculate.
Exercise 5 · Application, difficulty 3 of 3
How big is the holiday effect?
In retail_weekly, compare store-weeks with holiday = true and false. Find the mean store-week sales in each group, the holiday uplift (holiday mean ÷ non-holiday mean − 1), and the percentage of store-weeks with a promotion in each group (a crosstab of holiday × promotion gives the counts).
Data: retail_weekly · Open in the lab to explore and calculate.
Exercise 6 · Practice, difficulty 2 of 3
Seasonally adjusted month-on-month change
A store's seasonal indices (from five previous years) are 0.94 for November and 1.27 for December: December sales are typically 27% above an average month. This year November sales were 880,000 SAR and December sales 1,168,700 SAR.
What is the seasonally adjusted change from November to December? Give a percentage to 1 decimal place.
Exercise 7 · Practice, difficulty 2 of 3
Fair or misleading comparison?
Classify each sales comparison as fair for the stated purpose or misleading.
Exercise 8 · Interpretation, difficulty 3 of 3
Respond to the Monday dashboard
The marketing manager writes: "Chain sales jumped 41.8% in week 66 compared with week 65. Our new in-store display, launched in all stores in week 66, is clearly working." Week 66 was the first week of the Year 2 holiday. You know that the Year 2 holiday weeks 66–67 were 2.6% above the Year 1 holiday weeks 15–16, and that the chain's underlying growth is about 4.8% a year. Write a short reply (3–4 sentences) explaining what the 41.8% does and does not show, what comparison you would use instead, and what that comparison suggests.
What you can now do
- Calculate period-on-period growth relative to the correct base, and compound annual growth (CAGR) over several years
- Choose seasonality-aware comparisons: same period last year aligned on calendar events, or seasonally adjusted figures
- Normalise KPIs (per m², per visitor, like-for-like) before ranking units of different size
- Explain why a jump in sales cannot be credited to an initiative without a fair comparison group