Математически модел за прогнозиране на продажбите по артикули

Задачата, която разглеждам е, как да предвидим количеството от всеки артикул, което ще се продаде в обозримото бъдеще. Ако имаме отговор на този въпрос, спокойно ще може да планираме ресурсите си и да планираме поръчките във времето за всеки артикул, и неговото количество.

Всъщност, става въпрос за математически проблем, познат като „time series forecast”. Има редица методи, които се свеждат главно до exponential smoothing и ARIMA.

Няма да се занимаваме с математическия проблем за предвиждането на времеви серии, а с практическото им приложение в смисъла на поставената задача – как да предвидим максимално точно какво количество, в кой период и от коя локация ще продадем.

За съжаление, на мен не ми е известно да има точно математическо решение на този проблем, имайки предвид огромното количество фактори, които влияят и случайните събития. За това не очаквайте, че математическия метод е абсолютното решение. Напротив, ако разчитате само на него, резултатите може да са повече от лоши.

Използването на компютърен модел за предсказване на продажбите по артикули се използва в много голяма степен, за да се предвиди, кои артикули следва да се поддържат на склад и има много голяма вероятност да се продадат за определен период. Простичко казано, смисълът на практическото използване на тези модели, е да разделим „сеното от плявата“ – да поръчваме само това, което ще продадем с голяма степен на вероятност. Никога няма да успеем да определим точно количеството, което ще продадем в бъдещето чрез математика, но може с голяма степен на достоверност да определим кое ще се продава. Така дори и да сбъркаме количеството, ако сме прави за това, че този артикул ще се продава в бъдещето, то при недостиг на количество ще поръчаме, а при излишък ще забавим последващите поръчки.

Ето и няколко прости предложения от моя страна за практическо приложение на този подход.

За останалата част от материала, ще считаме че имаме данни за всеки един артикул в склада и неговите продажби за последните 5 години или 60 месеца. Ще разглеждаме и най-често срещания в моята практика случай, когато се интересуваме от евентуалните продажби на месец. Ако искаме да имаме резултат на друга времева единица, като например седмица или ден, то трябва да приложим същия подход, но за времевата единица, която търсим.

1. Линейно прогнозиране.

Това е най-простият начин, но за сметка на това много лесно разбираем и контролируем. Препоръчвам на всеки, който започва да се занимава сега да стартира с този метод.

След като имаме продажбите за предходните 5 години, то може да изчислите продажбите за следващата година, използвайки функцията forecast.linear в excel

Можете да видите приложението и резултата, 115 сравнен с реалния резултат от 114 бр за 5 тата година.
Сега остава да получим и продажбите на месец. Това може да направим по най-елементарния начин. Ако търсим продажбите в 1-я месец на 6-та година, и вече сме изчислили очакваните продажби за 6-та година (ще ги означим като Y), то бихме могли пресметнем очакваните продажби по следния начин:

Очаквани продажби 1-ви месец, 6-та година = Y*(продажби 1-ви месец 1-ва година + продажби 1-ви месец 2-ра година + продажби 1-ви месец 3-та година + продажби 1-ви месец 4-та година + продажби 1-ви месец 5-та година)/общ брой продажби

Т.е. очакваните продажби за следващата година, умножени по относителното тегло на всички продажби през съответния месец за отминалите години, отнесено към общите продажби за всички години.

2. ETS forecasting (excel)

В Excel има вградена функция за прогнозиране на времеви серии forecast.ets. Тя използва „exponential smooting method ETS“, но математиката в случая не е важна, а ни интересува как да я използваме практически.
Практическото приложение на функцията е повече от лесно и не се нуждае от обяснение.

3. ARIMA (SARIMAX) – за напреднали, използващи R
Ако се използва R във forecast package, има разработени функции за настройка и използване на почти всички математически методи за прогнозиране на времеви серии от данни.
В някои от следващите статии ще се спра по-подробно на тези методи за напреднали, въпреки че всеки запознат с R, може сам да открие отговорите.
Предупреждение – използването на автоматични функции за настройка на модел, не дават добри резултати в много от случаите!
И така, ето и един примерен резултат за прогнозиране на продажбите на един артикул, както и сравнение на резултатите между математическите модели (линеен и ETS) и реалните продажби за 5-та година.

Както се вижда в случая, имаме една сравнително добра прогноза. Има съществени грешки месец по месец, но в рамките на годината сумарните количества се изравняват! Ключово важно е и доброто съвпадение между изчисленото и реално продадено количество в първите месеци, тъй-като това гледаме най-често. Със сигурност, неточността се увеличава напред във времето!
За по любопитните и по-математически настроените, да не пропусна да спомена и за леко подобрение (на теория) точността на горе описаните математически модели. При тях имаме данни за количеството продажби за предходните 60 месеца и на база на тях изчисляваме евентуалните продажби през следващите 12 месеца, примерно. Подобрението е, че вместо да изчисляваме за следващите 12 месеца, изчисляваме за следващия един месец. Полученото присъединяваме към вече известните ни количества (считаме, че вече го знаем) и изчисляваме за по-следващия месец на база на увеличената ни база данни с един месец повече. Така стъпка по стъпка за всеки следващ месец. Ето и сравнение:

В случая, резултатът е леко по-лош като сумарно количество продажби.
ВАЖНО.
Вече коментирах, но да акцентирам отново. Целта на математическия модел не е да се прогнозират продажбите като точно количество и да разчитаме на тази прогноза.
Използваме модела, за да видим тенденцията в продажбите, на броя клиенти и броя документи за продажба. Предлагам Ви да използвате и абсолютен филтър да разглеждате евентуални продажби, само и единствено ако за предходните 12 месеца имате поне две продажби на поне двама различни клиента!
Само след като един артикул е преминал всички Ваши критерии, за да потвърдите, че вероятността да се продава е висока, можете да обмислите поръчката на количеството, което сте прогнозирали.
Ако този артикул се продава, дори и да грешите количеството, то това няма да е фатално тъй като или ще поръчате допълнително, или ще отложите следващата поръчка!