Analizaremos el caso de un hotel que el +40% de sus reservas son canceladas el mismo día de la llegada y cuya única política de cancelación ofrece pago en destino sin penalidad.
El Hotel ABC tiene una política de cancelación 100% flexible. En la cual los huéspedes pueden realizar cancelaciones en cualquier momento sin tener una penalidad y realizar el pago al momento de arribar al hotel.
Esta política genera un comportamiento de un alto porcentaje de cancelación (cerca del 40%, 4 de cada 10 reservas son canceladas 😳) y que la gran mayoría de estas cancelaciones se den en los últimos días de la llegada. Son reservas efímeras, en su mayoría con un tiempo de vida (TTL) de un solo día. La mayoría de las reservas con creadas y canceladas antes de los 5 días de la llegada. Esta entropía genera una gran incertidumbre sobre las expectativas de ingresos y dificultan la gestión de revenue, llevándola al “micro-management” de gestión de precios y promociones de última hora para apagar el incendio. 🚒
Por suerte, la estrategia en curso ha venido desempeñándose con éxito (en el auge del turismo post-covid), con una tasa promedio de ocupación del primer sementre cerca al 90%. El objetivo aquí se centra en la optimización de la estrategia.
¿Cómo optmizar la estrategia?
Lo primero en averiguar es ¿qué tanto los huéspedes de este hotel realizan sus pagos con tarjeta de crédito?. A pesar que no se exija un pago por adelantado, con cobro directo a la tarjeta de crédito; aún sería posible que los huéspedes prefieran usarla al momento de llegar al hotel. En este caso, migrar hacia una política que exija el cobro anticipado por medio de tarjeta de crédito, será un paso natural que no generaría un potencial rechazo en la conversión de reservas, dentro de su mercado natural. Para responder a esta hipótesis, analizaremos los medios de pagos que han sido utilizados en un periodo de los últimos 5 meses.
Se han creado dos archivos de datos obtenidos desde consultas en línea al software hotelero:
export_payment_list.csv
Es una tabla de pagos realizados, contiene el medio de pago usado y el monto.rsv_df.csv
Es una tabla de todas las reservas, contiene detalles de cada reserva como la agencia que vendió la reserva y el país del huésped.
Al unir los dos conjuntos de datos, podremos determinan no solo cual es el medio pago más utilizado para responder a la primera hipótesis; sino también, como se dan estos pagos por canal de venta o país.
¿Qué tanto los huéspedes usan como medio de pago la tarjeta de crédito?
Solo el 20% lo hace, es decir, 1 de cada 5 reservas son pagadas por medio de la tarjeta de crédito. Es decir, que si se desea implementar el cobro por anticipado de las reservas, un 80% de los huéspedes estaría fuera. Allí hay un riesgo de implementación inmediata.
import pandas as pd
# Read data sources. Payments & Reservations
payments = pd.read_csv('export_payment_list.csv', sep=';')
df_rsvs = pd.read_csv('data/rsv_df.csv', parse_dates=[5, 7, 15, 16], dayfirst=True)
df_rsvs.fillna(value={'agency':'Hotel ABC', 'customer_country':'Unknown'}, inplace=True)
# Inner Join payments & reservations dataframes
payments_rsv = payments.merge(df_rsvs, left_on='Reserva', right_on='id_human', how='inner', indicator=True)
payments_rsv.fillna({'agency':'Unknown', 'Tipo':'Unknown', 'customer_country':'Unknown'}, inplace=True)
payments_rsv_type = payments_rsv.groupby('Tipo', as_index=False)[['Cantidad']].sum().\
set_index('Tipo').sort_values(by='Cantidad', ascending=False)
payments_rsv_type.loc['Total'] = payments_rsv_type.sum()
payments_rsv_type['%'] = (payments_rsv_type['Cantidad'] / payments_rsv_type.iloc[-1,0])*100
payments_rsv_type.style.format({"Cantidad": "${:20,.0f}", "%": "{:20,.2f}%"})
¿Cómo se usa la tarjeta de crédito por canales?
Al desagrupar ese 20% por canales de venta, tenemos que el 12.5% de los pagos por medio de tarjeta de crédito lo realizan huéspedes provenientes de Booking.com y un 7.8% por la venta directa del hotel, cuarto y séptimo lugar en la cantidad total de pagos. Mientras que los tres primeros tipos de pagos de contado (Tarjeta Débito y Efectivo), corresponden a cerca del 50% de la cantidad total. Para el caso de Booking.com (que es el canal por donde se iniciaría la aplicación de una política más restrictiva), alrededor de uno (1) de cada cuatro (4) pesos que se pagan es por medio de tarjeta de crédito.
# Groupby type of payments by agency
payments_rsv_type_agency = payments_rsv.groupby(['agency', 'Tipo'])[['Cantidad']].sum().\
sort_values(by='Cantidad', ascending=False)
payments_rsv_type_agency['%'] = (payments_rsv_type_agency['Cantidad'] / payments_rsv_type_agency\
['Cantidad'].sum())*100
payments_rsv_type_agency.style.format({"Cantidad": "${:20,.0f}", "%": "{:20,.2f}%"})\
.bar(subset=["Cantidad",], color='lightgreen')
¿Qué tipo de clientes pagan con tarjeta de crédito?
El 42% de los huéspedes que provienen de Booking.com y pagan con tarjeta de crédito son colombianos. Es una pareja que crean su reserva con una semana de anticipación, tienen una estadía por dos noches a un precio promedio de $170.000. 1 de cada 4 clientes que pagan con tarjeta de crédito es colombiano, es decir, que la mayoría de los clientes que pagan con tarjeta de crédito son extranjeros.
customer_pay_by_credit_card = payments_rsv[payments_rsv['Tipo'] == 'Tarjeta De Crédito']
customer_pay_by_credit_card_agency = \
customer_pay_by_credit_card.groupby(['agency', 'customer_country'])\
[['Cantidad', 'los', 'bWindow', 'adr', 'occupancy']].\
agg({'Cantidad':'sum', 'los':'mean', 'bWindow':'mean',\
'adr':'mean', 'occupancy':'mean'})\
.sort_values(by='Cantidad', ascending=False)
customer_pay_by_credit_card_agency['%'] = (customer_pay_by_credit_card_agency['Cantidad']\
/ customer_pay_by_credit_card_agency['Cantidad'].sum())*100
customer_pay_by_credit_card_agency = customer_pay_by_credit_card_agency.\
reindex(columns=['Cantidad', '%', 'los', 'bWindow', 'adr', 'occupancy'])
customer_pay_by_credit_card_agency.style.format({"Cantidad":"${:20,.0f}", "adr":"${:20,.0f}",\
"%":"{:20,.2f}%", "los":"{:20,.1f}", "bWindow":"{:20,.1f}", "occupancy":"{:20,.1f}"})\
.bar(subset=["Cantidad",], color='lightgreen')
¿Qué tipo de clientes pagan con otros medios?
El 77% de los pagos hechos por medios de pagos diferentes a tarjeta de crédito son colombianos. Es una pareja que reserva entra 10 y 6 días antes de su llegada, por 2 días y a un precio promedio de $185.000 pesos por noche. 3 de cada 4 pesos pagados por medios diferente a tarjeta de pago son colombianos. La minoría de los clientes que pagan por medios diferentes a tarjeta de crédito son extranjeros.
customer_pay_by_other = payments_rsv[payments_rsv['Tipo'] != 'Tarjeta De Crédito']
customer_pay_by_other_agency = \
customer_pay_by_other.groupby(['agency', 'customer_country'])\
[['Cantidad', 'los', 'bWindow', 'adr', 'occupancy']].\
agg({'Cantidad':'sum', 'los':'mean', 'bWindow':'mean',\
'adr':'mean', 'occupancy':'mean'})\
.sort_values(by='Cantidad', ascending=False)
customer_pay_by_other_agency['%'] = (customer_pay_by_other_agency['Cantidad']\
/ customer_pay_by_other_agency['Cantidad'].sum())*100
customer_pay_by_other_agency = customer_pay_by_other_agency.\
reindex(columns=['Cantidad', '%', 'los', 'bWindow', 'adr', 'occupancy'])
customer_pay_by_other_agency.style.format({"Cantidad":"${:20,.0f}", "adr":"${:20,.0f}",\
"%":"{:20,.2f}%", "los":"{:20,.1f}", "bWindow":"{:20,.1f}", "occupancy":"{:20,.1f}"})\
.bar(subset=["Cantidad",], color='lightgreen')
¿Qué hacer?
- Implementar políticas de cobro por anticipado por tarjeta de crédito solo para los huéspedes extranjeros;
- Hacer esta implementación en la tarifa más económica y medir los resultados.
- Aplicar la política más restrictiva para todas las nacionalidades en periodos de reserva futuros, 3 meses más adelante y observar los cambios. En caso que sean positivos implementar definitivamente la nueva política en todas las tarifas.