In my current work sales forecasting and budgeting is being done rather classical way:

Take the sales from last year for comparable date and add or decrease X% on top to reflect recent trend.

This works "ok", and hits accuracy of -20% to +20% as the business has quite clear yearly seasonality. However, it is time consuming and boring task to do for multiple markets and check if there are any shifts in promotion days versus last year etc.

For example, now if a promotion starts a few days earlier than last year it might be that the sales for these days are 5-20 x higher than without promotion in the comparable date last year.

Now there must be a more sophisticated way to do the forecasting that saves my time and leads to a better accuracy as well. I am familiar with Python, but a newbie in timeseries forecasting.

In many discussions suggested approaches are ARIMA, SARIMAX etc. I tried statsforecast AutoARIMA with seasonality of 364 days (52 weeks * 7 days) but it is very slow so I assume it is rather heavy calculation with that long seasonality. For 2000 rows I let it run for 30mins and then decided to interrupt.

Then, instead I tried statsforecast MSTL and AutoARIMA for trend with exogenous variables, which captures the overall seasonality quite well but fails capturing the promotion shifts (hotcoded exogenous promotion type) miserably and relies too heavily on the number from last year.

So I should find a model that captures well the yearly seasonality (spiky Q4) but takes into consideration an uplift for type of promotion as well as the recent trend. I am having daily data for approximately 3 full years and I should predict the sales 4 to 6 weeks forward for 8 different markets.

Would there be any tips or suggestions for suitable model that could work well for my case?


1 Answer 1


In my view, if you are a time-series rooky, you should start from the simplest models. I would recommend an Auto-regressive (AR) model to start from. I found such an article that appears suitable for you because contains a simple example, a snippet of the theory and a code:


However, it appears that the issue of promotion is substantial in your problem. When you feel more comfortable with modelling (not just AR then), you should consider taking this promotion into account in your model as a variable. I would start by taking it as a binary variable (whether there was a promotion in a month). It might allow you to not only explain peaks in your historical data but also predict well if you have any information about planned promotions.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.