The Optimization Algorithm

This page will present a simple and high-level overview on how the Price Optimization Algorithm works.

It is intended to provide basic understanding of the principles behind the algorithm and as such does not contain a lot of technical and mathematical details.

1. The data being used

  • Business On the Books Data
    • The system collects OTB data at least once a day for 365 days ahead
    • This allows the creation of pickup curve for each arrival day
    • The system uses the daily pickup in RN for the Transient business (business generated on the market segments that are mapped to the “Transient” segment group) and Total business (business generated on all the market segments)
    • When no real pickup data is available (e.g. new hotel in the system) a fake pickup curve is generated (for both Total and Transient business) based on the data received for the future days (using the average “lead time” data for the future days to simulate pickup for the past days).
  • Market Data
    • The system collects rates and guest ratings for the subscriber hotel and its CompSet at least once a week for 365 days in advance and usually for 90 days in advance on a daily basis
    • The system also collects the market occupancy data (number of hotels closed in the destination) and uses it as an indicator of market demand
  • User settings
    • Users must define the seasonality of the business in the app’s “Seasons and Events” screen; also they can define events that happen in the market (like conferences, trade shows, public holidays) which they expect will have a positive or negative influence on the “standard” business 
    • Users also need to setup the general rate strategy in the RMS’s “Hotel Rates” screen; for each “day type” and DOW they can define the low and high pricing points between which the recommended price should be (also called lower and upper bounds)
    • There are also some parameters that can be changed which will influence the calculation of the RECO rate (the “RECO” tab of the Settings screen):
      • The most important is the RECO Cap parameter which controls if the calculation should be restricted to a certain interval or not; the interval can be an offset from the IRP, offset from the lower and upper bounds or a manually defined interval
      • Other parameters control the compset pricing influence factor, the rounding type to be used, if the RECO should contain VAT or not, how old is the BOB and market data allowed to be before the RECO calculation is disabled due to obsolete data, etc

2. Algorithm Steps

  • Calculation of FCST
    • With the pickup curves of 730 days from the past (last 2 years) the system will calculate a weighted “average” pickup trend based on seasonality, events and DOW (in other words “day types”). Each day type will have this pickup trend re-calculated every time there is new or changed data in the system. These pickup trends are called “Benchmarks”. Separate benchmarks are calculated for both Total and Transient business.
    • Each past arrival day that has the same “day type” is given a weight in this calculation based on several factors (distance to the current date – days in the near past have more “weight” than days further away in the past; having a “weird” booking curve will mark the day as “outlier” and hence give it a very low weight, etc).
    • The system will then compare the existing pickup curves of each future days (the closer the date to the current day the more “pickup data” exists) to a “aggregation” of pickup benchmarks consisting of the benchmark from the same day type as each future arrival date + the benchmarks of similar other day types (this avoids situations when a future day belongs to a day type that has only a few past arrival dates and as such its pickup benchmark would be unreliable due to small sample size). The comparison is done for both RN and Revenue pickup.
    • Based on this comparison, the system will calculate the expected unconstrained pickup on the remaining booking window and add it to the values on the books for all future days. This becomes the FCST in room nights and revenue, and it is done for both Total and Transient business.
  • Calculation of Initial Reco Price (IRP)
    • Using the Total RN FCST, the Transient RN FCST, the length of the booking window, the deviation of the Transient RN OTB vs the benchmark transient RN at the “same time” and the pricing bounds of each future day’s day type, the “IRP” is calculated (starting from the lower bound when the booking window is 365 and slowly climbing towards the upper bound the more business comes in and the shorter the booking window)
    • Remember: Currently, the Revenue FCST (neither Total nor Transient) is not influencing the calculation of the recommended price
  • Positioning within CompSet
    • Using the Total and Transient forecast, the deviation of the transient RN OTB vs benchmark RN at the same time and the market occupancy, the system will select the position within the CompSet. There are 5 positions:
      • Lowest – the hotel must be among the cheapest in the compset
      • Lower – the hotel’s price must be “equal” to the inferior / lower priced competitors
      • Medium – position in the middle
      • Higher – position against superior / higher priced competitors
      • Highest – the hotel should be the highest/second highest priced hotel
    • Based on the position; the algorithm gives weights to the competitors in two separate modes:
      • based on their price (affecting the fine-tuning by 70%)
      • based on their relation (affecting the fine-tuning by 30%)
    • Example: assuming there are 5 competitors (2 “Inferiors”, 2 “Superiors” and one “Market Leader”) and the position was decided as “Highest”, then the 2 most expensive competitors will have a bigger weight (affecting the fine-tuning by 70%) and the “Market Leader” + one of the two “Superiors” will have a bigger weight (affecting the fine-tuning by 30%).
    • Remember: competitors marked as “Just Observing” in the “Settings > Competitors” screen (“RECO Participation” column) get a weight equal to “0”.
  • Fine-tuning the IRP
    • Each competitor, based on its weight defined in the previous step, will “pull” the IRP towards its price (the bigger the weight + influence and the bigger the gap between the IRP and the competitor’s rate, the more the “pull” amount).
    • It is possible to set up the fine-tuning to use the “comfort zone” parameters. E.g. if the comfort zone is set to be between +10 and +20 percent (meaning the hotel is “happy” being around 15% more expensive than the compset), the fine-tuning part of the algo will not “pull” towards the actual compset rates but towards the actual rates + 15%. This will ensure the hotel stays “15% higher priced on average vs competitors”.

3. Observations

  • There are various data integrity checks and mini-algorithms that will help the algorithm perform in particular conditions. For example:
    • when most of the competitors are closed so there is no compset prices for the fine-tuning
    • on dates when the hotel was full, a fake unconstrained pickup curve is built so that the “benchmark” pickup curves are more accurate (e.g. on a day when the hotel got fully booked 5 days before arrival the pickup in the last 5 days is 0, but that obviously is not a “correct” pickup – in fact the pickup should be very high as good days have high pickups towards the end)