При разработке первой версии проекта была допущена ошибка в архитектуре: при каждой итерации расчетов происходили запросы в БД, поэтому симулятор получился очень медленным. Было принято решение отказаться от данной концепции и задействовать во второй версии только структуры языка Python и возможности библиотеки Pandas. Это привело к ускорению примерно в 20 раз, при этом базовая логика осталась неизменной. Теперь можно строить модели для некольких тысяч клиентов. Первая версия сохранена только для ознакомительных целей и может содержать ошибки и неточности в коде!
Приступаем к разработке прототипа модели. Для примера возьмем рынок сыра. Представим, что у нас нет в распоряжении истории продаж за предыдущие периоды, поэтому мы будем опираться только на данные, которые можно найти на просторах Интернета. Их статистическая точность в данном случае не важна, так как по факту они лишь ориентиры при настройке модели. Исходя из среднестатистической нормы потребления сыра в нашей стране рассчитываем общий объем продаж, среднесуточное потребление на одного человека, также сформируем структуру реализации по видам продукта. Количество населения не равно количеству покупателей. Зная пропорции распределения одиночек и разных видов семей, можно посчитать приблизительное количество потенциальных покупателей в городе. Со структурой ритейлеров, которые занимаются продажей сыров, дело обстоит несколько сложнее. Фактический пересчет всех магазинов в городе – дело весьма трудоемкое, но можно руководствоваться процентами, которые занимают федеральные торговые сети во всей стране. Если тот или иной ритейлер отсутствует в конкретном регионе, его долю можно отдать местным магазинам.
Данная модель является лишь демонстрацией, поэтому все цены получены путем умножения базовых значений (декабрь 2019 года) на ежедневные коэффициенты. Было подготовлено три сценария цен: заморозка значений всеми игроками рынка, динамическое изменение, одновременное повышение. Первый и второй варианты очень маловероятны в реальной жизни, тем интереснее использовать их при моделировании.
Поочередно выбираем каждый из сценариев для формирования сводного прайс-листа на год и выгружаем цены в отдельные файлы csv. Полученные данные необходимо перенести в проект.
В модели настраиваем стартовые параметры, которые будут влиять на состав рандомных групп, структуру торговых сетей города, временной диапазон расчета. Симуляция рынка запускается на группах в 3000 человек. Промежуток моделирования - 1 месяц. В основе принятия решения лежат следующие факторы: данные о пользователе из системы, баланс продукта, предыдущая цена, по которой он приобретал товар, а также текущие цены на рынке, исходя из выбранного сценария.
После консолидации датасетов с данными о продажах строим интерактивный управленческий отчет для посика инсайтов в ценовой политике на предстоящий год.
- Возможность запуска моделирования даже на холодном старте, то есть не нужны исторические данные
- Возможность видеть в динамике как свою позицию на рынке, так и конкурирующих фирм
- Возможность видеть, как изменение в ценах отражается на объемах продаж (в кг и руб.)
- Сложность (или невозможность) применения при большой номенклатуре
- Невозможность применения для товаров ситуационного спроса
- Необходимость переработки модели для товаров сезонного спроса
- Необходимость относительно точного угадывания ценовой политики конкурентов
- Ресурсоемкость выполнения расчетов для большой группы клиентов