R50 f601d4a436d0674a031f472983fa7cc4
Работаю с данными

Прогноз цен (Задание на интенсиве)

Добавлено 10 июн 2023 в 12:23
Занял призовое место

Техническое задание по кейсу «Прогнозирование рыночных цен на арматуру»

Предыстория Одна из основных статей расходов девелоперов – это закупка материалов. При этом, среди общих затрат на материалы около 10% приходится на арматуру. Упрощенно, процесс закупки материалов выглядит так: Категорийный менеджер Иван, придя в пятницу на работу, устраивает тендер на закупку арматуры объема Х (для простоты давайте считать, что потребность ГК Самолет в арматуре постоянна, нам нужно Х тонн в неделю). Например, он может организовать тендер на объем 5Х, или на объем 2Х. Он знает какая цена на арматуру сегодня, но не знает, какая она будет через неделю. В принятии решение о размере проводимого тендера может помочь прогнозная модель. Например, если модель дает прогноз, что через неделю рыночная цена на арматуру снизится – то закупаться стоит на 1 неделю, и наоборот, если модель прогнозирует тренд на рост цены – то следует сделать более масштабную закупку. С одной стороны, прогнозирование цены – это стандартная модель временных рядов, но бизнесу же важен не просто временной ряд, а качество предлагаемых «бизнес»-решений: рекомендация необходимого объема, поэтому результатом работы модели должно быть целое число N – на сколько недель вперед проводить закупку (1 <=N <=10) Постановка задачи Цель: Помочь категорийному менеджеру сэкономить В приложении есть понедельная история рыночных цен на арматуру в промежутке 2019-2022 гг. Необходимо разработать модель, которая по истории [1,T] делает рекомендацию по объему тендера для недели T. Рекомендация на N недель фиксирует цену на N недель, следующий тендер будет проведен на неделе T+N. Считаем, что тендеры проводятся по пятницам, оперировать можно историческими данными до четверга включительно. Целевая метрика: средняя цена закупки арматуры при проведении тендеров на промежутке 1/07/22 – 23/12/22 Методология расчета (псевдокод):

#pp_array = []

#ll_array = []

#for start_date in [все пятницы с 1/07 – 23/12]:

#for end_date in [start_date + 2 недели, 26/12]:

#price_period = Средняя Цена закупки за период [start_date, end_date)

#len_period = end_date – start_date – 1

#pp_array.append(price_period)

#ll_array.append(len_period)

#final_avg_price = sum(np.array(pp_array) * np.array(ll_array)) / sum(np.array(ll_array)) – взвешенное среднее

Стоит аккуратно отнестись к вычислению средней закупки за период, имейте в виду что в остаток периода может поместиться не весь N. На забудьте аккуратно настроить схему валидации, подумайте над отбором признаков, точек мало – данных много.

0137658d42 7a17b8d4ed E9f5a29efc 5265d3ac20