This is where variable response smoothing shows us its strength. Get ready though, I’m going to throw a lot of acronyms your way. I’ll define them all but you may want to keep a pad and pencil handy.
VRS has a very effective mechanism to separate trend from forecast error. How is this done?
- Be comfortable with the VRS assumptions
- Measure the mean absolute error, MAE
- Measure the mean signed error, MSE
- The ratio MSE / MAE is the trend component
Accurate Sales Profile. VRS makes a huge assumption that your sales profile is accurate and does not need to be changed. Remember, the sales profile is indexed and is agnostic to the magnitude of the sales. We also had IT spend a lot of time cleansing the data from stock outs, missed sales, new stores, closed stores, weather effects, holiday shifts, 53rd week, etc…
Basics. VRS was originally built for grocery, but it will work just fine on consumer goods and regularly replenished apparel. For seasonal product and at large aggregate levels like a subclass, class, department, division, etc., VRS is fine. At the style, style-color, or SKU level, VRS will work for apparel basics like t-shirts, socks, and underwear. High fashion styles are much more problematic and require an additional forecasting component to initialize the forecast. This is sometimes called new product forecasting.
Errors are Normally Distributed. The assumption is that every point estimate will have a normal distribution centered on the period’s forecast. As sales forecasts get really small, say under 20 or so, this assumption falls apart because zero sales is a natural limit and the left side of the tail is missing. If you are trying to forecast an item that is a slow-seller, consider using a discrete probability distribution like Poisson. I have found that Poisson works great.
Calculating the Mean Errors
Let’s name our average annual sales value a deseasonalized demand, or DD. I’m going to borrow the name from INFOREM which is one of the original replenishment systems built for retail. Let’s also name our indices from our sales profile as a base index, or BI. Our forecast for any period is the DD times our base index.
FCST = DD X BI
FCST = Forecast Sales
Current Errors. Now that we have a forecast, we can calculate the current absolute error and the current signed error. Current just means the period we are focusing on. So if we’re calculating the error for week 41, for instance, then that week would be the current week. Note, these are only the error calculations for the current period. We’ll calculate the mean error next.
CAE = |ACT – FCST|
CSE = ACT – FCST
ACT = Actual Sales
CAE = Current Absolute Error
CSE = Current Signed Error
Mean Errors. The mean error is calculating using an exponential smoothing formula we learned at the beginning of this post. Both the absolute and also the signed errors will have their own calculation.
MAE = [Last MAE] X (1 – α) + CAE X α
MSE = [Last MSE] X (1 – α) + CSE X α
α = alpha constant, between 0 and 1 (0.15 is a good default)
Last MAE = Last Period’s Mean Absolute Error
Last MSE = Last Period’s Mean Signed Error
Trend: VRS’ Magic
So how much of our forecast error is trend? The ratio of MSE / MAE gives us that answer.
Trend = MSE / MAE
This is where the big assumptions come into the process. The MSE relies very heavily on the accuracy of the sales profile and we assume the forecasting errors will be distributed normally around the center of those forecasts. If there was no trend, then the MSE would be close to zero which means our errors are distributed normally, sometimes high, sometimes low and they cancel each other out.
The MAE measures the magnitude of our forecast errors. It’s not a true standard deviation but it can be interpreted similarly. The MAE is used later when we decide if our forecast error is an aberration. For example if our forecast error is more than 1.5 MAE then we throw that period out and do not calculate any trend effects.
Time to put it all together. Gamma is just another name for our trend calculation. Gamma will replace our alpha constant in our exponential smoothing equation to determine our new DD.
γ = Trend = MSE / MAE
New DD = [Last DD] X (1 – γ) + [FCST / BI] X γ
Remember, the DD is the annual sales average for the year. This equation will now adjust the DD up or down based on trend and ignore forecasting error. This process can be evaluated once per week and the MSE and MAE will constantly be updated.
I’ve simplified this equation a bit. Gamma is normally governed meaning it can’t go too low or too high. Gamma is preceded by what’s called a tracking signal that uses the equation we defined above. The tracking signal is then adjusted to form the Gamma. Forecasting systems will normally add a dampener, as much as 50%. In addition, the MAE can’t get too low either because if the forecasting errors suddenly become a little larger then they will all appear to be aberrations. Generally, I’ve seen the MAE have a floor of 20% of the current period’s forecast. It really depends on the product that is being forecasted.
Let’s forecast February 2016 for our retailer. We’ll forecast all four weeks and evaluate the results. Click to enlarge.
- BOP – Beginning Period
- DD – Deseasonalized Demand
- FCST – Forecast Sales
- ACT – Actual Sales
- CSE/CAE – Current Signed Error / Current Absolute Error
- MSE/MAE – Mean Signed Error / Mean Absolute Error
- EOP – Ending Period
This is very interesting. Notice how the DD continues to drop each week suggesting there is a trend downwards. This is shown by our signed errors being all in the same direction. The MAE is getting smaller but the gamma continues to grow chasing the trend faster and faster.
Normally, when a forecasting system has four or five errors in the same direction, it will reset the DD because VRS is not able to chase the trend fast enough. There’s an exception register built in to every forecasting solution that contains all the information needed to make good decisions about what is happening and react accordingly.
Well, it looks like VRS wins the forecasting for February. Click the image to enlarge. Now that we have decent forecasts we can apply them to just about any analytic engine such as replenishment. We’ll cover that in another post. Happy forecasting!