Booking limits
Cheap fares sell first and expensive ones sell last, so a flight left to itself fills up with the cheapest passengers. Revenue management sets a cap on each fare class and keeps the rest for later, higher-paying bookings. Change the fares and the forecast and see how the caps move, then test them on thousands of simulated flights. The second tab does the same for overbooking. This is the hands-on companion to Revenue Management 101.
All fares, demand figures and costs on this page are illustrative assumptions, not any airline's data.
Protection levels and booking limits
A protection level is the number of seats kept for a class and every class above it. The booking limit of a class is what's left: the most seats that class and the cheaper ones below it can sell together. Limits are nested, so a higher class can always take a seat a lower class could have had.
Why protect seats at all: RM 101, chapter 03. How nesting works: chapter 04.
Nested booking limits
Seats open to each classExpected marginal seat revenue
The formulas, with these numbers
Pick a class boundaryMonte Carlo: 2,000 departures
Each simulated departure draws a demand for every class, then bookings arrive cheapest class first. The same draws are replayed under each policy: EMSR applies the booking limits above, first come, first served sells to anyone until the cabin is full, and perfect hindsight knows the demand in advance and fills the cabin from the most expensive fare down, which is the ceiling no real policy can reach.
Revenue per departure
Load factor
Expected cost by authorisation level
The authorisation level is how many bookings the airline accepts for the cabin. Accept too few and no-shows leave seats empty (spoilage). Accept too many and passengers with a ticket are left at the gate (denied boarding). The page assumes demand is strong enough to fill every authorised booking, and each passenger shows up independently.
The critical-fractile rule, with these numbers
It is the same marginal reasoning as Littlewood's rule for fare classes: RM 101, chapter 03.
How many passengers show up
Around the optimum
How it works
Seat allocation
Classes are ranked from the highest fare f1 to the lowest fn. Demand for class i is independent and normal, Di ~ N(μi, σi2). Everything rests on Littlewood's rule: keep one more seat for a higher fare fH as long as fH · P(DH ≥ y) ≥ fL, the lower fare you would turn away. The left-hand side is the expected marginal seat revenue (EMSR) of the y-th seat, and the charts plot it seat by seat.
EMSR-b (Belobaba, 1992) protects classes 1 to j together against class j+1 by merging them into one composite class, with fare f̄ = Σ fiμi / Σ μi and demand N(Σ μi, Σ σi2). The protection level is yj = μ̄ + σ̄ · Φ−1(1 − fj+1 / f̄). EMSR-a (Belobaba, 1987) applies Littlewood's rule to each higher class on its own against class j+1 and adds up the results. Protection levels are rounded to the nearest seat, kept between 0 and the capacity, and never allowed to fall as you go down the classes. The booking limit of class j+1 is the capacity minus yj; the top class can sell the whole cabin.
Monte Carlo: 2,000 departures, each with a fresh demand draw per class (rounded, and floored at zero). Bookings arrive strictly from the cheapest class to the most expensive, which is the textbook assumption behind EMSR and the case where control matters most. All policies see the same draws. The random generator is seeded, so the page opens on the same results every time; "Run 2,000 new departures" changes the seed.
Overbooking
With A bookings accepted and a show-up rate p, the number of passengers at the gate is binomial, S ~ Bin(A, p). The expected cost is cDB · E[(S − C)+] + csp · E[(C − S)+], where C is the capacity. One more booking is worth accepting while the chance that everyone else leaves a seat free, P(SA ≤ C − 1), is above the critical fractile cDB / (cDB + csp). The page also computes the expected cost for every level and checks that the minimum is where the rule says. With separate business and leisure rates, bookings are split by the business share and show-ups are the sum of two binomials; the page then takes the level with the lowest expected cost directly.
Sources
- Littlewood, K. (1972), "Forecasting and control of passenger bookings", AGIFORS Symposium; reprinted in the Journal of Revenue and Pricing Management 4, 2005.
- Belobaba, P. (1987), Air travel demand and airline seat inventory management, PhD thesis, MIT (EMSR-a); Belobaba, P. (1989), "Application of a probabilistic decision model to airline seat inventory control", Operations Research 37(2); Belobaba, P. (1992), "Optimal vs. heuristic methods for nested seat allocation", AGIFORS Reservations and Yield Management Study Group (EMSR-b).
- Talluri, K. and van Ryzin, G. (2004), The Theory and Practice of Revenue Management, Springer: chapter 2 (single-resource capacity control) and chapter 4 (overbooking).
- Denied boarding costs, for scale: in the US, involuntary denied boarding compensation is 200% or 400% of the one-way fare, capped at $1,075 and $2,150 (14 CFR 250.5, as amended in October 2024, checked September 2026). In Canada the minimum for large airlines is CA$900, CA$1,800 or CA$2,400 depending on the delay (Canadian Transportation Agency guide, updated February 2026). Most passengers who give up a seat are volunteers paid less than that, so the $900 default is an assumption, not a figure for any airline. US denied boarding counts are published in the DOT's Passengers Denied Confirmed Space report.
- Fares, for scale: the US average domestic itinerary fare was $387 in 2025 (BTS). The six example fares are invented around that level.
Limitations
- Demand in each class is independent of what else is open. Real passengers buy down to a cheaper class when it's available, which EMSR ignores; see RM 101, chapter 05.
- One flight leg, one pass. Real systems re-optimise many times before departure, forecast from unconstrained history, and control whole itineraries rather than single legs (chapter 06).
- Strict low-before-high arrivals flatter EMSR against first come, first served. With mixed arrival orders the gap is smaller.
- No cancellations, group bookings or upgrades, and overbooking is modelled separately from seat allocation. In practice the two are combined by setting booking limits on a virtual capacity above the physical one.
- The overbooking model treats every denied passenger as costing the same and every no-show as independent. Families and groups tend to no-show together, which widens the spread and argues for a lower authorisation level.
This is a personal project and isn't affiliated with any airline.