Как оптимизировать доходы, используя динамическое ценообразование?

Как максимизировать доходы с помощью динамического ценообразования?

Введение

Цены на поездки Uber/Ola в пиковые часы выше, чем обычные тарифы. На IRCTC цены на поездки Радждхани увеличиваются с увеличением ставок бронирования, а на Amazon цены на точно такой же продукт меняются несколько раз. Кто решает, когда менять эти цены и в какой степени? Кто определяет правильную цену в правильное время? Ответы на эти вопросы относятся к области динамического ценообразования. Эта статья предоставляет начинающим ресурсы и теоретическое понимание для создания базового алгоритма динамического ценообразования.

Учебные цели

  • Понять основы ценообразования и различные методы ценообразования
  • Изучить динамическое ценообразование, преимущества-недостатки, методы, примеры использования и т. д.
  • Основы управления доходами.
  • Реализовать простой алгоритм динамического ценообразования с использованием Python для максимизации дохода.

Эта статья была опубликована в рамках Data Science Blogathon.

Что такое “цена”?

В августе 2023 года цена на лук составляла 120 рупий за килограмм. Что привело к этому? Недостаток предложения из-за внешних экологических факторов и стабильный спрос. На цену влияют рынок, покупатель, продавец, спрос и предложение. То же самое относится к большинству товаров и услуг, которые мы покупаем и продаем сегодня: билеты в кино, автобусные билеты, электронная коммерция, топливо и т. д.

В теории цены спрос и предложение определяют цены, по которым товары и услуги будут торговаться. Когда платежи потребителей за товары и услуги соответствуют предельной стоимости производства, мы достигаем оптимальной рыночной цены, также называемой точкой равновесия между спросом и предложением. Установка правильной цены в нужное время является основополагающей для роста бизнеса. Менеджеры по ценообразованию фокусируются на приближении к “правильной цене”, что может быть достигнуто с помощью данных и аналитики.

Факторы, влияющие на ценообразование

  • Организационные факторы: Наличие товара на складе, ограничения бюджета.
  • Маркетинговый микс: Стадия жизненного цикла продукта, Продукт, Цена, Место и Продвижение.
  • Себестоимость продукта: Стоимость производства и сырья.
  • Спрос на продукт: Спрос на продукт или услугу.
  • Конкуренция на рынке: Конкурентное ценообразование в значительной степени определяет внутреннее ценообразование.

Что такое динамическое ценообразование?

Динамическое ценообразование использует последние тренды, поведение клиентов в реальном времени, спрос и предложение, а также ценообразование конкурентов для оценки цены продаваемых товаров. Это позволяет продавать товары по разным ценовым точкам, что обеспечивает удовлетворение клиентов и процветание бизнеса.

Динамическое ценообразование используется, когда спрос эластичен. Динамическое ценообразование невозможно применять, когда спрос неэластичен или полностью неэластичен. Когда потребители сильно реагируют на изменения цены, имеется высокая эластичность цены спроса, и это свойство используется через DP.

Например, в Бангалоре, когда одна только авторикша доступна в определенное время и определенном месте в дождливый день, клиент, готовый заплатить выше (в два или три раза больше обычной ставки – эластичная цена), получает ее, в то время как другой клиент, который не готов отступить, должен сесть на автобус BMTC, где цены остаются неизменными (неэластичные).

Какие цели динамической ценообразования?

  • Увеличение прибыли, выручки, гибкости, доли рынка и удовлетворенности клиентов.
  • Сокращение старого товарного запаса, что приводит к лучшему использованию складских помещений и ресурсов.
  • Балансирование предложения и спроса.

Таким образом, успех динамической ценообразования заключается в максимизации выручки/прибыли/объема продаж/доли рынка/удовлетворенности клиентов. Пример – Если в 2021 году без динамического ценообразования было продано 1 миллион единиц, а органическая траектория для 2022 года составляет 1,5 миллиона единиц. Внедрение динамического ценообразования должно привести к увеличению объема продаж до 2 миллионов единиц без потери клиентского NPS или других показателей ценообразования.

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

Для AB-тестирования динамического ценообразования могут рассматриваться следующие показатели успеха/результаты:

  • Средний чек (AOV)
  • Конверсионная ставка (CR)
  • Выручка на посетителя (RPV)
  • Процент валовой прибыли (GMP)

Факторы, влияющие на динамическое ценообразование

  • Предложение: Когда предложение ниже, цены выше.
  • Спрос: Когда спрос выше, цены выше.
  • Уровень товарного запаса: Цены снижаются, если товар устарел или вышел из моды. Пример – распродажа.
  • Предпочтения клиентов: Ола мини, прайм, прайм плюс и т. д. имеют различные ценовые категории.
  • Сезонность и праздники: Цены на авиабилеты во время праздников стремительно возрастают, и бизнесы получают прибыль из-за высокого спроса.
  • Местоположение: Туристические места имеют более высокие цены.
  • Время суток: В полночь цены выше, чем в полдень.
  • Ценообразование конкурентов

Типы динамического ценообразования

  • Сегментированное ценообразование: Студенческая скидка на Amazon Prime, скидка для пожилых людей в поездах.
  • Ценообразование на основе времени: Отели и авиарейсы в Индии дороже в октябре/ноябре (праздничный сезон) по сравнению с августом/сентябрём.
  • Пиковое ценообразование: Временный повышенный тариф на Uber/Ola.
  • Ценообразование на основе конкурентов.
  • Эластичность цены: Чем более эластичен продукт, тем более подходит для динамического ценообразования. Все продукты FMCG ценообразуются таким образом в магазинах типа Dmart/Reliance и т. д.

Управление выручкой/доходностью

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

  • Основная задача управления выручкой – продавать правильный продукт правильному клиенту в правильное время по правильной цене и в соответствующей упаковке.
  • Сегментация, прогнозирование, оптимизация и ценообразование – инструменты, используемые в управлении выручкой.
  • Оно лучше всего работает, когда продукты/услуги имеют эластичный ценовой спрос.

Правовые и этические аспекты AI и ML обсуждаются меньше в Индии, поэтому давайте обсудим их.

  • Динамическое ценообразование вводит клиента в заблуждение, заставляя его выбирать ценообразование, которое может не соответствовать его лучшим интересам. Кроме того, это может быть дискриминацией, поэтому вопрос – Это законно?
  • В Индии, раздел 3 Закона о конкуренции 2002 года запрещает установление цен.
  • Раздел Закона запрещает любые соглашения между предприятиями или “практику, осуществляемую или принимаемую, любым объединением предприятий или объединением лиц, включая картели, занятых в торговле товарами или предоставлении услуг”, которые определяют рыночную цену.
  • Если две стороны сговорятся и установят очень похожие или практически идентичные цены, тогда это незаконно. Но если одна сторона делает это без ведома другой, то ни одна из сторон не несет ответственности.
  • В правильном направлении – это иметь Важного Закона о защите персональных данных (аналогично тем, что в ЕС), который защищает граждан Индии от хищнических корпоративных практик.

Постановка проблемы

FlyAirportByAir – это такси-вертолетная служба в Бангалоре, предоставляющая услуги такси до аэропорта Бангалора. Поскольку спрос относительно гибкий и меняется в зависимости от погоды, выходных и праздников, они хотят внедрить динамическое ценообразование для улучшения выручки. Напишите оптимальную функцию ценообразования, которая будет максимизировать выручку при следующих условиях:

  • Предварительное бронирование начинается за 100 дней до поездки
  • Общее количество мест в день составляет 100
  • Спрос варьируется от 100 до 200 в день. Сгенерируйте спрос с помощью простого кода Python ->np.random.randint(100, 200)
  • Для упрощения ценообразования -> Цена = Спрос – Проданные билеты

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

## Глобальные переменныеDAYS = 100SEATS = 100DEMAND_MIN = 100DEMAND_MAX = 200

Прогнозирование спроса – это первый шаг в решении динамического ценообразования. Спрос меняется в зависимости от внутренних и внешних факторов. Прогнозирование временных рядов или методов регрессии может быть использовано для предсказания будущего спроса.

demand_hist = [np.random.randint(DEMAND_MIN, DEMAND_MAX) for i in range(10000)]plt.hist(demand_hist, bins = 100)print("mean", np.mean(demand_hist) )print("STD", np.std(demand_hist) 

Спрос предсказывается с использованием случайной функции; среднее значение составляет 150 мест в день, а СКО равно 28.9.

Пример

Рассмотрим следующий пример: D0 – дата поездки. Поскольку люди утверждают свои планы поездки ближе к дате поездки, спрос обычно превышает начальные дни (D8). Даже если рыночный спрос на D0 составляет 8, забронированы только 3 места; мои конкуренты занимают остальное.

Учитывая, что спрос линейный, представим его на Python следующим образом:

def linear_demand(days_left, ticket_left, demand_level):  tickets_sold_per_day = int(ticket_left/days_left)    price = demand_level - tickets_sold_per_day   ## ticket_left/days_left nearly is 1.   return max(0,price)#import csv

Функция для расчета выручки:

def cumu_rev(days_left,             ticket_left,             pricing_function,             rev_to_date = 0,             demand_min = DEMAND_MIN,             demand_max = DEMAND_MAX):  if days_left > 0 and ticket_left >0 :    demand = np.random.randint(demand_min, demand_max+1)    p = pricing_function(days_left, ticket_left,demand )    q = demand - p   # demand is linear Q is tickets sold    q = max(0,q)    q = min(ticket_left,q)  ## cannot sell more than tickets available    return q*p, p

Данная простая функция позволяет рассчитать цену и выручку за один день до путешествия, при этом общее количество билетов составляет 3 (поскольку спрос определяется случайным образом, выручка и цена могут варьироваться, можно определить random.seed(10), чтобы получить постоянные ответы все время)

  выручка, p = cumu_rev (1, 3, linear_demand) print ("Общая выручка -", выручка) print ("Цена за место -", р)  

Учитывая эту простую функцию, давайте рассчитаем цену и выручку для – за один день до начала путешествия и общее количество оставшихся билетов составляет 10. Цена за билет должна быть выше, так как спрос больше (от 3 до 10).

  выручка, p = cumu_rev (1, 10,linear_demand) print ("Общая выручка -", выручка) print ("Цена за место -", р) #import csv  

С простой линейной функцией ценообразования ясно, что с ростом спроса также растет цена. Давайте симулируем это и попытаемся оптимизировать функцию ценообразования.

Стимуляции с использованием функций ценообразования

Давайте проведем стресс-тестирование этой простой функции для 10 000 симуляций бронирования мест с использованием функций ценообразования 1. linear_demand, 2. linear_adj и 3. linear_opti_variable и выберем лучшую ценообразующую функцию, давая наивысший доход, который является целью этого упражнения

1. linear_demand

  • Спрос предсказывается случайным образом.
  • Цена – это разница между спросом и проданными билетами.
  • Следовательно, если спрос выше, цена также будет выше.
  def linear_demand (days_left, ticket_left, demand_level): tickets_sold_per_day = int (ticket_left / days_left) price = demand_level - tickets_sold_per_day ## ticket_left / days_left почти равно 1 return max (0, price ) #import csv  

2. linear_adj

  • Спрос предсказывается случайным образом.
  • Цена линейна, но ступенчатая. Введен индекс опти , чтобы оптимизировать предыдущую функцию linear_demand в кусочную функцию. Когда спрос выше, бронируется больше билетов, что, в свою очередь, увеличивает выручку.
  • OPTI – фиксированное значение, основанное на спросе.
  def linear_adj (days_left, ticket_left, demand_level): """ Допустим, мы ожидаем много трафика / просмотров и представлений. Если спрос высок, мы выставляем выше по разным тарифам """ if demand_level & gt; 180: opti = 3 price = demand_level - int ((ticket_left / days_left) + (opti * (demand_level / 180))) elif demand_level & gt; 150: opti = 2 price = demand_level - int ((ticket_left / days_left) + (opti * (demand_level / 180))) elif demand_level & gt; 100: opti = 1 price = demand_level - int ((ticket_left / days_left) + (opti * (demand_level / 180))) elif demand_level & gt; 0: opti = 0 price = demand_level - int ((ticket_left / days_left) + (opti * (demand_level / 180))) return max (0, price) #import csv  

3. linear_opti_variable

  • Подобно 2, используется индекс OPTI, но этот индекс не является постоянным, и подобно Kmeans выбирается оптимальное значение OPTI на основе кривой локтя.
  def linear_opti_variable (days_left, ticket_left, demand_level, opti = 1): price = demand_level - int ((ticket_left / days_left) + (opti * (demand_level / 150))) # price = demand_level - int (ticket_left / days_left) ## if opti = 0 then the second term becomes 0 ## По мере увеличения опти увеличивается второй член. ## 150, потому что в среднем спрос составляет 150, (100 + 150) / 2 ## Если спрос выше 150, то цена уменьшится ## Если спрос ниже 150, то цена увеличится. return max (0, price)  

Функция рекурсивного дохода для расчета накопленного дохода для всех 10 000 симуляций:

def cumu_rev(days_left,             ticket_left,             pricing_function,             rev_to_date = 0,             demand_min = DEMAND_MIN,             demand_max = DEMAND_MAX):  if days_left > 0 and ticket_left >0 :    #random.seed(10)    demand = np.random.randint(demand_min, demand_max+1)    p = pricing_function(days_left, ticket_left,demand )    q = demand - p   # demand is linear Q is tickets sold    q = max(0,q)    q = min(ticket_left,q)  ## не может продавать больше доступных билетов    return cumu_rev(days_left = days_left-1,                    ticket_left =ticket_left-q,                    pricing_function = pricing_function,                    rev_to_date = rev_to_date+p*q)  else:    return rev_to_date

1. Результаты, используя линейную функцию спроса:

simulation = [cumu_rev(DAYS, SEATS,linear_demand ) for i in range(10000)]plt.hist(simulation, bins = 100)print("среднее", np.mean(simulation) )print("STD", np.std(simulation) )plt.title("Доход от продажи 10 000 билетов")

Средний доход на основе линейной функции спроса составляет 14 908 руб. Это видно на гистограмме.

2. Результаты, используя линейную функцию спроса с корректировкой:

simulation = [cumu_rev(DAYS, SEATS,linear_adj ) for i in range(10000)]plt.hist(simulation, bins = 100)print("среднее", np.mean(simulation) )print("STD", np.std(simulation) )plt.title("Доход от продажи 10 000 билетов")

Средний доход на основе линейной функции спроса с корректировкой составляет 16 146 руб. Это видно на гистограмме.

3. Результаты, используя переменную линейную оптимизированную функцию:

Первый шаг здесь – выбрать значение OTPI, которое обеспечивает наибольший доход:

opti_mean = []for j in range(20):  simulation = [cumu_rev(DAYS, SEATS,partial(linear_opti_variable, opti= j) ) for i in range(10000)]  opti_mean.append(np.mean(simulation))  plt.plot(opti_mean)  plt.title("Оптимальное значение для максимизации дохода")

def argmax(lst):  return lst.index(max(lst))print("Лучшее значение OPTI -" ,list(range(20))[argmax(opti_mean)])>> Результат >> Лучшее значение OPTI - 1

Лучшее значение OPTI равно 1 на основе кривой локтя. Теперь давайте найдем доход для OTPI = 1.

simulation = [cumu_rev(DAYS, SEATS,partial(linear_opti_variable, opti = list(range(20))[argmax(opti_mean)]) ) for i in range(10000)]plt.hist(simulation, bins = 100)print("среднее", np.mean(simulation) )print("STD", np.std(simulation) )

Средний доход на основе линейной функции спроса с корректировкой составляет 15 838 руб. Это видно на гистограмме.

Оценка функций ценообразования

На основе максимизации дохода линейная функция спроса с корректировкой является лучшей функцией ценообразования. FlyAirportByAir может протестировать эту функцию и на основе АВ-тестирования оценить ее преимущества и недостатки. Извлекая из этого уроки, можно улучшить производительность со временем.

Заключение

Динамическая ценообразование успешно используется в таких отраслях, как авиакомпании, железные дороги, туризм, продажа билетов и т. д. Правильно реализованное динамическое ценообразование предоставляет предприятиям гибкость и потенциальный рычаг роста. Правильная настройка и компоненты динамического ценообразования обеспечивают более высокую удовлетворенность клиентов. В этой статье представлено руководство для начинающих в мире динамического ценообразования.

Основные выводы:

  • Динамическое ценообразование направлено на оптимизацию доходов, прибыли и удовлетворенности клиентов.
  • Методы, используемые в динамическом ценообразовании, различаются в зависимости от отрасли.
  • Лучшие методы выбираются на основе результатов AB-тестирования, итераций и улучшения алгоритма со временем.
  • Оно может быть применено только в случае наличия эластичности спроса.

Удачи! Вот моя профиль Linkedin, если вы хотите связаться со мной или помочь улучшить статью. Не стесняйтесь обращаться ко мне на Topmate/Mentro; вы можете отправить мне сообщение с вашим вопросом. Я буду рад быть на связи. Посмотрите также мои другие статьи о науке о данных и аналитике здесь.

Часто задаваемые вопросы

Ссылки

  • Курсы Kaggle: Микрозадача оптимизации цен авиабилетов (https://youtu.be/irjpteecxdg?si=aUH2ifTekQutW-9n)
  • Coursera: Основы управления доходами. (https://coursera.org/learn/fundamentals-of-revenue-management)
  • Обзор HBR: 7 уроков динамического ценообразования (При участии Брюса Спрингстина) (https://hbr.org/2022/09/7-lessons-on-dynamic-pricing-courtesy-of-bruce-springsteen)
  • Модель динамического ценообразования с использованием множителей цены для платформы онлайн-продажи автобусных билетов. (https://www.krjournal.com/index.php/krj/article/view/38/357)
  • Стратегии динамического ценообразования для задач управления многопродуктовыми доходами (https://www0.gsb.columbia.edu/faculty/cmaglaras/papers/multi_rm.pdf)
  • Оптимизация ценовой политики: от исследований до внедрения (https://www.youtube.com/watch?v=wPxDibqdg_w)

Медиа, показанное в этой статье, не является собственностью Analytics Vidhya и используется по усмотрению Автора.