Motor de precios hotelero

Seis señales de demanda deciden la tarifa de cada habitación y cada noche.

Datos y BI · Python · Demo navegable

Motor de precios hotelero

El problema

Una habitación es un producto que caduca cada noche: la que hoy queda vacía no se vende mañana, se pierde. Poner precio alto la deja sin ocupar y ponerlo bajo regala margen, así que la decisión se repite cada día y por cada tipo de habitación.

Qué hace

  • Codifica la decisión de precio como algoritmo, a partir de seis factores de demanda.
  • Uno de ellos es la antelación de la reserva: prima el último minuto dentro de los treinta días.
  • Proyecta el efecto sobre el ingreso a sesenta días vista.
  • Calcula los indicadores del sector: tarifa media diaria, ingreso por habitación disponible y ocupación.

Lo que se decidió al construirlo

Una banda de seguridad que el modelo no puede saltarse
La tarifa final se acota entre el setenta por ciento y el doscientos veinte por ciento del precio base, pase lo que pase con los factores. Un modelo multiplicativo sin tope produce, el día que coinciden temporada alta, fin de semana, evento y última hora, un precio que ningún director firmaría. La banda es lo que se firma, y hay una prueba que no deja salirse de ella.
El recargo de última hora se apaga a los treinta días
Reservar con mucha antelación no lleva ningún recargo: la prima crece de forma lineal solo dentro de los treinta días previos y llega como mucho a un veintinueve por ciento. Cobrar antelación es cobrar por planificar, que es justo lo contrario de lo que interesa premiar.
La presión de ocupación mira catorce días, no el día de ayer
Se promedia la ocupación de las dos últimas semanas y se traduce en tres escalones: presión alta, normal o floja. Reaccionar al dato de ayer convierte cualquier ruido en un cambio de tarifa, y una tarifa que se mueve todos los días deja de ser una política de precios para ser una alarma.
La semilla se declara, y también que no basta
El generador siembra al importarse, así que dos llamadas seguidas dan números distintos: quien necesite reproducir un conjunto tiene que volver a sembrar de forma explícita. Hay dos pruebas, una para cada lado, porque prometer reproducibilidad y no probarla es la forma más habitual de no tenerla.

Hasta dónde llega

  • Los seis factores actúan sobre la previsión. El histórico de dos años sobre el que se calculan tarifa media y ocupación usa solo tres: temporada, día de la semana y evento.
  • No es un optimizador. No hay curva de demanda ni elasticidad: la ocupación esperada se calcula sin mirar el precio propuesto, así que subir la tarifa no la baja. No demuestra que el modelo aumente el ingreso.
  • Cuatro de los seis factores son calendario puro —mes, día, fecha señalada y antelación—, tablas escritas a mano. Solo la presión de ocupación observa algo, y observa datos que el propio script generó.
  • Los datos son sintéticos, el calendario de eventos es estadounidense y los importes van en dólares. El panel que los pinta vive en otro repositorio.
  • 6 factores de precio
  • 730 días de histórico
  • 60 días de previsión

Construido con

  • Python
  • NumPy
  • React

De dónde salen los datos

Datos sintéticos generados por el propio repositorio: no hay información de ningún cliente.

Respalda este servicio

Cuadros de mando con Power BI para pymes

Leer el código · Abrir la demo