Forecast netting (also called forecast consumption) is a calculation to reconcile forecasted demand and actual sales orders in a single, integrated demand.
The demand across the planning horizon will have 3 distinct regions. The horizons vary across industries and can also be vary by product (e.g. make-to-stock, make-to-order and configure-to-order products).
- Far out in the future, we have only forecasted demand to plan.
- In the short term, we have only sales orders to plan.
- There is period in the planning horizon where sales orders and forecast both exist. This where the forecast netting process plays an important role.Planning the “sales orders + gross forecast” would double-count some demand (since it ignores the fact that sales orders are already anticipated in the gross forecast).Instead we want to plan the “sales orders + the remaining part of the forecast not realized yet as sales orders”. The calculation of this “remaining forecast” is called forecast netting or forecasting consumption.
The end result after the forecast netting is a consistent demand signal that we can use to plan across the complete planning horizon.
Basic example of a round table
We can see from above picture that actual sales orders are consuming from the gross forecast and that results in the net forecast.
|Actual sales orders||130||100||80|
Example of a round table produced at factory for 2 different customers with a forecast calculated at ‘All customers’ level:
Current date is Jan, 15 2019
Total forecast for January 2019: 350
Actual orders for January 2019: 130
We want to be sure that the actual sales orders for January will be planned (this is quantity 130) but we also want to plan 350-130=220 of net forecast.
Similarly, net forecast for February 2019 is 350-100=250 and 350-80=270 for March 2019.
Below is a screenshot of the forecast report where net forecast details can be found:
Advanced example of a square table
Let’s consider now the example of a square table with following demand characteristics:
|Actual sales orders||300||500||280||0|
We can immediately see that the actual sales orders for February are beyond the gross forecast computed for that month (500 of sales orders vs 350 of gross forecast) so the net forecast for that month is 0.
FrePPLe allows the sales orders to consume from future or past buckets. This is controlled by 2 parameters:
The default value for these parameters is 0 but if we set them to 30 and regenerate the plan, the algorithm can consume forecast from previous or next time bucket.
Below is a screenshot of the forecast report:
Let’s take a step by step analysis of the calculation:
- First, the netting process will net the sales orders of January 2019 and below is the result after that netting:
Square table Jan Feb Mar Apr Actual sales orders 300 Gross Forecast 350 350 350 350 Net Forecast 50 350 350 350
- Then the netting process will net the sales from February 2019.Because there is more sales orders than gross forecast for that month, frePPLe will consume first the 350 from February 2019, then (as parameters forecast.Net_NetEarly and forecast.Net_NetLate allow it) the 50 from January 2019 and finally 100 from March 2019, ending in this situation:
Square table Jan Feb Mar Apr Actual sales orders 300 500 Gross Forecast 350 350 350 350 Net Forecast 0 0 250 350
- Finally the netting process will net the sales from March 2019. FrePPLe will consume the remaining 250 from March 2019 and 30 from following month ending in the same state as above screenshot of the forecast report:
Square table Jan Feb Mar Apr Actual sales orders 300 500 280 0 Gross Forecast 350 350 350 350 Net Forecast 0 0 0 320