Arte SheetsLearn. Try. Understand.

Aviation Yield Management & Dynamic Pricing

Belobaba EMSR-a Nested Seat Protection Formula

Calculate Pairwise Littlewood Seat Protections y_13 and y_23 under Exponential High-Fare Demand, Belobaba’s Additive EMSR-a Joint Protection Y_12, and Nested Discount Class Booking Limit.

Scale Littlewood’s two-class rule to multi-bucket fare ladders with Belobaba’s EMSR-a!

Littlewood’s 1972 rule protects high-fare seats against a single discount bucket, yet airline reservation systems sell 10–26 nested booking classes in a shared economy cabin! Peter P. Belobaba (1987, 1989 Operations Research) introduced Expected Marginal Seat Revenue (EMSR-a), computing pairwise Littlewood protection y_ik between EACH higher fare class i (fare f_i, mean late-arriving demand mu_i) and discount class k (fare f_k < f_i) where marginal revenue f_i * P(D_i >= y_ik) equals f_k! For continuous exponential late-booking demand P(D_i >= y) = EXP(-y / mu_i), pairwise protection solves cleanly in closed form as y_ik = mu_i * LN(f_i / f_k), summing to Total Nested Protection Y_12_vs_3 = ROUND(y_13 + y_23, 0) and Discount Class-3 Booking Limit BL_3 = MAX(0, Cabin_Capacity - Y_12_vs_3)!

Verify on a 3-Bucket Narrowbody Cabin—Class1_Flex_Fare f_1 = $400 (B2), Class1_Mean_Demand mu_1 = 20 seats (B3), Class2_Standard_Fare f_2 = $200 (B4), Class2_Mean_Demand mu_2 = 30 seats (B5), Class3_Discount_Fare f_3 = $100 (B6), and Shared_Cabin_Capacity = 150 seats (B7): Pairwise Class-1 Protection y_13 is 20 * LN(400 / 100) = 27.73 seats (E2); Pairwise Class-2 Protection y_23 is 30 * LN(200 / 100) = 20.79 seats (E3); Additive EMSR-a Joint Protection is ROUND(27.73 + 20.79, 0) = 49 seats (E4); leaving Nested Class-3 Booking Limit BL_3 = 150 - 49 = 101 seats (E5)!

Belobaba EMSR-a Metric (f1=$400/20, f2=$200/30, f3=$100, 150-Seat Cabin)FormulaVerified Output
Class 1 vs Class 3 Protection y_13mu_1 * LN(f_1 / f_3)27.73 seats (13.86 @ f3=$200)
Class 2 vs Class 3 Protection y_23mu_2 * LN(f_2 / f_3)20.79 seats (0.00 @ f3=$200)
EMSR-a Joint Protection Y_12ROUND(y_13 + y_23, 0)49 seats (14 @ f3=$200)
Nested Class-3 Booking Limit BL_3MAX(0, Cabin_Capacity - Y_12)101 seats (136 @ f3=$200)

Belobaba EMSR-a Joint Protection & Nested Booking Limit Formula

Enforce strict nested fare ordering f_1 > f_2 >= f_3 > 0 (note why EMSR-b later pooled weighted fares + variances: when f_2 approaches f_3, EMSR-a avoids negative LN by requiring f_2 >= f_3)!

=LET(f_c1, B2, m_c1, B3, f_c2, B4, m_c2, B5, f_c3, B6, cp_s, B7, IF(OR(f_c3 <= 0, f_c2 < f_c3, f_c1 <= f_c2, m_c1 < 0, m_c2 < 0, cp_s < 1), "Invalid Nested Fare Ladder", LET(y_13, m_c1 * LN(f_c1 / f_c3), y_23, m_c2 * LN(f_c2 / f_c3), pr_t, ROUND(y_13 + y_23, 0), MAX(0, cp_s - pr_t))))

Collapsed Fare-Gap Boundary Check (f_3 = f_2 = $200)

Raise Discount Fare f_3 to $200 in cell B6: Class-2 protection y_23 drops to 30 * LN(1) = 0.00, Y_12 drops to 14 seats, and BL_3 opens to 136 seats!

=IF(ISTEXT(E5), E5, ROUND(B3 * LN(B2 / B6) + B5 * LN(B4 / B6), 0))

Try the example

Use the original values or change them to test your understanding.

Further reading