Forecasts That Know Their Limits
Dispensight
Forecast reliability case study

Forecasts that know their limits.

Fifteen weeks of daily sales forecasts for a single-location cannabis retailer, each with a calibrated 80% range. We checked every range against what actually happened.

87.5%of actual days landed inside the 80% range
10.1%average daily forecast error (MAPE)
1.2%net difference between total forecast and total sales
104daily forecasts scored against actual sales
The ranges held

An 80% range should catch about 80% of days. This one caught 87.5%.

Point forecasts get the attention, but the range around them is what a manager actually plans against. Across 104 scored days, 91 actual results fell inside the forecast's 80% band. That leans slightly conservative, which is the safer direction to miss for staffing and inventory.

Over the full period, total sales came within 1.2% of total forecast. Day to day, the average miss was 10.1%. Both numbers matter: one tells you the model has no drift, the other tells you how much any single day can move.

Weekday by weekday

Not every day is equally predictable, and the model shows you which ones aren't.

DayDaily errorMAPEIn range
Thursday6.2%15/15
Friday7.0%15/15
Saturday8.7%12/14
Tuesday9.9%13/15
Sunday10.2%12/15
Monday11.8%14/15
Wednesday17.2%10/15

Thursday and Friday are anchors. Thursday averaged a 6.2% miss with every actual inside its range. Friday was close behind at 7.0%, with the steadiest sales of the week.

Wednesday is the wildcard. It had the highest error and four of its five misses ran above the range, meaning demand beat the forecast. That is a concrete, fixable signal, not noise.

Sorted by MAPE. "In range" counts actual days that fell inside the 80% band. Saturday has 14 scored days; every other weekday has 15.

WeekdayMAPEIn rangeAvg biasSales variabilityRange width
Thursday6.2%15/15-1.5%8.0%±18.8%
Friday7.0%15/15-4.9%6.1%±15.3%
Saturday8.7%12/14-1.9%10.1%±15.6%
Tuesday9.9%13/15-0.6%10.1%±20.2%
Sunday10.2%12/15+4.2%10.2%±17.0%
Monday11.8%14/15+4.2%13.4%±22.4%
Wednesday17.2%10/15+10.2%15.5%±21.7%

Bias is the average of (actual − forecast) as a share of average sales; positive means demand ran ahead of the forecast. Sales variability is the coefficient of variation of actual sales. Range width is the average half-width of the 80% band as a share of the forecast.

Every day, every miss

One glance shows where the ranges were tested.

Each cell is one day. The number shows how far the actual result travelled toward the edge of its range: 0 is dead on the forecast, ±1.0 is the boundary. Solid cells broke through.

Above the rangeBelow the rangeInside, above forecastInside, below forecastNot yet scored
SunSunday, week 1: -0.4-0.4Sunday, week 2: +0.1+0.1Sunday, week 3: +0.7+0.7Sunday, week 4: +0.5+0.5Sunday, week 5: -0.5-0.5Sunday, week 6: -1.1-1.1Sunday, week 7: +1.4+1.4Sunday, week 8: +0.5+0.5Sunday, week 9: +1.2+1.2Sunday, week 10: +0.6+0.6Sunday, week 11: +0.7+0.7Sunday, week 12: -0.7-0.7Sunday, week 13: +0.1+0.1Sunday, week 14: +0.0+0.0Sunday, week 15: +0.6+0.6MonMonday, week 1: -0.9-0.9Monday, week 2: +0.9+0.9Monday, week 3: +0.7+0.7Monday, week 4: +0.8+0.8Monday, week 5: +1.2+1.2Monday, week 6: +0.9+0.9Monday, week 7: +0.5+0.5Monday, week 8: -0.4-0.4Monday, week 9: -0.0-0.0Monday, week 10: -0.3-0.3Monday, week 11: +0.2+0.2Monday, week 12: -0.3-0.3Monday, week 13: +0.5+0.5Monday, week 14: -0.3-0.3Monday, week 15: -0.5-0.5TueTuesday, week 1: +0.4+0.4Tuesday, week 2: -1.1-1.1Tuesday, week 3: +0.0+0.0Tuesday, week 4: -0.7-0.7Tuesday, week 5: +0.5+0.5Tuesday, week 6: +0.3+0.3Tuesday, week 7: +0.1+0.1Tuesday, week 8: +0.5+0.5Tuesday, week 9: -0.1-0.1Tuesday, week 10: -0.2-0.2Tuesday, week 11: +0.4+0.4Tuesday, week 12: -0.9-0.9Tuesday, week 13: -0.3-0.3Tuesday, week 14: -0.3-0.3Tuesday, week 15: +1.4+1.4WedWednesday, week 1: +0.6+0.6Wednesday, week 2: -0.3-0.3Wednesday, week 3: +1.8+1.8Wednesday, week 4: +0.8+0.8Wednesday, week 5: +0.3+0.3Wednesday, week 6: -1.2-1.2Wednesday, week 7: +1.1+1.1Wednesday, week 8: +0.5+0.5Wednesday, week 9: -0.8-0.8Wednesday, week 10: +0.8+0.8Wednesday, week 11: +2.3+2.3Wednesday, week 12: +1.0+1.0Wednesday, week 13: -0.6-0.6Wednesday, week 14: +1.1+1.1Wednesday, week 15: +0.4+0.4ThuThursday, week 1: -0.0-0.0Thursday, week 2: -0.4-0.4Thursday, week 3: -0.2-0.2Thursday, week 4: -0.2-0.2Thursday, week 5: +0.3+0.3Thursday, week 6: -0.4-0.4Thursday, week 7: +0.8+0.8Thursday, week 8: +0.3+0.3Thursday, week 9: -0.5-0.5Thursday, week 10: -0.4-0.4Thursday, week 11: +0.2+0.2Thursday, week 12: -0.7-0.7Thursday, week 13: +0.1+0.1Thursday, week 14: -0.2-0.2Thursday, week 15: +0.0+0.0FriFriday, week 1: -0.4-0.4Friday, week 2: -1.0-1.0Friday, week 3: +0.1+0.1Friday, week 4: -0.4-0.4Friday, week 5: -0.7-0.7Friday, week 6: -0.4-0.4Friday, week 7: -0.5-0.5Friday, week 8: -0.1-0.1Friday, week 9: +0.3+0.3Friday, week 10: -0.5-0.5Friday, week 11: +0.4+0.4Friday, week 12: +0.1+0.1Friday, week 13: -0.4-0.4Friday, week 14: -0.7-0.7Friday, week 15: -0.6-0.6SatSaturday, week 1: +0.3+0.3Saturday, week 2: -0.8-0.8Saturday, week 3: +0.7+0.7Saturday, week 4: +0.1+0.1Saturday, week 5: -0.1-0.1Saturday, week 6: +0.4+0.4Saturday, week 7: +0.6+0.6Saturday, week 8: -0.7-0.7Saturday, week 9: -1.1-1.1Saturday, week 10: +0.2+0.2Saturday, week 11: +0.5+0.5Saturday, week 12: -0.3-0.3Saturday, week 13: -1.3-1.3Saturday, week 14: -0.0-0.0Saturday, week 15: ··123456789101112131415

Columns are study weeks 1–15. Eight escapes ran high, five ran low. The last Saturday had no recorded sales yet.

Uncertainty that behaves

Range widths stayed steady, and widened when there was a reason to.

16%18%20%22%Week 1: ±17.7%1Week 2: ±17.4%2Week 3: ±18.7%3Week 4: ±18.5%4Week 5: ±17.4%5Week 6: ±18.9%6Week 7: ±20.1%7Week 8: ±19.7%8Week 9: ±18.4%9Week 10: ±18.8%10Week 11: ±20.2%11Week 12: ±19.0%12Week 13: ±18.3%13Week 14: ±18.5%14Week 15: ±19.2%15

The average range sat near ±19% of the forecast all period, moving within a narrow band rather than drifting. A model that quietly loosens its ranges over time is hiding uncertainty; this one didn't.

The single widest range of the study fell on a day flagged with a severe weather warning. The model opened its band to ±23% of forecast, and the actual result still landed inside it.

Weekly average of daily half-width divided by forecast. These are averages of daily ranges, not ranges for weekly totals.

What the review produced

A reliability report you can act on.

Know your anchor days

Plan confidently around the days the model consistently nails, and use them as the benchmark for any future tightening.

Find the hidden upside

Repeated high-side misses on one weekday point to demand the model isn't seeing yet, such as events, promotions or traffic patterns.

Correct quiet bias

A day can stay inside its range and still lean one way. Small, steady overforecasts are flagged for correction before they cost anything.

How we measured
  • Every daily range was checked against that day's actual sales; days without recorded sales were excluded, not counted as zero.
  • MAPE uses actual sales as the denominator. Coverage counts days where the actual fell between the lower and upper bound.
  • These are descriptive statistics on 14–15 days per weekday. They show patterns worth acting on, not statistically proven effects.
  • The retailer, location, calendar dates and all dollar amounts have been removed. Every figure shown is a percentage or a ratio.