# Revenue Management Concept Card: [Capacity, property or course]

> A concept card for the revenue management sessions of a second-year operations, supply chain or pricing elective:
> protecting capacity for late, high-paying customers across many fare classes with the expected marginal seat
> revenue heuristics (Belobaba 1987, 1989) in their EMSR-b form,
> overbooking against no-shows (Beckmann 1958, Rothstein 1971), bid prices for multi-night or multi-leg products, the
> metrics revenue managers report, and the fairness limits of price discrimination. It is for MBA students in an
> elective and for managers in hotels, airlines, events, car rental, healthcare scheduling and any business that sells
> fixed, perishable capacity. It builds on mba/mba-pricing-card, whose two-class Littlewood rule it extends without
> re-teaching, and on mba/mba-inventory-card for the newsvendor logic behind overbooking. Source basis: Littlewood
> (1972), Belobaba (1987, 1989), Brumelle and McGill (1993), Beckmann (1958), Rothstein (1971), Gallego and van Ryzin
> (1994), Smith, Leimkuhler and Darrow (1992), Kimes (1989) and Kahneman, Knetsch and Thaler (1986), written up in
> original words with fictional data (Northfield Outdoor Co., Corvane Robotics and Tallow Creek Medical Center are
> invented). Replace every [bracketed] value and every row marked *Example*. This is a learning aid, not legal or
> consumer-law advice.

<!--
Guidance: How to use this template
- Read the Littlewood section of mba/mba-pricing-card first. This card keeps its notation (high fare p_H, low fare
  p_L, protection level y, high-fare demand D_H) and generalises it to many classes, overbooking and networks.
- Revenue management decides which requests to accept at prices already set. Setting the prices themselves is in
  mba/mba-pricing-card and mba/mba-demand-elasticity-card.
- Rebuild Worked example A in a spreadsheet with the Excel formulas shown, fill every [ ] in Worked example B, solve
  Exercise C on paper, then check the answer key.
- Legal checks on price discrimination and personalised prices are in mba/mba-pricing-card; this card only adds the
  fairness view.
- Related templates: mba/mba-pricing-card, mba/mba-demand-elasticity-card, mba/mba-inventory-card,
  mba/mba-queueing-card, mba/mba-operations-guide, mba/mba-supply-chain-guide, mba/mba-sourcing-procurement-card,
  mba/mba-decision-trees-card, mba/mba-customer-lifetime-value-card, mba/mba-ai-strategy-card,
  mba/mba-marketing-experiments-card, mba/mba-formula-sheet, mba/mba-glossary, mba/mba-error-log,
  academic/stats-distributions-sheet, academic/stats-probability-basics.
-->

## Document control

<!-- Guidance: Record the booking data period and the forecast version. Demand by class drifts with seasons, events and competitors' prices, so protection levels expire quickly. -->

| Field | Value |
|---|---|
| Course or project | [Elective, revenue management sessions / property or route review] |
| Learner or analyst | [Your name] |
| Capacity analysed | [Northfield lodge, 80 rooms, Saturday nights (fictional) / your resource] |
| Fare or rate classes | [Flexible, Advance, Package, Early saver / your classes] |
| Demand data and period | [Booking history YYYY-MM-DD to YYYY-MM-DD, unconstrained forecast version] |
| No-show and cancellation data | [Show-up rate by class and day, period] |
| Tool | [Excel with Solver / Google Sheets / Python with scipy] |
| Reviewed by | [Study group / tutor / revenue manager] |
| Last updated | YYYY-MM-DD |
| Version | [0.1] |

## Contents

- [When to use it](#when-to-use-it)
- [The idea in plain language](#the-idea-in-plain-language)
- [Formulas and notation](#formulas-and-notation)
- [Assumptions and limits](#assumptions-and-limits)
- [How managers use it](#how-managers-use-it)
- [The revenue management cycle](#the-revenue-management-cycle)
- [Worked example A (fully solved): Northfield Outdoor Co. lodge](#worked-example-a-fully-solved-northfield-outdoor-co-lodge)
- [Worked example B (half solved): three-class guided course](#worked-example-b-half-solved-three-class-guided-course)
- [Exercise C (unsolved): Tallow Creek Medical Center MRI slots](#exercise-c-unsolved-tallow-creek-medical-center-mri-slots)
- [Connections to other cards](#connections-to-other-cards)
- [Common mistakes and misconceptions](#common-mistakes-and-misconceptions)
- [Self-test](#self-test)
- [My notes and next steps](#my-notes-and-next-steps)
- [Sources and further reading](#sources-and-further-reading)
- [Answer key](#answer-key)
- [Revision history](#revision-history)
- [Standard and licence note](#standard-and-licence-note)

## When to use it

<!-- Guidance: Check the four conditions first. If capacity is not fixed or the product does not perish, use inventory or pricing models instead. -->

**One-sentence rule:** use revenue management when capacity is **fixed**, the product **perishes** at a known date,
customers **book in advance** and can be **segmented** into groups willing to pay different prices (Kimes 1989).

| Question | Tool on this card | Key output |
|---|---|---|
| How many units to hold back for a higher fare, with two classes | Littlewood (1972), see mba/mba-pricing-card | Protection level $y$ |
| The same with three or more nested classes | EMSR heuristics (Belobaba 1987, 1989), EMSR-b form as in Talluri and van Ryzin (2004) | Protection levels and booking limits per class |
| How many reservations to accept when some customers do not show | Overbooking (Beckmann 1958, Rothstein 1971) | Booking cap above capacity |
| Whether to accept a request that uses several resources (nights, legs) | Bid prices from a linear programme | Accept if fare is at least the sum of bid prices |
| How to set prices over time instead of limits | Dynamic pricing (Gallego and van Ryzin 1994) | Price path by time and remaining capacity |
| How well the system is doing | Occupancy, ADR, RevPAR, revenue opportunity | Monthly report |

| Use when | Do not use alone when |
|---|---|
| Demand regularly exceeds capacity on some dates | Capacity is rarely full: focus on demand generation and pricing |
| Low-fare customers book before high-fare customers | Arrival order is mixed: simple protection levels lose value; use bid prices or dynamic pricing |
| Fare classes have fences customers respect (advance purchase, non-refundable) | Customers can easily buy down to a lower class |
| History gives demand by class, unconstrained by past limits | Data show only bookings accepted, not requests refused: unconstrain first |

## The idea in plain language

<!-- Guidance: Read this aloud. If you can explain why selling the last room to the first customer can lose money, the rest is arithmetic. -->

**Capacity perishes.** An empty room on Saturday night cannot be sold on Sunday. Selling early to price-sensitive
customers fills capacity, but every unit sold early at a low price is a unit that cannot be sold later to a customer
who would have paid more. Revenue management decides how much of the capacity to keep back.

**From two classes to many.** Littlewood's rule (mba/mba-pricing-card) says: keep one more unit for the high fare as
long as the chance of selling it at that fare, times the high fare, beats the certain low fare. With many classes, the
exact optimum for nested limits exists (Brumelle and McGill 1993) but is harder to compute and explain. Belobaba's
**expected marginal seat revenue** heuristics make it practical; the EMSR-b variant, set out in Talluri and van Ryzin (2004), is the form commonly taught. In EMSR-b, all classes above a given
class are pooled into one "virtual" class with the combined demand and a demand-weighted average fare, and Littlewood's
rule is applied between that virtual class and the next class down. Limits are **nested**: a higher class can always
take a unit a lower class could have had, never the reverse.

**Overbooking.** Some customers who book do not show up. If the lodge accepts exactly 80 bookings for 80 rooms, some
rooms stay empty. Accepting more bookings fills them, but if more guests arrive than there are rooms, the lodge must
"walk" the extra guests to another hotel and compensate them. The best booking cap balances the expected revenue of
one more booking against the expected cost of one more walked guest: a newsvendor problem, with the same marginal
logic as in mba/mba-inventory-card.

**Networks.** A two-night package uses a Friday room and a Saturday room. Accepting it might block a high-paying
Saturday-only guest. Each night gets a **bid price**, the value of its last unit of capacity; a request is accepted only
if its fare covers the bid prices of everything it uses. Bid prices come from the shadow prices of a linear programme
that allocates expected demand to capacity.

**Prices instead of limits.** Modern systems often change the price rather than closing classes. Gallego and van Ryzin
(1994) showed that the optimal price rises as capacity runs short and falls as time runs out, and that a well-chosen
fixed price is close to optimal when demand is large.

**Customers judge fairness.** Kahneman, Knetsch and Thaler (1986) found that people accept price changes that pass on
higher costs but resent firms exploiting a temporary surge in demand. Revenue managers who ignore this lose goodwill,
and some practices raise legal questions (see the legal checks in mba/mba-pricing-card).

## Formulas and notation

<!-- Guidance: Classes are ordered from highest fare (class 1) to lowest (class n). Protection level y_j protects capacity for classes 1 to j together. -->

**Littlewood (two classes, from mba/mba-pricing-card):**

$$
P(D_H > y) = \frac{p_L}{p_H}, \qquad y = F^{-1}_{D_H}\!\left(1 - \frac{p_L}{p_H}\right)
$$

**EMSR-b** for classes $1, \dots, n$ with $p_1 > p_2 > \dots > p_n$, independent normal demands $D_i \sim N(\mu_i, \sigma_i^2)$:

$$
\mu_{1:j} = \sum_{i=1}^{j}\mu_i, \qquad \sigma_{1:j} = \sqrt{\sum_{i=1}^{j}\sigma_i^2}, \qquad
\bar{p}_{1:j} = \frac{\sum_{i=1}^{j} p_i\,\mu_i}{\mu_{1:j}}
$$

$$
y_j = \mu_{1:j} + \sigma_{1:j}\,\Phi^{-1}\!\left(1 - \frac{p_{j+1}}{\bar{p}_{1:j}}\right), \qquad
\text{Booking limit}_{j+1} = C - y_j
$$

**Overbooking** with capacity $C$, booking cap $B$, independent show-up probability $q$, show-ups
$S_B \sim \text{Binomial}(B, q)$, revenue per occupied unit $r$ and cost per denied customer $w$:

$$
E[\pi(B)] = r\,E[\min(S_B, C)] - w\,E[(S_B - C)^+], \qquad E[\min(S_B, C)] = Bq - E[(S_B - C)^+]
$$

$$
\text{Accept booking } B+1 \text{ if } P(S_B \le C - 1) > \frac{w}{r + w}
$$

**Bid prices** (deterministic linear programme) for products $k$ with fare $f_k$, expected demand $\mu_k$ and
resource use $a_{lk}$ on resource $l$ with capacity $C_l$:

$$
\max_x \sum_k f_k\,x_k \quad \text{s.t.} \quad \sum_k a_{lk}\,x_k \le C_l, \quad 0 \le x_k \le \mu_k
$$

The bid price $\pi_l$ is the shadow price of capacity constraint $l$. Accept a request for product $k$ if
$f_k \ge \sum_l a_{lk}\,\pi_l$.

**Metrics:** occupancy $= \text{units sold}/C$; average daily rate ADR $= \text{revenue}/\text{units sold}$; revenue per
available unit RevPAR $= \text{revenue}/C = \text{occupancy} \times \text{ADR}$; revenue opportunity captured
$= (R - R_{FCFS})/(R_{\text{perfect}} - R_{FCFS})$.

| Symbol | Meaning | Unit |
|---|---|---|
| $p_j$, $p_H$, $p_L$ | Fare of class $j$; high and low fare in the two-class case | currency per unit |
| $\mu_j$, $\sigma_j$ | Mean and standard deviation of class $j$ demand | units |
| $\bar{p}_{1:j}$ | Demand-weighted average fare of classes 1 to $j$ | currency per unit |
| $y_j$ | Protection level for classes 1 to $j$ together | units |
| $C$ | Capacity | units |
| $B$, $q$ | Booking cap, show-up probability | bookings, probability |
| $S_B$ | Number of customers who show up out of $B$ bookings | customers |
| $r$, $w$ | Revenue per occupied unit, cost per denied customer | currency |
| $f_k$, $x_k$, $a_{lk}$ | Fare of product $k$, accepted quantity, units of resource $l$ it uses | currency, units, units |
| $\pi_l$ | Bid price (shadow price) of resource $l$ | currency per unit |
| $\Phi^{-1}$ | Standard normal quantile | none |

**Excel equivalents.** Protection level: `=NORM.INV(1-p_next/p_bar, mu_agg, sd_agg)`. Show-up probabilities:
`=BINOM.DIST(C-1,B,q,TRUE)`. Bid prices: Solver (Simplex LP) with the Sensitivity Report, column "Shadow Price".

## Assumptions and limits

<!-- Guidance: Name the assumption that fails first at your property or route. Buy-down and unconstraining are the usual culprits. -->

| Element | Assumption | What breaks it | What to do |
|---|---|---|---|
| Class demands | Independent, normal, known | Demand in one class depends on which classes are open (buy-down) | Use choice-based models or fewer, better-fenced classes |
| Arrival order | Low fares book first, high fares last | Mixed arrivals, last-minute deals | Re-optimise often; use bid prices or dynamic pricing |
| EMSR-b | A heuristic | Not exactly optimal for nested classes | Fine in practice; compare with simulation (A1) |
| Demand data | Unconstrained (all requests, including those refused) | History shows only accepted bookings | Unconstrain with statistical methods before forecasting |
| Overbooking | Show-ups independent with one probability; enough demand to fill the cap | Groups, weather, events make no-shows correlated | Use segment show-up rates; cap by group; stress-test |
| Walk cost | A single number | Brand damage, loyalty members, regulation of denied boarding | Set a higher cost for loyal customers; check rules that apply |
| Bid prices | Deterministic LP with expected demand | Ignores variability; prices are static between updates | Re-solve often; use randomised or dynamic programming versions |

## How managers use it

<!-- Guidance: Connect each output to a control someone sets in a reservation system: a booking limit, an overbooking level, a bid price, a price. -->

- **Inventory controls.** Revenue managers set booking limits by class and date in the reservation system and update
  them as bookings arrive. Systems re-optimise nightly; humans handle events the history does not show.
- **Overbooking levels.** Set per date and room type from show-up history, with a cap on the probability of walking
  anyone. Front-desk teams need a walk procedure agreed in advance with nearby hotels.
- **Group and package decisions.** Bid prices answer "should we accept this group at this rate?" by comparing the
  rate with the displaced value of the nights it uses.
- **Price and fence design.** Advance-purchase discounts, minimum-stay rules and non-refundable rates are fences that
  keep high-paying customers from buying down. Designing them is joint work with pricing (mba/mba-pricing-card).
- **Performance reporting.** RevPAR, ADR and occupancy against a competitive set; revenue opportunity captured against
  first-come first-served and perfect hindsight.
- **History.** Smith, Leimkuhler and Darrow (1992) describe how a large US airline built yield management after
  deregulation and credited it with substantial extra revenue; hotels, car rental and events followed (Kimes 1989).
- **Beyond travel.** Healthcare schedules use overbooking for no-shows, cloud providers sell spare capacity at lower
  prices, and sports and concerts price seats dynamically.

## The revenue management cycle

<!-- Guidance: Use the diagram to explain a revenue management system to a non-specialist. Each box is a team or a system module. -->

A revenue management system runs a loop for each future date: collect booking data, forecast unconstrained demand by
class, optimise controls, apply them in the reservation and pricing systems, and monitor results against forecast.

```mermaid
flowchart LR
  A["Booking and cancellation data"] --> B["Unconstrain and forecast demand by class and date"]
  B --> C["Optimise: protection levels, overbooking, bid prices"]
  C --> D["Controls in reservation and pricing systems"]
  D --> E["Customers book, cancel, show or no-show"]
  E --> A
  C --> F{"Unusual date or event?"}
  F -->|"Yes"| G["Analyst overrides with a written reason"]
  F -->|"No"| D
  G --> D
  E --> H["Monitor: occupancy, ADR, RevPAR, revenue opportunity"]
  H --> B
```

## Worked example A (fully solved): Northfield Outdoor Co. lodge

<!-- Guidance: Rebuild each part in a spreadsheet. The numbers come from a re-runnable script; protection levels are rounded to the nearest room. -->

**Situation (*Example*, fictional).** Northfield Outdoor Co. operates an 80-room lodge at its mountain adventure centre.
On peak Saturdays it sells four rate classes. Lower classes book first; demand per class is roughly normal and
independent:

| Class | Rate (USD) | Mean demand | Standard deviation |
|---|---|---|---|
| 1 Flexible | 280 | 18 | 7 |
| 2 Advance purchase | 210 | 25 | 8 |
| 3 Package with guided course | 165 | 30 | 10 |
| 4 Early saver | 120 | 40 | 12 |

Total mean demand is 113 rooms for 80 rooms.

**A1. EMSR-b protection levels and booking limits.**

| Step | Classes pooled | $\mu_{1:j}$ | $\sigma_{1:j}$ | $\bar{p}_{1:j}$ | Ratio $p_{j+1}/\bar{p}_{1:j}$ | $z$ | $y_j$ | Booking limit for class $j+1$ | Excel ($y_j$) |
|---|---|---|---|---|---|---|---|---|---|
| $y_1$ | 1 | 18 | 7.0000 | 280.0000 | 0.7500 | -0.6745 | 13.28, so 13 | 80 - 13 = 67 | `=NORM.INV(1-210/280,18,7)` |
| $y_2$ | 1 and 2 | 43 | 10.6301 | 239.3023 | 0.6895 | -0.4944 | 37.74, so 38 | 80 - 38 = 42 | `=NORM.INV(1-165/239.3023,43,SQRT(7^2+8^2))` |
| $y_3$ | 1, 2 and 3 | 73 | 14.5945 | 208.7671 | 0.5748 | -0.1886 | 70.25, so 70 | 80 - 70 = 10 | `=NORM.INV(1-120/208.7671,73,SQRT(7^2+8^2+10^2))` |

The weighted fare for classes 1 and 2 is $(280 \times 18 + 210 \times 25)/43 = 239.30$ (`=(280*18+210*25)/43`). The step
$y_1$ is exactly Littlewood's two-class rule. Read the limits as nested: Early saver may sell at most 10 rooms; Early
saver and Package together at most 42; classes 2 to 4 together at most 67; Flexible can take any room still available.
The older EMSR-a heuristic, which adds pairwise Littlewood protections instead of pooling, gives $y_2$ = 35.09 and
$y_3$ = 66.77, so it protects 3 to 4 rooms less in this example. The two heuristics can differ by several rooms;
check the one you use against a simulation like the one below.

**Does it pay?** A simulation of 200,000 Saturdays with low classes booking first (seed fixed in the script):

| Policy | Mean revenue (USD) | Rooms sold | Occupancy | ADR (USD) | RevPAR (USD) |
|---|---|---|---|---|---|
| First come, first served (no limits) | 12,009.45 | 79.69 | 99.62% | 150.69 | 150.12 |
| EMSR-b limits (10, 42, 67) | 14,635.82 | 74.81 | 93.51% | 195.65 | 182.95 |
| Perfect hindsight (fill from the top) | 15,910.04 | | | | |

EMSR-b raises revenue by USD 2,626.37 a night (21.87%) and captures 67.33% of the revenue opportunity between first
come, first served and perfect hindsight (`=(14635.82-12009.45)/(15910.04-12009.45)`). Occupancy falls from 99.62% to
93.51%: on some nights rooms held for Flexible guests stay empty. That is the price of protecting high-fare demand,
and the reason occupancy alone is a poor target. The uplift is large here because demand exceeds capacity by 41% and
cheap demand arrives first; on shoulder dates with less demand, the limits rarely bind and the uplift shrinks.

**A2. Overbooking.** Each Saturday booking shows up with probability $q$ = 0.92, independently. An occupied room earns
$r$ = USD 210 on average; walking a guest to another hotel, with transport and compensation, costs $w$ = USD 450.
Critical ratio $w/(r+w) = 450/660 = 0.6818$ (`=450/(210+450)`).

| Booking cap $B$ | $E[\text{occupied}]$ | $E[\text{walked}]$ | $E[\text{profit}]$ (USD) | $P(S_B \le 79)$ | $P(\text{any walk})$ |
|---|---|---|---|---|---|
| 80 | 73.6000 | 0.0000 | 15,456.00 | 0.9987 | 0.0000 |
| 82 | 75.4302 | 0.0098 | 15,835.93 | 0.9643 | 0.0087 |
| 84 | 77.1517 | 0.1283 | 16,144.11 | 0.8114 | 0.0884 |
| 85 | 77.8982 | 0.3018 | 16,222.81 | 0.6832 | 0.1806 |
| **86** | **78.5267** | **0.5933** | **16,223.64** | 0.5378 | 0.3059 |
| 87 | 79.0215 | 1.0185 | 16,136.22 | 0.3950 | 0.4497 |
| 88 | 79.3849 | 1.5751 | 15,962.05 | 0.2707 | 0.5926 |
| 90 | 79.7936 | 3.0064 | 15,403.77 | 0.1043 | 0.8179 |

Excel for $B$ = 86: $P(S_{86} \le 79)$ `=BINOM.DIST(79,86,0.92,TRUE)`; expected walked
`=SUMPRODUCT(((ROW(1:87)-1)>80)*((ROW(1:87)-1)-80),BINOM.DIST(ROW(1:87)-1,86,0.92,FALSE))`; expected occupied
`=86*0.92-0.5933`; expected profit `=210*78.5267-450*0.5933`.

The marginal rule agrees with the table: at $B$ = 85, $P(S_{85} \le 79) = 0.6832 > 0.6818$, so the 86th booking is
worth taking; at $B$ = 86 the probability is 0.5378, below the ratio, so stop. Overbooking by 6 rooms adds USD 767.64
a night against no overbooking (`=16223.64-15456`). The curve is very flat between 85 and 86, and at 86 the lodge walks
at least one guest on 30.59% of peak Saturdays. Many properties cap that probability as a service policy and choose 84
or 85: the expected profit given up is small (USD 79.53 at 84), and fewer guests are walked. In practice the cap also
depends on cancellations, which this example leaves out.

```vega-lite
{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "description": "Northfield lodge: expected nightly profit by booking cap, show-up probability 0.92, 80 rooms (fictional, computed)",
  "width": 380,
  "height": 220,
  "data": {"values": [
    {"B": 80, "profit": 15456.00}, {"B": 81, "profit": 15648.43}, {"B": 82, "profit": 15835.93},
    {"B": 83, "profit": 16007.48}, {"B": 84, "profit": 16144.11}, {"B": 85, "profit": 16222.81},
    {"B": 86, "profit": 16223.64}, {"B": 87, "profit": 16136.22}, {"B": 88, "profit": 15962.05},
    {"B": 89, "profit": 15712.42}, {"B": 90, "profit": 15403.77}, {"B": 91, "profit": 15053.08},
    {"B": 92, "profit": 14674.88}, {"B": 93, "profit": 14279.99}, {"B": 94, "profit": 13875.66},
    {"B": 95, "profit": 13466.30}
  ]},
  "mark": {"type": "line", "point": true},
  "encoding": {
    "x": {"field": "B", "type": "quantitative", "title": "Booking cap B (rooms booked)", "scale": {"domain": [80, 95]}},
    "y": {"field": "profit", "type": "quantitative", "title": "Expected profit per night (USD)", "scale": {"zero": false}}
  }
}
```

**A3. Bid prices for a weekend.** The lodge sells three products on a peak weekend with 80 rooms each night:

| Product | Rate (USD) | Mean demand | Uses |
|---|---|---|---|
| Friday only | 190 | 50 | Friday |
| Saturday only | 230 | 70 | Saturday |
| Two-night package | 380 | 40 | Friday and Saturday |

The deterministic linear programme (Excel Solver, Simplex LP) accepts 50 Friday-only, 50 Saturday-only and 30 packages,
filling both nights, for USD 32,400 of expected revenue (`=50*190+50*230+30*380`). The Sensitivity Report gives shadow
prices of **USD 150 for Friday** and **USD 230 for Saturday**. Why: Saturday-only requests are only partly accepted, so a
Saturday room is worth exactly their rate, 230; packages are also partly accepted, so $\pi_F + \pi_S = 380$ and
$\pi_F = 150$; Friday-only requests are all accepted because their rate, 190, exceeds 150.

Decision rule: accept a request if its rate covers the bid prices of the nights it uses.

| Request *(Example)* | Rate | Bid prices used | Decision |
|---|---|---|---|
| Two-night package on promotion | 360 | 150 + 230 = 380 | Reject |
| Friday only, last-minute | 160 | 150 | Accept |
| Saturday only, corporate rate | 220 | 230 | Reject |

A rule based on rate classes alone would accept the USD 360 package, because it pays more than any single-night rate.
The bid price shows that it displaces a Friday guest at 150 and a Saturday guest at 230. Bid prices change as bookings
arrive; systems re-solve the programme often.

## Worked example B (half solved): three-class guided course

<!-- Guidance: Fill each [ ] and check that y_1 equals the Littlewood answer. Pitfall: using the simple average fare instead of the demand-weighted average. -->

**Situation (*Example*, fictional).** In a later season Northfield sells its 60-place guided mountain course (the
two-class example in mba/mba-pricing-card) in three classes that book from the lowest up: Last-minute at USD 400
($\mu$ = 14, $\sigma$ = 5), Standard at USD 320 ($\mu$ = 18, $\sigma$ = 6) and Early bird at USD 250 ($\mu$ = 30,
$\sigma$ = 9).

| Step | $\mu_{1:j}$ | $\sigma_{1:j}$ | $\bar{p}_{1:j}$ | Ratio | $z$ | $y_j$ | Booking limit |
|---|---|---|---|---|---|---|---|
| $y_1$ | 14 | 5.0000 | 400.0000 | 0.8000 | -0.8416 | 9.79, so 10 | Standard and Early bird: 60 - 10 = 50 |
| $y_2$ | [ ] | [ ] | [ ] | [ ] | [ ] | [ ] | Early bird: [ ] |

1. Fill the $y_2$ row. Excel: `=NORM.INV(1-250/[p_bar],[mu],SQRT(5^2+6^2))`.
2. State the nested limits in words.
3. Why does the protection for Last-minute alone (10) not depend on Early-bird demand?
4. The course team proposes to drop Standard and keep two classes. Which information would you need to estimate what
   happens to Standard customers?

## Exercise C (unsolved): Tallow Creek Medical Center MRI slots

<!-- Guidance: Solve on paper, then discuss part (d) with your group. Overbooking in healthcare carries ethical duties that hotel overbooking does not. -->

**Situation (*Example*, fictional).** Tallow Creek Medical Center's outpatient MRI unit has 20 scan slots a day. Each
booked patient shows up with probability 0.85, independently. A completed scan contributes USD 600. When more patients
arrive than slots, the extra patients are rebooked for another day, at a cost the hospital estimates at USD 250 each
(staff time, a transport voucher, goodwill).

a. Compute the critical ratio for adding one more booking.
b. Using `=BINOM.DIST(19,B,0.85,TRUE)` for $B$ = 20 to 26, find the booking cap that maximises expected value.
c. For your cap, compute the expected number of patients rebooked per day and the probability that at least one
   patient is rebooked.
d. Who bears the cost of overbooking here, and how would you change the policy for patients who travel far, have
   mobility needs or face a time-critical diagnosis? Which data would you monitor to detect unfair effects (see
   mba/mba-ai-strategy-card on no-show prediction)?
e. Name two actions that reduce no-shows directly, so less overbooking is needed.

## Connections to other cards

<!-- Guidance: Revenue management sits between pricing and operations; use the links to see which card answers which part of a capacity question. -->

| Card or template | Connection |
|---|---|
| mba/mba-pricing-card | Littlewood two-class rule, price discrimination, legal checks; read it first |
| mba/mba-demand-elasticity-card | Price response behind class demands and dynamic pricing |
| mba/mba-inventory-card | Newsvendor logic used in overbooking |
| mba/mba-queueing-card | Capacity and waiting when demand is accepted |
| mba/mba-sourcing-procurement-card | The supply-side mirror: buying capacity and contracts |
| mba/mba-decision-trees-card | Valuing accept-or-reject decisions under uncertainty |
| mba/mba-customer-lifetime-value-card | Why walking a loyal customer costs more than one night |
| mba/mba-marketing-experiments-card | Testing fences and prices before rolling them out |
| mba/mba-ai-strategy-card | Prediction of no-shows and the judgment it still needs |
| mba/mba-operations-guide, mba/mba-supply-chain-guide | Where this card sits in the core and the elective |

## Common mistakes and misconceptions

<!-- Guidance: Check your analysis against this list before presenting it. -->

1. **Maximising occupancy.** A full lodge at low rates can earn less than a 93% full lodge with protected high-fare
   rooms (A1).
2. **Using booked demand as the forecast.** History shows only accepted bookings; demand refused when a class was
   closed is missing. Unconstrain before forecasting.
3. **Averaging fares without weights in EMSR-b.** The pooled fare is weighted by mean demand.
4. **Treating booking limits as separate buckets.** Limits are nested: higher classes can always use lower-class
   capacity.
5. **Overbooking with one show-up rate for all.** Groups, loyalty members and non-refundable bookings show up at
   different rates.
6. **Forgetting the walk cost for loyal customers.** Walking a frequent guest can cost far more than one night's rate.
7. **Accepting a package because it beats every single-night rate.** Compare with the sum of bid prices (A3).
8. **Weak fences.** If business travellers can buy the advance-purchase rate, protection levels lose their value.
9. **Ignoring fairness.** Surge pricing on essentials or after a disaster damages trust and can attract regulators
   (Kahneman, Knetsch and Thaler 1986; mba/mba-pricing-card).
10. **Copying airline overbooking into healthcare.** The costs fall on patients and are not only financial.

## Self-test

<!-- Guidance: Answer without looking back, then check the answer key. -->

1. List the four conditions under which revenue management is most valuable.
2. State Littlewood's rule in words.
3. In EMSR-b, how are classes 1 to $j$ combined into one virtual class?
4. Why is $y_1$ in EMSR-b the same as Littlewood's protection level?
5. What does "nested" mean for booking limits?
6. Derive the overbooking rule $P(S_B \le C-1) > w/(r+w)$ from the marginal value of one more booking.
7. In A2, the walk cost rises to USD 660. What is the new critical ratio, and does the cap rise or fall?
8. What is a bid price, and where do you find it in Excel?
9. Why does EMSR-b lower occupancy in A1 but raise revenue?
10. Name one way dynamic pricing (Gallego and van Ryzin 1994) differs from booking limits.
11. Give two practices customers tend to see as unfair, and one they tend to accept.
12. Define RevPAR and show that it equals occupancy times ADR.

## My notes and next steps

<!-- Guidance: Write what you will do in your next case or project, not a summary. -->

| Item | My note |
|---|---|
| A capacity in my work or case that fits the four conditions | [ ] |
| The weakest fence in my example | [ ] |
| A data gap I would fix first (unconstraining, show-up rates) | [ ] |
| Questions for my study group or tutor | [ ] |
| Next card to read | [mba/mba-demand-elasticity-card / mba/mba-queueing-card] |

## Sources and further reading

<!-- Guidance: Belobaba (1989) and Smith, Leimkuhler and Darrow (1992) are readable accounts of practice; textbooks are named only. -->

- Littlewood, K. (1972). Forecasting and control of passenger bookings. *AGIFORS Symposium Proceedings*, 12, 95–117.
  Reprinted (2005) in *Journal of Revenue and Pricing Management*, 4(2), 111–123.
- Belobaba, P. P. (1987). Airline yield management: an overview of seat inventory control. *Transportation Science*,
  21(2), 63–73.
- Belobaba, P. P. (1989). Application of a probabilistic decision model to airline seat inventory control. *Operations
  Research*, 37(2), 183–197.
- Brumelle, S. L., and McGill, J. I. (1993). Airline seat allocation with multiple nested fare classes. *Operations
  Research*, 41(1), 127–137.
- Beckmann, M. J. (1958). Decision and team problems in airline reservations. *Econometrica*, 26(1).
- Rothstein, M. (1971). An airline overbooking model. *Transportation Science*, 5(2), 180–192.
- Gallego, G., and van Ryzin, G. (1994). Optimal dynamic pricing of inventories with stochastic demand over finite
  horizons. *Management Science*, 40(8), 999–1020.
- Smith, B. C., Leimkuhler, J. F., and Darrow, R. M. (1992). Yield management at American Airlines. *Interfaces*, 22(1),
  8–31.
- Kimes, S. E. (1989). Yield management: a tool for capacity-constrained service firms. *Journal of Operations
  Management*, 8(4), 348–363.
- Kahneman, D., Knetsch, J. L., and Thaler, R. H. (1986). Fairness as a constraint on profit seeking: entitlements in
  the market. *American Economic Review*, 76(4), 728–741.
- Talluri, K. T., and van Ryzin, G. J. (2004). *The Theory and Practice of Revenue Management*. Springer.
- Textbooks (further reading, by name only): Phillips, *Pricing and Revenue Optimization*; Cross, *Revenue Management:
  Hard-Core Tactics for Market Domination*; Cachon and Terwiesch, *Matching Supply with Demand*.
- Open resource: OpenStax, *Principles of Economics* (3rd edition), chapter on monopoly and price discrimination,
  openstax.org (check the licence shown on the book page).

## Answer key

<!-- Guidance: Check only after writing your own answers; record misses in mba/mba-error-log. -->

**Worked example B.**
1. $\mu_{1:2}$ = 32, $\sigma_{1:2}$ = 7.8102 (`=SQRT(5^2+6^2)`), $\bar{p}_{1:2} = (400 \times 14 + 320 \times 18)/32$ =
   355.0000, ratio $250/355$ = 0.7042, $z$ = -0.5366, $y_2$ = 27.81, so 28; Early bird limit 60 - 28 = 32.
2. Early bird may sell at most 32 places; Early bird and Standard together at most 50; Last-minute can take any place
   still open.
3. $y_1$ compares Last-minute demand with the Standard fare only: it answers "should a Standard customer get this
   place?". Early-bird demand matters for $y_2$.
4. How many Standard customers would buy up to Last-minute and how many would buy down to Early bird or leave (a
   choice model, or a test with mba/mba-marketing-experiments-card).

**Exercise C.**
a. $250/(600 + 250)$ = 0.2941.
b. Expected values: 20 bookings 10,200.00; 21: 10,682.00; 22: 11,079.98; 23: 11,345.65; 24: 11,465.77; 25: 11,460.35;
   26: 11,364.54. Best cap 24. Marginal check: $P(S_{23} \le 19)$ = 0.4604 > 0.2941 (add the 24th);
   $P(S_{24} \le 19)$ = 0.2866 < 0.2941 (stop).
c. At 24: 0.9109 patients rebooked a day on average; at least one rebooked on 50.49% of days.
d. Patients bear the inconvenience; for some it means a delayed diagnosis. Options: do not overbook slots for
   time-critical cases, exclude or protect patients with long journeys or mobility needs, cap the probability of
   rebooking anyone, and monitor rebooking rates by neighbourhood, age and condition. A cap of 22 or 23 gives up
   USD 120 to 386 of expected value a day (`=11465.77-11345.65`, `=11465.77-11079.98`) for far fewer rebooked patients.
e. Reminder calls or messages, easy rescheduling, transport help, and booking closer to the scan date.

**Self-test.**
1. Fixed capacity, perishable product, advance booking, segmentable customers with different willingness to pay.
2. Protect one more unit for the high fare while the probability of selling it at the high fare times that fare
   exceeds the low fare.
3. Add their mean demands, add their variances, and use the demand-weighted average fare.
4. With $j$ = 1 the pool is class 1 alone, so the formula reduces to Littlewood with $p_H = p_1$ and $p_L = p_2$.
5. A higher class can take any unit available to a lower class; a booking limit for class $j$ caps classes $j$ to $n$
   together.
6. Booking $B+1$ shows with probability $q$. If it shows and $S_B \le C-1$, it earns $r$; if $S_B \ge C$, it costs $w$.
   Add it if $q[r\,P(S_B \le C-1) - w\,P(S_B \ge C)] > 0$, which rearranges to $P(S_B \le C-1) > w/(r+w)$.
7. $660/870$ = 0.7586. At $B$ = 84, $P(S_{84} \le 79)$ = 0.8114 > 0.7586, so the 85th booking is still taken; at
   $B$ = 85, 0.6832 < 0.7586, so the 86th is not. The cap falls from 86 to 85.
8. The value of the last unit of a resource, the shadow price of its capacity constraint; the "Shadow Price" column of
   Solver's Sensitivity Report.
9. Some rooms held for Flexible guests stay empty, but the rooms that sell are sold at much higher average rates.
10. Dynamic pricing changes the price itself over time and with remaining capacity, instead of opening and closing
    classes at fixed prices.
11. Seen as unfair: raising prices in an emergency or a temporary shortage, cutting wages because labour is easy to
    find. Seen as acceptable: passing on a cost increase.
12. RevPAR = revenue / available units = (units sold / available units) × (revenue / units sold) = occupancy × ADR.

## Revision history

<!-- Guidance: Add a row whenever the forecast, show-up rates or rate structure changes. -->

| Version | Date | Author | Change summary |
|---|---|---|---|
| 0.1 | YYYY-MM-DD | [Your name] | First version from the template |
| 0.2 | YYYY-MM-DD | [Your name] | *Example:* New show-up rates by segment, overbooking cap with walk-probability limit |

## Standard and licence note

Based on the revenue management literature (Beckmann 1958, Rothstein 1971, Littlewood 1972, Belobaba 1987 and 1989,
Kimes 1989, Smith, Leimkuhler and Darrow 1992, Brumelle and McGill 1993, Gallego and van Ryzin 1994, Kahneman, Knetsch
and Thaler 1986). The text, examples and questions are original; no textbook or case text is copied or paraphrased, and
Northfield Outdoor Co., Corvane Robotics and Tallow Creek Medical Center are fictional. The template is independent
and not affiliated with or endorsed by any business school, airline, hotel group, authority or software vendor. Check
the consumer and competition rules that apply to your prices before you rely on any practice described here. Template
licence: MIT.
