Booking curve forecaster
A flight goes on sale almost a year before it leaves, and the revenue management system has to guess, every step of the way, how many people will end up booking it. Pick a departure and a "today" in its booking window: the chart shows the bookings so far, the curves of similar past flights behind them, and where five classic forecasting methods expect it to finish.
Illustrative numbers: every booking on this page is synthetic, generated in your browser from a fixed random seed. None of it comes from an airline.
Loading…
How the forecast moved as departure approached
Which method wins when
Every departure from 1 October 2025 to 30 September 2026 (365 flights) was forecast at each data collection point, using only what was known on that day, and compared with how it actually ended. MAE is the average miss in bookings; MAPE is the average miss as a share of final bookings.
How it works
Why RM teams forecast by DCP
A revenue management system doesn't watch bookings continuously. It takes snapshots of every future flight at a fixed set of data collection points (DCPs), counted in days before departure: here 330, 180, 120, 90, 60, 45, 30, 21, 14, 7, 3, 1 and 0. They are sparse far out and dense near departure because that is when bookings move fastest and when a wrong decision is hardest to undo. Measuring every flight at the same relative points is what makes a Friday in November comparable with a Friday in September: "bookings at 30 days out" means the same thing for both. It also keeps the data manageable (thousands of flights, each with dozens of fare classes, over nearly a year of sale), and it sets the rhythm of the system, which re-forecasts and re-optimizes seat availability at each DCP. Because what is known changes so much between 330 days and 3 days out, each method is effectively a different model at each DCP, and its accuracy is judged DCP by DCP. More on booking curves and forecasting in Revenue Management 101, Chapter 02.
The simulated route
One daily flight on a fictional route, from 1 September 2024 to 31 December 2026. Each departure's expected demand is a base level times a day-of-week factor, a seasonal curve (leisure peaks in July, business dips in August), a Christmas and New Year effect (more leisure, much less business, leisure booking earlier), 3% yearly growth and random departure-to-departure noise. Two fare families book on different curves: leisure passengers book on average two to three months ahead, with some booking close to a year out, and business passengers mostly in the last two weeks. Each day's bookings are Poisson draws around that curve. The average flight ends with about 135 bookings, from about 105 on a Tuesday to about 165 on a Friday or Sunday. Everything is generated from seed 20260928, so every visitor sees the same data.
The five methods
Notation: b is the bookings on hand today, at DCP d; Bj(d) is what departure j had at the same DCP, and Bj(0) its final bookings. "Similar flights" are the most recent departures on the same day of the week.
- Classical pickup adds the average pickup of the last 8 similar flights that have already departed: F = b + mean(Bj(0) − Bj(d)).
- Advanced pickup splits the remaining window into DCP intervals and, for each one, uses the last 8 similar flights that have already passed that interval, including flights still on sale. It learns from more recent data, which matters when conditions change.
- Multiplicative pickup scales bookings on hand by the ratio seen on the last 8 departed similar flights: F = b × ΣBj(0) / ΣBj(d). Far out, when b is a handful of bookings, the ratio amplifies noise; if the past flights had no bookings yet at that point, it falls back to their average final.
- Exponential smoothing ignores bookings on hand and smooths the final bookings of past flights on the same weekday: S = α·Bj(0) + (1 − α)·S with α = 0.15, forecasting max(S, b).
- Regression fits, at each DCP, B(0) = a + β·B(d) by least squares on the last 26 departed similar flights. Far out β is small and the forecast stays near the historical average; close in β approaches 1 and bookings on hand dominate.
On the chart, each method's path from today to departure follows the shape of the average curve of recent similar flights, stretched to end at its forecast.
Scenarios
Each scenario is anchored to the chosen departure and hits every flight on the route from that date, so the flights the methods learn from are affected too. Demand shock: 40 days before departure, bookings start arriving 45% slower. Schedule change: 40 days before departure the flight is retimed; 12% of existing bookings move away that day, then business bookings halve and leisure bookings drop 15%. Fare sale: a one-week sale starting 42 days before departure, for travel from two weeks later, lifts leisure bookings to about 2.6 times the normal pace, followed by three weeks at 25% below normal. Methods that lean on bookings on hand (multiplicative pickup, regression) react fastest to a shock but also overreact to a sale; smoothing does not react at all until the affected flights have departed.
Reading the accuracy results
Errors shrink as departure approaches because more of the final number is already on the books. The exception is the very first DCP: 330 days before a departure, the most recent flights that have already flown are from roughly the same season a year earlier, so history happens to line up; at 180 days the recent flights are from the opposite season and every history-based method suffers. Real systems handle this with seasonal indices or "same period last year" data far out, which these textbook versions leave out on purpose.
Sources
No external data: bookings are simulated in the page. The methods follow the standard textbook versions, as described in K. Talluri and G. van Ryzin, The Theory and Practice of Revenue Management (Springer, 2004), chapter 9 on forecasting, and compared in L. Weatherford and S. Kimes, "A comparison of forecasting methods for hotel revenue management", International Journal of Forecasting 19(3), 2003 (open version), where pickup methods also came out ahead of pure time-series models.
Limitations
- The data are synthetic, and the parameters (demand levels, curve shapes, seasonality, noise, scenario sizes) are illustrative assumptions, not estimates from any airline.
- Bookings are unconstrained demand: there is no seat limit and no closed fare class, so the censoring problem real forecasts must correct for (unconstraining) doesn't arise.
- No cancellations, no-shows or group bookings, except the moved passengers in the schedule change scenario. Forecasts are for total bookings on one leg, not by fare class or origin–destination.
- The methods are deliberately untuned. Production systems blend several models, adjust for seasons and events, and let analysts override the forecast when they know something the history doesn't.
This is a personal project and isn't affiliated with any airline.