# Reading the booking curve: how travel demand data actually behaves
A 180-room hotel in Barcelona is 60 days out from a Saturday in June. It has sold 22 rooms. Panic? No. Its historical curve says that by 60 days out, this specific Saturday is usually only 12 percent booked, and it fills to 95 percent in the final three weeks. The revenue manager holds rates.
That single decision, calm in the face of an empty-looking calendar, is only possible because travel demand data behaves in a very particular way. Learn how the curve behaves and most of hospitality analytics starts to make sense.
The booking curve (also called booking pace) is the cumulative count of reservations for a single future date, plotted against how many days remain until that date.
The x-axis is "days to arrival" (often written DTA), counting down. The y-axis is rooms sold, or occupancy percent, or revenue.
Read one date at a time. Each future Saturday, each Tuesday, each holiday has its own curve. That is the first mental shift: you are not tracking "sales this week." You are tracking the fill trajectory of hundreds of individual future dates, each aging independently.
A typical curve is not a straight line. It usually looks like a slow ramp that steepens near the end:
The shape shifts by segment. A resort in the Maldives books far earlier (long-haul leisure plans months ahead). An airport hotel near a convention center may stay flat until a corporate rush 10 days out. Same axis, completely different curves.
If you come from retail, ecommerce, or CPG, your instincts will mislead you here. Four properties make travel demand data different.
An unsold room on Tuesday night is gone at midnight. You cannot inventory it, discount it next week, or ship it to another store. Economists call this a perishable asset: airline seats, hotel nights, cruise cabins, and rental cars all expire on a fixed date with zero salvage value.
This is why pricing gets aggressive as DTA approaches zero. A room worth 200 euros three weeks out may be worth 89 euros at 6pm on the night itself, because 89 beats zero.
The value of a data point depends on when it arrived. A booking made 60 days out tells you something different from a booking made 2 days out.
Early bookings are signal about baseline demand. Late bookings are signal about pricing power and market tightness. Blending them without respecting DTA throws away most of the information.
Retail transaction data is mostly a record of what already happened. Travel booking data is a claim on the future. Every reservation on the books today is a promise about a night that has not occurred, and it can still cancel.
That makes travel data probabilistic. "On the books" is not "in the bank."
A number means nothing without its historical curve. "22 rooms sold" is meaningless. "22 rooms sold when we are normally at 12 sold by this point" is a decision. Every observation must be compared to pace: the same date last year, the same day-of-week pattern, the same lead-time position.
The industry standard reference framework comes from STR (part of CoStar), whose metrics like occupancy, ADR, and RevPAR anchor most benchmarking. STR publishes an accessible glossary of hospitality performance terms worth bookmarking.
Three metrics dominate revenue conversations. Define them once and they recur everywhere.
RevPAR is the one that matters most, because it captures the tradeoff. You can raise ADR by pricing high and selling few rooms, or lift occupancy by discounting. RevPAR asks: given every room you had to sell, how much did you earn? It refuses to let you cheat on one lever while ignoring the other.
Because the data is forward-looking, the useful question is rarely "how full are we?" It is "how are we tracking versus where we should be?"
This is pickup: the number of net new reservations gained over a defined window (say, the last 7 days) for a given arrival date. Positive pickup ahead of pace means you can push rate. Weak pickup means demand is soft and holding rate risks selling nothing.
A simple way to see this in data terms:
# rooms on the books for a single arrival date, snapshotted daily
# dta = days to arrival, otb = on the books (cumulative rooms sold)
pace = pace_df.sort_values("dta", ascending=False)
pace["pickup_7d"] = pace["otb"] - pace["otb"].shift(7) # net new in last 7 snapshots
# compare to the same-weekday historical average curve
pace["vs_ly"] = pace["otb"] - pace["otb_last_year"]Two columns, pickup_7d and vs_ly, drive most day-to-day pricing calls. Notice there is no single "sales" number. Everything is relative to a curve.
🎬 [VIDEO: "Hotel Revenue Management Explained" — youtube.com/results?search_query=hotel+revenue+management+booking+pace — a short primer on how pace and pickup feed pricing decisions]
Here is where travel data gets genuinely tricky. A reservation is not final revenue. Cancellations, no-shows, and modifications erode the book.
So hotels forecast net demand, not gross. Two properties with identical rooms on the books can have very different real positions if one holds mostly non-refundable rates and the other holds flexible ones.
This drives overbooking: deliberately confirming more reservations than rooms available, sized to expected cancellations. A property expecting 8 percent attrition on a date might sell to 105 or 106 percent, betting the walk-in count stays near zero. Get the estimate wrong and you either leave rooms empty or "walk" guests to another hotel at your cost. The math is pure applied probability, and it lives or dies on clean cancellation data by segment and lead time.
Vérification des acquis
1. Why can a revenue manager stay calm about a Barcelona hotel being only 22 rooms sold at 60 days out from a June Saturday?
2. What does the x-axis of a booking curve represent?
3. What is the core mental shift required to correctly read booking curves?
4. Select ALL correct answers about how the shape of a booking curve typically behaves.
Sélectionnez toutes les réponses correctes.
5. Select ALL correct answers that explain why two properties can share the same booking-curve axis yet show completely different curves.
Sélectionnez toutes les réponses correctes.
Curves are stable until they are not. The instructive moments are the breaks.
Compression events. A major conference, a concert, or a marathon pulls the whole market's curve forward and up. Demand "compresses" into a few dates. Booking pace steepens weeks earlier than normal, and the disciplined move is to raise rates early rather than get caught selling cheap inventory 40 days out.
Shocks. Weather, strikes, and disruptions can flatten a curve overnight. The 2020 pandemic is the extreme case: booking windows collapsed and lead times shortened dramatically as travelers refused to commit far ahead. Even years later, analysts widely note that booking windows stayed shorter and more volatile than pre-2020 norms. Treat any specific figure here as an estimate, because it varies heavily by market and segment.
The lesson: a booking curve is a forecast scaffold, not a guarantee. It tells you what is normal so you can detect what is not. The value is in the deviation.
Back to Barcelona. The revenue manager sees 22 rooms on the books, ahead of the usual 12 for this lead time. Pickup over the last 7 days is strong. A festival is in town. The historical curve says the steep part is still coming.
Conclusion: this date is running hot. Raise rate, tighten the cheapest rate categories, and protect inventory for late-booking business demand. None of that is visible from the raw occupancy number alone. It is only visible against the curve.