BASF is currently the world largest chemical company. In 2017, BASF posted sales of
€64.5 billion and income from operations before special items of approximately €8.3 billion. They have broad portfolio ranges from chemicals, plastics, performance products and crop protection products to oil and gas.
Every day, the production division in BASF need to deal with the incoming new demands,
and they need to ensure that it’s always able to meet those demands in time. This situation becomes very complicated since they have thousands of products to offer. Furthermore, since they have limited production capacity so that they need to anticipate future demand in advance to optimize their capacity. Forecasting material demand is a very big challenge for BASF.
In this project, our forecasting goal is to create a monthly forecast of the demand for each
material for two months ahead. The forecast should be able to be updated when they have new data. As the new data comes in, we use a roll-forward strategy to update the forecast for every month. In total, we forecast demand data of 826 materials.
Our forecasting approach is to classify each time series of the material into groups and
analyze them to find out optimal forecasting methods for each group. After analyzing and comparing accuracy performance, we divided 826 series into 5 groups: Naive, zero-forecast, Arima, ETS and Ensemble. The predicted performance of each group is benchmarked with the Naive method. The results show that the accuracy performance of each group is significantly improved compared to the Naive Method. In addition, we design an application that can be used by production executive to quickly see the forecast result of each material.
Due to the volatility of the time series of each material, creating a very accurate forecast
remains a challenge for the future. We suggest several considerations such as to find a better way to classify the materials into groups, explore more advanced forecast techniques, include price to estimate actual forecast impact, and preprocessing negative value stored in the dataset in a more intelligent way.