La predicción de demanda y la fijación de precios adecuados son dos factores clave en cualquier negocio. En el contexto hotelero en particular, y más concretamente en el sector online, esta tarea es de vital importancia debido al carácter dinámico de los precios y la alta competitividad. Automatizar este proceso es clave para una rápida adaptación, por lo que cada vez más hoteles apoyan sus decisiones en sistemas de recomendación o RMS.
En este artículo, presentamos un modelo de predicción de demanda hotelera y una estrategia de elección del precio óptimo con el fin de maximizar los beneficios esperados.
La estructura del documento se resume a continuación. En la sección 2 describimos el conjunto de datos usados. En la sección 3 presentamos el modelo para la predicción de la demanda a futuro, basado en series temporales. En la sección 4, explicamos cómo se usa la predicción anterior para generar posibles escenarios futuros mediante simulaciones de Monte Carlo. En la sección 5, estudiaremos el efecto que tiene el precio sobre la demanda a partir de los datos históricos. Estos resultados serán usados en la sección 6 para calcular el precio óptimo sobre las simulaciones generadas en la sección 4. En la sección 7 presentamos los resultados obtenidos en cada una de las secciones anteriores. Finalmente, en la sección 8 resumimos el trabajo realizado y proponemos posibles líneas de mejora.
Descripción de los datos
El conjunto de datos que usamos es una simulación de tres años de reservas en cierto hotel, en cuyos datos se ha incluido el efecto de la estacionalidad semanal y anual. Usaremos los datos hasta cierta fecha, el periodo de muestra, para predecir la demanda futura y proponer un precio óptimo sobre el resto de las fechas, el periodo de estudio.
Se asume que el hotel acepta reservas para un día de llegada concreto a partir de 𝑇 = 10 días antes, hasta el mismo día de llegada. Los precios se fijan una vez al día, por lo que al inicio de cada día el director del hotel decide los precios para el día actual y los próximos 𝑇 días. Estos precios se mantendrán durante todo el día, por lo que todas las reservas que se realicen en dicho día de reserva se atenderán a ellos. Sin embargo, al día siguiente se volverán a fijar los 𝑇 + 1 precios correspondientes, que pueden ser diferentes a los fijados el día anterior. Se considera que el hotel tiene una capacidad de 𝐶 = 100 habitaciones.
Tenemos información desglosada del precio y de la demanda total para cada día de llegada y cada día de reserva. El dataset proporciona también el periodo o temporada en el cual se engloba cada día de check-in, tanto de los datos históricos como de las fechas que se quieren predecir. En este caso existen cuatro periodos diferenciados:
- Temporada muy baja (Very Low): meses de diciembre, enero y febrero.
- Temporada baja (Low): meses de marzo, octubre y noviembre.
- Temporada alta (High): meses de abril, mayo y septiembre.
- Temporada muy alta (Very High): meses de junio, julio y agosto.
Así pues, el conjunto de datos cuenta con las siguientes columnas:
- ReservationDate: el día en el que se produce la reserva.
- CheckInDate: el día de check-in.
- ADR: el precio fijado en el día de reserva para dicho día de check-in, en dólares.
- Demand: número de reservas en la fecha de reserva para la fecha de check-in.
- Season: el periodo en el que se engloba el día de check-in.
En la Figura 1 se observa tanto la estacionalidad anual mencionada como una estacionalidad semanal, así como una ligera tendencia creciente tanto en la demanda como en el precio a lo largo del tiempo. Se observa asimismo una fuerte correlación positiva entre precio y demanda, como ocurre frecuentemente en el contexto de la hostelería.
3. Predicción de reservas a futuro
A continuación definimos el proceso mediante el cual predecimos la demanda a futuro. Sea 𝑅(𝑖, 𝑡) el número total de reservas realizadas para un día de check-in concreto 𝑡 con un número de días de antelación 𝑖. Notemos que este número es una realización de la variable aleatoria de reservas, que expresamos como 𝐵(𝑖, 𝑡). Modelamos esta variable aleatoria como el producto de dos funciones independientes
como se detalla a continuación. Por un lado, la magnitud de la demanda según el día de llegada, 𝑠(𝑡), representa el número total de reservas esperadas para un día de check-in 𝑡. Por otro lado, la forma de la demanda en función de la antelación, 𝐵'(𝑖), representa la fracción del número total de reservas para un día de llegada concreto que se realizan con 𝑖 días de antelación.
Forma de la demanda
Asumimos que la forma de la demanda depende de la temporada (o periodo) en el que se engloba el día de llegada 𝑡. Como hemos mencionado en la sección 2, en nuestros datos existen cuatro temporadas, correspondientes a periodos de actividad muy baja, baja, alta o muy alta, respectivamente. Entonces, para cada temporada 𝑘, consideramos el conjunto 𝑆𝑘 de todos los días que se engloban en ese periodo, y podemos estimar la forma de la demanda en función de la antelación de la siguiente manera
Es decir, para cada día de llegada del periodo en cuestión se calcula la fracción de reservas realizadas con una antelación de 𝑖 días, y finalmente se calcula la media sobre todos los días. De esta forma se tiene el promedio de la forma de la demanda según la antelación para el periodo 𝑘. Se asume que este patrón no varía en el corto plazo, por lo que en la estimación de la demanda a futuro se usará la forma de la demanda correspondiente según la temporada.
Magnitud de la demanda
La magnitud de la reserva representa la demanda total esperada para cada día de check-in. Así pues, se estima a partir de los datos de muestra como el número total de reservas realizadas para cada día de check-in concreto, esto es,
Recordemos que nuestros datos presentan estacionalidad tanto anual como semanal. Para hacer la proyección a futuro de la serie y así poder estimar la demanda total para cada día de llegada en el futuro, desestacionalizamos la serie de la siguiente manera.
En primer lugar, vamos a calcular el índice estacional de cada temporada 𝑘 (temporada muy baja, baja, alta o muy alta), según la fórmula
donde el denominador representa el promedio de la serie 𝑠(𝑡) en el año en el que se encuentra el día 𝑡. Como vemos, el índice estacional del periodo 𝑘 no es más que el promedio de la demanda para este periodo, donde cada valor está normalizado por su promedio anual. Así, sea 𝑘𝑡 el periodo al que pertenece el día 𝑡 , calculamos la serie sin estacionalidad anual, como
donde el subíndice 𝑌 representa que es una desestacionalización por año.
Para eliminar la estacionalidad semanal, se sigue un proceso similar al anterior, esta vez tomando como base la serie 𝑠𝑑𝑒𝑠,𝑌(𝑡) y cambiando el periodo 𝑘 por el día de la semana 𝑑. En lugar de usar el promedio, usamos la mediana para representar el índice estacional del día de la semana. Esta técnica es común en la literatura para poder preservar los picos pronunciados que presenta la estacionalidad semanal. Así, calcularemos el índice estacional del día de la semana 𝑑 como
donde 𝐷𝑑 representa el conjunto de todos los días que son del tipo 𝑑 (e.g. todos los lunes). Aquí, el denominador representa el promedio de la serie 𝑠𝑑𝑒𝑠,𝑌(𝑡) en la semana en la que se encuentra el día 𝑡. Finalmente, la serie desestacionalizada se calcula como
donde 𝑑𝑡 representa el día de la semana de cada día 𝑡.
Una vez que tenemos la serie desestacionalizada, la proyectamos a futuro usando el modelo de suavizamiento exponencial de Holt-Winters, cuyos parámetros se estiman a partir de los datos de muestra. Otra opción es usar modelos SARIMA, que exigen encontrar los hiperparámetros (p, d, q, P, D, Q, m) que mejor se ajustan a los datos disponibles. En nuestro caso, debido a que ya hemos desestacionalizado la serie, no hemos encontrado grandes mejoras en los resultados a la hora de usar estos modelos. Por esta razón y debido a su relativa complejidad computacional, usamos el modelo de Holt-Winters.
Tras hacer la proyección de la serie desestacionalizada, para obtener la demanda total estimada para cada día de llegada, debemos deshacer los cambios hechos anteriormente. Es decir, para cada día 𝑡 del período a predecir, debemos multiplicar el valor de 𝑠𝑑𝑒𝑠,𝑌(𝑡) por sus respectivos índices estacionales y , siendo 𝑑𝑡 y 𝑘𝑡 el día de la semana y el periodo correspondientes al día 𝑡. De esta manera, obtenemos la estimación de la magnitud de la demanda a futuro. Los resultados se muestran en la sección 7.
Simulación de demanda
A continuación, simulamos la proyección de la demanda esperada a futuro asumiendo que la política de precio no cambiará a futuro. Así pues, la demanda simulada es un valor de referencia que se verá afectado por la política de precio que se decida seguir.
En la sección 2, hemos modelado la demanda como un producto de dos funciones independientes, la magnitud y la forma de la demanda. Para cada día en el periodo a predecir, hemos predicho la magnitud de la demanda ŝ(𝑡) mediante la proyección de la serie desestacionalizada ŝ𝑑𝑒𝑠(𝑡) , multiplicando posteriormente el valor por los índices de estacionalidad correspondientes. Por otro lado, hemos obtenido una estimación de la forma de la demanda Ḃ𝑘(𝑡) para cada periodo 𝑘 a partir de los datos históricos. Así, podemos estimar el número de reservas para cierto día de llegada 𝑡 con una antelación de 𝑖 días mediante el producto
siendo 𝑘𝑡 el periodo en el que se engloba el día 𝑡 . Para poder simular los datos, necesitamos también conocer la varianza de la variable aleatoria, que calculamos a partir del histórico. Como no tenemos el valor real de las reservas en el día 𝑡 que queremos predecir, aproximamos la varianza de 𝐵(𝑖,𝑡) como la suma cuadrática de los errores de los días pertenecientes a la misma categoría, esto es, el mismo día de la semana y el mismo periodo, para la antelación 𝑖. Así, calculamos la varianza de la variable de reservas como
donde 𝑆𝑘𝑡 y 𝐷𝑑𝑡 representan, respectivamente, el conjunto de días pertenecientes al mismo periodo 𝑘𝑡 , y el conjunto de días del mismo día de la semana 𝑑𝑡 , que el día 𝑡 .
A partir de estos estadísticos, simulamos la demanda a futuro para cada par (𝑖, 𝑡) como una distribución normal con media B(𝑖,𝑡) y varianza Var( B(𝑖,𝑡) ). Dicha distribución se trunca por la izquierda en cero, pues no es posible tener valores de demanda negativos. Cabe remarcar que se podría testear el supuesto de normalidad y, en caso de ser refutado, proponerse un modelo distinto. Sin embargo, este no es nuestro objetivo principal y hemos considerado suficiente controlar el promedio y el grado de dispersión de la demanda.
A continuación, mediante el método de Monte Carlo simulamos 𝑀 posibles trayectorias de la demanda para el periodo de estudio. Así, para cada día 𝑡 y cada antelación 𝑖 desde 0 hasta 𝑇 (la máxima antelación), tomamos 𝑀 valores de una distribución normal con promedio y varianza dados por las ecuaciones (8) y (9) respectivamente.
Estimación de la relación precio – demanda
Para poder encontrar el precio óptimo que debemos fijar para optimizar los beneficios, es indispensable tener en cuenta el efecto que el precio tiene sobre la demanda. Sabemos que en general se cumple la ley de la demanda: una subida de precio conlleva un descenso en la demanda, y viceversa. Sin embargo, al estudiar los datos encontramos en general una correlación positiva entre el precio y la demanda. Esto es debido a que existen variables comunes afectando tanto al precio como a la demanda, problema que se conoce como la endogeneidad del precio.
Por ejemplo, en temporada alta tenemos más clientes potenciales, por lo que los hoteleros suben los precios en general, y aun así la demanda es más alta que en temporada baja.
En este contexto, una estimación simple predice una elasticidad positiva, es decir, que una subida del precio provoca una subida en la demanda, contrariamente a lo que dicta la ley de la demanda. Esto se muestra en la Figura 2.
Por tanto, se hace patente la necesidad de procesar los datos de alguna manera para encontrar el efecto real del precio sobre la demanda, que en particular debe ser negativo. Para ello, procedemos de la siguiente manera.
En primer lugar, agrupamos los datos en subconjuntos similares, por ejemplo por días que pertenecen a la misma temporada y que son del mismo día de la semana. Para cada subconjunto, calculamos el promedio de los precios y el número de reservas obtenidas, que serán los precios y demandas de referencia para ese subconjunto. Finalmente, normalizamos el histórico de precios y demandas dividiendo cada uno de los precios y las demandas por su valor de referencia correspondiente.
De esta manera, esperamos aislar el efecto causal que tiene variar el precio sobre la demanda. Por ejemplo, un precio normalizado superior a 1 significa que el precio fijado fue superior al precio promedio en las mismas condiciones (por ejemplo debido a que el hotel estaba casi completo). Tal elección podría resultar en una demanda inferior a la demanda promedio en las mismas condiciones, así que la demanda normalizada sería inferior a 1.
En este caso, consideramos una regresión lineal para cada uno de los 4 periodos de estacionalidad. Tras ajustar cada modelo usando los datos de cada periodo, tenemos que
donde 𝑝𝑛𝑜𝑟𝑚(𝑖,𝑡) y 𝑑𝑛𝑜𝑟𝑚(𝑖,𝑡) son el precio y la demanda normalizados para cierto día de llegada 𝑡 y antelación 𝑖, y 𝑘𝑡 es el periodo al que pertenece el día 𝑡.
En la siguiente sección, usamos esta relación para predecir cómo aumentará o disminuirá la demanda esperada dependiendo del precio que fijemos en cada día concreto. De esta manera podemos calcular los beneficios esperados para una elección de precio concreto de una forma más fidedigna.
Búsqueda del precio óptimo
En esta sección definimos la estrategia seguida para buscar el precio óptimo. El objetivo es fijar el conjunto de precios que maximice los beneficios en el periodo de estudio, lo cual implica una elección de precio para cada día 𝑡 y cada posible antelación 𝑖.
Si no imponemos ninguna restricción sobre el comportamiento que debe seguir el precio, este problema puede volverse sumamente complejo. En particular, la elección del precio óptimo dada cierta antelación 𝑖 depende de los beneficios que se esperen obtener en los días siguientes, que a su vez dependen del precio que se fije. Por ejemplo, si no se espera llenar el hotel, el precio a fijar deberá ser relativamente bajo para asegurar cierta ocupación, mientras que el precio puede ser más alto si se espera una demanda alta. Tal enfoque requiere la resolución de un problema recursivo, por ejemplo usando programación dinámica.
Como veremos en un futuro post, este cálculo puede ser relativamente complejo incluso en situaciones simplificadas. Para simplificar este cálculo, a continuación presentamos un modelo paramétrico para el precio basado en multiplicadores.
Modelo de precio dinámico mediante multiplicadores
Asumamos el siguiente enfoque. El precio a fijar en cada día 𝑡 y cada antelación 𝑖 dependerá de diversos factores, cada uno de los cuales contribuirá a la hora de fijar el precio final. En particular, estos factores, centrados en 1, se interpretan como descuentos o sobrecargas que se multiplicarán a un precio de referencia. Aquí, el principal supuesto del modelo reside en que los multiplicadores son lineales respecto a sus respectivas variables, como veremos a continuación. En particular, tomamos en cuenta dos factores: el número de habitaciones disponibles y el número de días de antelación de la reserva.
Multiplicador de disponibilidad
Una práctica común es aumentar el precio a medida que disminuye el número de habitaciones disponibles para el día en cuestión. Así, en nuestro modelo el multiplicador decrece linealmente con el número de habitaciones disponibles, como se ve en la Figura 3.
El multiplicador viene determinado por dos parámetros. El mínimo se da cuando el hotel está vacío y el máximo Multiplicador de antelación
Es común que el precio de la habitación para un día concreto vaya aumentando con el tiempo desde que se empiezan a aceptar reservas, y que se produzca un descuento en los últimos días si quedan habitaciones disponibles. Así, el multiplicador parte de un valor inicial , en la antelación máxima de 𝑇 días, y aumenta hasta un máximo en el mismo día de llegada. Los parámetros del multiplicador de antelación son pues, .
6.1.3. Restricciones sobre los parámetros
Notemos que los dos multiplicadores que se han definido dependen de un conjunto de 6 parámetros ( para el multiplicador de disponibilidad, para el multiplicador de antelación). La forma de los multiplicadores impone las siguientes restricciones sobre dichos parámetros, de manera que produzcan resultados lógicos:
Así pues, la elección del precio óptimo consistirá en encontrar el conjunto de parámetros que maximice los beneficios en el periodo de estudio. Para reducir el número de parámetros a determinar, imponemos restricciones adicionales sobre los parámetros. El objetivo de los multiplicadores, como se ha explicado, es introducir variaciones a partir de un precio de referencia, por lo que imponemos el promedio de los multiplicadores sobre el rango de posibles valores sea 1.
Así, se obtienen las siguientes restricciones adicionales:
De esta manera, el conjunto de parámetros a fijar se reduce a ( ). Los dos parámetros restantes se determinan a partir de estos por las expresiones (14) y (15).
Proceso de optimización
La función objetivo
Como en todo problema de optimización, el primer paso es definir la función objetivo a optimizar. En este caso, lo que queremos es maximizar los beneficios totales en el periodo de estudio. Cabe remarcar que podríamos adaptar el modelo a objetivos diferentes en función de las necesidades del cliente. Por ejemplo, maximizar la ocupación en lugar del beneficio, incluso añadiendo la restricción de asegurar cierto beneficio.
El modelo de multiplicadores anterior nos permite reducir el espacio de búsqueda a los cuatro parámetros ( ) mencionados. Así, el problema de la optimización del precio se reduce a encontrar la mejor combinación de estos parámetros. A continuación, vamos a ver cómo calculamos los beneficios esperados dado un conjunto de parámetros, usando las simulaciones de Monte Carlo generadas y el efecto del precio sobre la demanda.
Notemos que, dada una combinación de parámetros, para cada día de llegada 𝑡 y número de días de antelación 𝑖 el valor de los multiplicadores será distinto. Esto es debido a que cada multiplicador depende de una variable de estado, en particular del número de habitaciones disponibles 𝑎(𝑖,𝑡) para el día 𝑡 cuando nos encontramos en i días antes, y de la propia antelación 𝑖. Así, el precio fijado para cada par (𝑖,𝑡) se calcula como
donde los subíndices 𝐴 y 𝐷 denotan los multiplicadores de antelación y de disponibilidad respectivamente, y los valores 𝑝𝑟𝑒𝑓(𝑖,𝑡) representa el precio de referencia. Este precio de referencia puede ser fijado por el propio director del hotel. Sin embargo, en este caso lo tomamos como el promedio estacional obtenido a partir de los datos históricos.
Para calcular el efecto del precio sobre la demanda, debemos tener en cuenta la relación encontrada en la sección 5. Recordemos que el precio normalizado se obtiene dividiendo cada precio por su precio de referencia. Según la ecuación (16), pues, en este caso no es más que el producto de los multiplicadores. Así, usando la ecuación (10) podemos calcular la demanda normalizada, que representa la variación respecto a la demanda de referencia provocada por el precio. Por tanto, el número de reservas esperadas para esos valores de (𝑖,𝑡) deberá aumentar o disminuir dependiendo de si la demanda normalizada es mayor o menor que 1, respectivamente. Esto lo hacemos de la siguiente manera:
- Si la demanda normalizada es mayor que 1, sea 1 + 𝑥 , se conserva cada reserva existente y se crea una duplicada con probabilidad 𝑥 .
- Si la demanda normalizada es menor que 1, sea 𝑥 , cada reserva existente se mantiene con probabilidad 𝑥 .
Así, dado un conjunto de parámetros ( ), recorreremos cada simulación de Monte Carlo de la siguiente manera:
- Se inicializa el beneficio a cero.
- Para cada día de llegada t y cada día de reserva con antelación de i días:
- Se calcula el precio fijado según el valor de los multiplicadores.
- Se calcula la demanda normalizada asociada al precio normalizado.
- Se calcula la nueva demanda según el procedimiento explicado anteriormente.
- Se calcula la demanda realizada: el mínimo entre la nueva demanda y el número de habitaciones disponibles. Se actualiza el número de habitaciones disponibles.
- Se incrementa el beneficio con el producto entre el precio y la demanda realizada.
Tras este proceso, se obtiene el beneficio total esperado para cada simulación de Monte Carlo. Finalmente, calculando el promedio entre todos estos beneficios, obtenemos el valor esperado del beneficio usando el conjunto de parámetros ( ).
Notemos que en este caso la función objetivo es una función estocástica, pues se pueden obtener distintos valores objetivo en sucesivas ejecuciones de la función, tomando como entrada el mismo conjunto de parámetros. Por esta razón, es importante que el número de simulaciones de Monte Carlo sea lo suficientemente grande como para que al promediar los resultados se reduzcan al mínimo los efectos espurios.
Estrategia de optimización
Una vez definida la función objetivo, se debe determinar la estrategia de optimización a seguir. En caso de funciones derivables, tales como las funciones de pérdidas utilizadas en problemas de machine learning, es común usar métodos basados en el cálculo de la derivada tales como el descenso del gradiente. Sin embargo, como hemos visto, en nuestro caso la función objetivo es relativamente compleja y en particular no es determinista. Esto hace irrealizable el cálculo de su derivada, por lo que debemos tomar un enfoque diferente.
En este caso, usamos una técnica de optimización basada en un algoritmo evolutivo. Dichos algoritmos, en general, siguen las leyes generales de la evolución biológica (en particular la mutación, la herencia combinada y la selección natural). Así, partiendo de un número inicial de posibles soluciones, representadas por combinaciones de parámetros válidas, se calcula el valor de la función objetivo (llamada función de aptitud) de todos ellos. A continuación, se simula la selección natural mediante algún método de selección en el que se premia a los individuos más aptos (con menor o mayor valor de la función de aptitud, según el problema). Estos se reproducen entre sí pasando su herencia a la descendencia y, a su vez, se introducen mutaciones (variaciones con distribución normal) en los parámetros para explorar nuevos conjuntos de parámetros. Este proceso se itera, simulando las sucesivas generaciones y obteniendo cada vez mejores combinaciones de parámetros.
En particular, para este problema usamos el método llamado CMA-ES (Covariance Matrix Adaptation Evolution Strategy). Este modelo es muy flexible, de manera que solo necesita como entrada los rangos de valores posibles para cada parámetro (especificados por las restricciones de la sección 6.1.3). A continuación, se sigue la estrategia evolutiva de manera iterativa hasta que se estabiliza el valor de la función objetivo o se llega a un cierto número prefijado de generaciones. Finalmente, se elige como solución óptima el individuo con el mínimo (o máximo) valor de la función objetivo.
Notemos que este método no es determinista, ni siquiera en el caso en el que la función objetivo sí lo fuera. Debido a la aleatoriedad intrínseca de la estrategia evolutiva, diferentes ejecuciones del algoritmo dan lugar a diferentes resultados, incluso con la misma población inicial. Por tanto, no se asegura encontrar la mejor combinación de parámetros, pero sí es óptimo para explorar espacios de estado continuos y relativamente extensos, como es nuestro caso. Así, podemos ejecutar el algoritmo varias veces para probar con distintas poblaciones iniciales, y finalmente nos quedamos con la combinación de parámetros que da un beneficio total más alto.
Resultados
En esta sección presentamos los principales resultados obtenidos en este trabajo. Con la intención de mostrar cómo la predicción se adapta a cada temporada conservando la estacionalidad de los datos, hemos tomado como periodo de muestra los años 2010 y 2011, y como periodo de estudio el año 2012. Por tanto, los datos del año 2012 se han tomado únicamente para validar los resultados obtenidos usando los datos de los años anteriores.
En general, cuanto más largo sea el periodo de estudio, más difícil será conseguir resultados realistas, puesto que puede haber factores tales como entrada de nuevos competidores en el mercado o cambios sociales (mejoras económicas, crisis sanitarias) que afecten a la demanda en el corto y medio plazo. En este caso, al tratarse de datos simulados, los resultados son aceptables incluso para proyecciones a largo plazo. Sin embargo, por las razones expuestas anteriormente, en general solo será seguro predecir unas pocas semanas más allá del último día del que se disponen datos.
Proyección de la demanda
Como hemos explicado en la sección 2, hemos considerado la serie temporal formada por la demanda total en cada día de check-in del periodo de muestra y estudiado su proyección a futuro. Para ello hemos calculado la serie desestacionalizada, tanto por año como por semana, y hemos predicho su evolución lineal a partir del método de suavizamiento exponencial de Holt-Winters. El resultado de dicha proyección se muestra en la Figura 5.
Finalmente, tras deshacer los cambios realizados para desestacionalizar la serie, obtenemos la demanda total predicha para el periodo de estudio. Como vemos en la Figura 6, en general la predicción es capaz de captar la estacionalidad anual, si bien en los meses de marzo a junio la demanda real es algo inferior. Por otro lado, se observa en general que la serie predicha presenta picos semanales que coinciden con los de la serie real, aunque esta exhibe fluctuaciones mayores que el modelo no es capaz de ajustar.
Forma de la demanda en función de la antelación
La Figura 7 muestra la fracción del número de reservas totales realizadas para cada número de días de antelación. En este caso suponemos que se permiten reservas a partir de T=10 días antes del día de llegada.
En general se observa como la demanda se concentra en los días más cercanos al día de check-in. Esta tendencia se acentúa en las temporadas más bajas, en las que se realizan más de un 50% de reservas el mismo día de check-in. Por otro lado, en las temporadas más altas la demanda se distribuye algo más a lo largo del periodo de reservas, puesto que los clientes reservan por lo general con mayor antelación.
Esta forma de la demanda calculada a partir de los datos históricos se considera que no cambiará mucho a corto plazo, por lo que se utiliza, junto con el tamaño de la demanda prevista, para simular la demanda en el periodo de previsión, como se muestra en el apartado 7.4.
Efecto del precio sobre la demanda
Hemos estudiado el efecto que tiene el precio sobre la demanda a partir del periodo de muestra. Como se ha visto en la Figura 2, una regresión lineal de la demanda total respecto al precio medio resultaría en una pendiente positiva, contradiciendo la ley de la demanda. Para corregir este resultado, hemos tomado valores de referencia del precio y de la demanda para ciertos subconjuntos de datos y hemos normalizado ambas variables respecto a estos valores. A continuación, se ha estimado el efecto del precio normalizado sobre la demanda normalizada.
Se ha realizado una regresión lineal para cada temporada en la que se clasifican los datos, para así poder detectar distintos patrones según la época del año. Similarmente, se podrían haber realizado distintas regresiones para distintos días de antelación o días de la semana. Sin embargo, debido al limitado volumen de datos, un análisis tan pormenorizado podría resultar en una dispersión excesiva en los coeficientes.
Como se puede apreciar en la Figura 8, tras la normalización obtenemos un efecto negativo del precio sobre la demanda en todos los casos, cumpliendo así con la ley de la demanda.
Búsqueda del precio óptimo
En primer lugar, hemos realizado 𝑀 = 100 simulaciones de Monte Carlo para la demanda en el periodo a predecir. Cada simulación cuenta con un valor de la demanda para cada día de check-in (todos los días del año 2012) y cada valor posible de antelación (desde 0 a 10 días, ambos incluidos). La Figura 9 muestra algunos resultados de las simulaciones.
A partir de estas simulaciones, buscamos el precio óptimo usando la estrategia evolutiva explicada en la sección 6. En este caso, encontramos que el precio óptimo viene dado por el conjunto de parámetros ( ) = (1.279, 0.801, 0.979, 0.146). La forma de los multiplicadores se muestra en la Figura 10.
Se puede observar que el precio recomendado varía considerablemente en función del número de habitaciones disponibles. De hecho, el multiplicador por disponibilidad es casi dos veces mayor cuando el hotel está casi lleno (pocas habitaciones disponibles) que cuando está vacío (disponibilidad igual a la capacidad del hotel).
En función de la antelación, se recomienda mantener el precio muy cerca del valor de referencia, aumentando ligeramente su valor hasta un día antes del check-in. Para el día de llegada se ofrece un gran descuento con el fin de obtener una mayor demanda de último día.
En la Figura 11, comparamos los resultados reales con los resultados que se esperarían obtener con esta política de precio, para un día de check-in concreto. Notemos que se asume una respuesta de la demanda acorde a la que se ha estimado en la sección 6.2. A modo de ejemplo, se muestra el 7 de julio de 2012, correspondiente a un sábado de temporada muy alta.
Como se puede observar en el panel superior, en general el modelo recomienda un precio más bajo que el que se está cobrando actualmente. Esto es debido a que se ha tomado como precio de referencia el promedio estacional en el periodo de muestra. Recordemos que los datos de los que partimos presentan una tendencia creciente, por lo que el precio en ese periodo es inferior que en el periodo de estudio.
Por otro lado, observamos que se recomienda una bajada del precio en el mismo día de check-in, de acuerdo al multiplicador de antelación. En el panel intermedio se observa que esta bajada tiene como consecuencia una demanda mucho mayor en el día de check-in. Como se observa en el panel inferior, a pesar de cobrar un precio más bajo, se obtiene en general un beneficio mayor usando la estrategia recomendada.
El comportamiento descrito es similar para todas las estaciones y días de la semana: el precio recomendado es menor que el precio actual. Intuitivamente, se busca que el aumento en la demanda compense esa bajada de precio y el beneficio total sea mayor. Cabe recordar que los datos “reales” son en realidad una simulación, en la que la estrategia de fijación de precios no pretendía ser óptima. En particular, esta estrategia sólo tiene en cuenta un multiplicador basado en el número de habitaciones disponibles y no en la antelación de la reserva.
En la Figura 12 se comparan los resultados obtenidos usando la estrategia óptima y la estrategia actual, para cada día de check-in en los meses de febrero y marzo.
De nuevo, en el panel superior se puede observar cómo el precio recomendado, inferior al precio actual, hace que el ADR (precio promedio por habitación y día) sea también inferior. Por contra, esto hace que la demanda sea notablemente mayor usando la estrategia recomendada, como se puede observar en el panel intermedio. Finalmente, el panel inferior muestra que por lo general se obtienen beneficios totales más altos usando la estrategia de pricing óptima respecto a los que se consiguen con la estrategia actual.
Para terminar, hemos calculado el beneficio total que se esperaría obtener usando la estrategia propuesta, que corresponde al promedio obtenido sobre todas las simulaciones de Monte Carlo. Por otro lado, se ha calculado el beneficio total real obtenido en el periodo de estudio (año 2012) para poder comparar los resultados. La Tabla 1 resume los resultados obtenidos.
Beneficios reales | Beneficios esperados | Porcentaje de aumento | |
Valor medio | $990,953 | $1,062,903 | 7.16% |
Desviación estándar | – | $12,741 | 1.29% |
Observamos que con la estrategia propuesta se espera aumentar el beneficio total en un porcentaje promedio algo superior al 7%. Teniendo en cuenta la desviación estándar de los datos, estimamos un aumento entre el 6 y el 8 % por encima del precio total que se obtiene con la estrategia de precio básica actual.
Conclusiones y trabajo futuro
En este artículo hemos presentado un modelo de predicción de demanda y una estrategia de pricing dinámico.
En primer lugar, la demanda se ha modelado como el producto de dos funciones: la magnitud de la demanda total que depende del día de check-in, y la forma de la demanda según la antelación. De esta manera, mediante un paso previo de desestacionalización, hemos proyectado la magnitud de la demanda a futuro mediante el método de Holt-Winters. Tras introducir de nuevo la estacionalidad en la serie proyectada, hemos visto que la predicción se ajusta de manera razonable a la demanda real en el periodo de estudio.
Por otro lado, hemos calculado la forma de la demanda a partir de los datos históricos, diferenciando por cada periodo de estacionalidad. A partir de estas dos funciones, hemos simulado la demanda a futuro para cada día de check-in y día de antelación mediante el método de Monte Carlo.
Paralelamente, se ha estudiado el efecto del precio sobre la demanda, que se ha inferido a partir de los datos históricos. Para obtener una elasticidad negativa, se han normalizado ambas variables respecto a los valores promedio en días similares. Así, hemos realizado una regresión lineal del precio normalizado en función de la demanda normalizada para cada periodo de estacionalidad, obteniendo en todos los casos pendientes negativas.
A continuación, se ha usado esta información para calcular el precio óptimo que se debe fijar para maximizar los beneficios en el periodo de estudio. Para ello, se ha presentado un modelo paramétrico para el precio, basado en multiplicadores según la antelación y el número de habitaciones disponibles. Hemos reproducido el efecto inferido del precio sobre la demanda de referencia previamente simulada, y de esta manera se han calculado los beneficios esperados con cada elección de parámetros de los multiplicadores. Mediante una estrategia evolutiva hemos calculado el mejor conjunto de parámetros, y hemos visto que en efecto se espera que mejore los resultados que se obtienen con la estrategia actual.
Finalmente, cabe mencionar que este estudio puede extenderse en varias direcciones. Para empezar, podríamos considerar un conjunto de datos con información desglosada a nivel de reserva. Por ejemplo, si tenemos información como el número de noches o el número de habitaciones de cada reserva, podemos inferir la distribución de estas variables e incluirlas en nuestra simulación. También podríamos tratar de incluir multiplicadores para estas variables en el modelo de precio óptimo, por ejemplo basados en descuentos por estancias largas o grupos grandes. Por supuesto, también pueden considerarse predicciones distintas para distintos tipos de habitaciones y, si se tiene una segmentación de los clientes, puede estudiarse de forma diferenciada la elasticidad precio de la demanda de cada segmento.
Por otro lado, podrían usarse modelos más complejos para los distintos problemas que se han atacado a lo largo del trabajo. Por ejemplo, se pueden usar algoritmos basados en redes neuronales recurrentes para predecir la demanda a futuro. También pueden considerarse modelos no lineales para estimar el efecto de la demanda sobre el precio, teniendo en cuenta los efectos de saturación para precios muy altos y muy bajos.
Por último, se podría añadir complejidad al modelo de multiplicadores que se ha usado para el precio, por ejemplo añadiendo más multiplicadores si contamos con más variables, como se ha comentado. Sin embargo, podría plantearse un modelo paramétrico completamente diferente, o incluso modelos no paramétricos que requerirían resolver un problema de optimización a fin de encontrar el precio óptimo para cada día.