### A New Way to Monitor Accuracy of Intermittent Demand Forecasts: The Forecast Profile Performance (FPP) Index

Intermittency in demand forecasting is a well-known and challenging problem for sales, **inventory** and operations planners, especially in today’s **global supply chain environment**. *Intermittent demand* for a product or service appears sporadically with lots of zero values, and **outliers** in the demand data. As a result, accuracy of forecasts suffers, and how to measure and monitor performance has become more critical for business planners and managers to understand. The **conventional MAPE** (Mean Absolute Percentage Error) measure is inadequate and inappropriate to use with intermittency because of **divisions by zero** in the formula lead to undefined quantities.

In a previous article, I introduced a **new approach**, which can be more useful and practical than a MAPE in dealing with **inventory lead-times** , **financial budget** planning, and sales & operations (S&OP) forecasting. What these applications have in common are the *multi-step ahead* forecasts, whose **accuracy** needs to be assessed on a periodic basis. I will call this new approach the *Forecast Profile Performance (FPP) *process.

### A Smarter Way to Deal with Intermittency in Demand Forecasting

For the past four to five decades, the conventional approach in dealing with intermittency has been based on the assumption that interdemand *intervals* and the nonzero demand *events* are **independent**. This is the logic behind the Croston method and its various modifications. But, when you start looking at real data in an application, you discover that this may not be valid.

This new approach examines the data in two stages. First, we observe that each demand *event* is preceded by an interdemand interval or *duration*. Thus, given a duration, we can assume that a demand event follows. In a regular demand history, each demand event is preceded by an interval of **zero** duration. Under this assumption, non-zero **I**ntermittent **D**emand events **ID*** are dependent on ‘**L**ag**t**ime’ **Z**ero** **Interval durations **LZI**. The **LZI** distribution for our spreadsheet example is shown in the left frame. In the right frame, we show the conditional distribution for the ID* given the three **LZI** durations. They are not the same hence it would not be advisable to assume that they are.

When forecasting ID* for an inventory safety stock setting, for example, it will be necessary to consider each of the conditional distributions **separately**. In the spreadsheet above, I have created three forecasts for the 2017 holdout sample. Forecast F1 is a level naïve forecast with 304 units per month. For ease of comparisons, I have assumed that annual totals are the same as the holdout sample. In practice, this would not necessarily be true. The same is assumed for Forecasts F2 and F3. so that comparisons of **forecast profiles** are the primary focus. In practice, the effect of a ‘bias correction’, if multi-step forecast totals differ, should also be considered, However, consideration of the independence assumption is a fundamental difference between a Croston method and this one.

**Step 1**. Creating Duration Forecasts

When creating forecasts, we first need to forecast the *durations*. This should be done by sampling the empirical or assumed LTI distribution. In our spreadsheet, **LZI**_0 intervals occur more frequently than the other two and the **LZI**_1 and **LZI**_2 intervals occur with about the same frequency. Then, based on the **LZI** in the forecast, a forecast of ID* should be made from the data the **LZI** it depends on. An example of this process is given in an **earlier post** and on the Delphus **website**.

After a forecasting cycle, is completed and the actuals are known, both the **LZI** distribution and the conditional ID* distribution need to be updated before the next forecasting cycle, so the distributions can be kept current.

### Step 2. Creating the Alphabet Distributions

Depending on your choice of a Structured Inference Base (**SIB**) model for intermittent demand **ID*** (or the natural log transformed intermittent demand **Ln ID*), ***alphabet profiles* need to be coded for the actuals and the forecasts from the (conditional) demand event distributions for each of the durations **LZI**_0 in column C, **LZI**_1 in column F, and **LZI**_2 in column I. Note that the sum of the weights in an alphabet profile add up to one.

For the data spreadsheet we need also the add the alphabet weights associate with the duration distribution. This is done by multiplying the conditional alphabet weights by the weights in the (marginal) duration distribution **LZI**_0 (= 0.4545), **LZI**_1 (= 0.2727), and **LZI**_2 (= 0.2727). These coded alphabet weights can be found in columns D, G, and J, respectively. Note that the sum of the three weights in the combined alphabet profiles add up to 1.

### Step 3. Measuring the Performance of Intermittent Demand Profiles

In a previous article on LinkedIn as well as my **website **blogs, I introduced a measure of performance for intermittent demand forecasting that does not have the undefined terms problem arising from intermittency. It is based on the ** Kullback-Leibler divergence** or dissimilarity measure from Information Theory applications.

where **ai** (i = 1,2, …, *m*) are the components of the *Actuals Alphabet Profile* (**AAP**) and ** fi** (i = 1,2, …, m) are the components of the

*Forecast Alphabet Profile*(

**FAP**), shown in the spreadsheet below. In the forecast, the lead-time, budget cycle, or demand plan is the horizon

*m*.

### Step 4. Creating the Forecast Profile Performance (**FPP**) Index

The alphabet profile for the actuals (AAP) is shown in the top line of the spreadsheet above. The alphabet profiles for the forecasts (FAP) are shown in the second, fourth, and sixth lines in the spreadsheet. The calculations for the D(a, f) divergence measure are shown in the third, fifth, and seventh lines with the D(a, f) results shown in bold. They are 22%, 40%, and 16%. respectively, for forecasts F1, F2, and F3. It can be shown that D(a, f) is non-negative and equal to zero, if and only if, the FAP = AAP, for every element in the alphabet profile. Hence, F3 is the most accurate profile followed by F1 and F2. This should not be interpreted to mean that F3 has the best model. However, it does suggest that the F3 model has the best multi-step ahead forecast pattern of the actuals. One should monitor D(a, f) for multiple forecasting cycles, as trend-seasonal patterns can change for monthly data, in this instance.

## FPP (f) index = 100 + D(a, f)

We can define a *Levenbach Forecast Profile Performance *** index** by adding 100 to D(a, f), so that 100 is the base for the most accurate possible profile.

### Step 5. Monitoring a FPP index.

The FPP index needs to be charted for every forecasting cycle, much like a quality control chart in manufacturing. One way of creating bounds for the index is to depict three horizontal bars (green, amber and red), where the lowest bar, starting at 100, is the limit for an acceptable accurate profile, the middle bar for profiles to be reviewed, and the red bar for unacceptable performance. The criteria for the bounds should all be based on downstream factors developed from your particular environment and application.

I invite you to share your thoughts and practical experiences with intermittent data and smarter demand forecasting in the supply chain. Feel free to send me the details of your findings, including the underlying data used without identifying descriptions, so I can continue to test and validate the process for intermittent data.