Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Economic Model

PolicyEngine

Overview

This analysis uses a partial equilibrium model with heterogeneous consumers:

Consumer Side

Heterogeneous Preferences

Following Wolfe et al. (1998), who found that 41% of male stadium attendees tested positive for alcohol at MLB games, we model two distinct consumer types. Non-drinkers comprise 60% of attendees and have low beer preference (αbeer=1.0\alpha_{beer} = 1.0) but high value for the stadium experience (αexperience=3.0\alpha_{experience} = 3.0). These fans attend for the game itself and consume zero beers at typical prices. Drinkers comprise the remaining 40% with substantially higher beer preference (αbeer=43.75\alpha_{beer} = 43.75) calibrated to match observed consumption of 2.5 beers at $12.50. Their stadium experience value is moderate (αexperience=2.5\alpha_{experience} = 2.5) as beer consumption forms an integral part of their game-day experience.

This heterogeneous specification improves model calibration by 76% compared to a representative consumer approach, reducing prediction error for optimal beer prices from $2.09 to $0.50. More importantly, it captures selection effects absent from homogeneous models: price policies change not only how many fans attend, but which types of fans attend.

Utility Function (Type-Specific)

Consumer type ii maximizes:

Ui(B,T)=αbeeriln(B+1)+αexperienceiln(T+1)+YU_i(B, T) = \alpha_{beer}^i \cdot \ln(B + 1) + \alpha_{experience}^i \cdot \ln(T + 1) + Y

Where:

Aggregate Demand

Total beer consumption:

Qtotal=i{Non,Drinker}shareiAi(PT,PB)Bi(PB)Q_{total} = \sum_{i \in \{Non, Drinker\}} share_i \cdot A_i(P_T, P_B) \cdot B_i(P_B)

Where:

Total attendance:

Atotal=ishareiAi(PT,PB)A_{total} = \sum_i share_i \cdot A_i(P_T, P_B)

Calibration:

Why heterogeneity matters:

  1. Better calibration: Predicts optimal = $12.51 (vs $12.50 observed, error: 0.08%)

  2. Selection effects: Price changes affect WHO attends, not just how many

  3. Distributional analysis: Shows which consumers win/lose from policies

Stadium Side

Revenue

Stadium receives after-tax price:

Pstadium=Pconsumer1+tsalestexciseP_{stadium} = \frac{P_{consumer}}{1 + t_{sales}} - t_{excise}

Where:

At Pconsumer=$12.50P_{consumer} = \text{\$}12.50:

Costs

Production costs:

Internalized costs (convex):

Cintern(Q)=250(Q1000)2C_{intern}(Q) = 250 \cdot \left(\frac{Q}{1000}\right)^2

This captures:

Profit Maximization

maxPT,PBπ=PTA(PT,PB)+Pstadium(PB)B(PB)A(PT,PB)C\max_{P_T, P_B} \pi = P_T \cdot A(P_T, P_B) + P_{stadium}(P_B) \cdot B(P_B) \cdot A(P_T, P_B) - C

Subject to:

Social Welfare

SW=CS+PSEexternalSW = CS + PS - E_{external}

Where:

Consumer Surplus Derivation

For each consumer type ii, consumer surplus is the integral of willingness-to-pay above market price. With semi-log demand, the Marshallian consumer surplus is:

CSi=PQi(p)dpCS_i = \int_{P}^{\infty} Q_i(p) dp

For our semi-log specification where Qi(P)=Q0eλP(PP0)Q_i(P) = Q_0 \cdot e^{-\lambda_P (P - P_0)}, this integrates to:

CSi=Qi(P)λPCS_i = \frac{Q_i(P)}{\lambda_P}

The intuition: 1/λP1/\lambda_P measures price sensitivity, so surplus is current quantity divided by that sensitivity. More inelastic demand (smaller λP\lambda_P) implies higher surplus per unit.

Aggregate consumer surplus:

CS=ishareiAi(PT,PB)[CSticket,i+CSbeer,i]CS = \sum_i share_i \cdot A_i(P_T, P_B) \cdot \left[ CS_{ticket,i} + CS_{beer,i} \right]

The model computes surplus at observed prices and compares across policy scenarios. Since we use ordinal utility, only changes in consumer surplus are meaningful for welfare comparisons.

Implementation note: The code implementation (src/model.py) uses a constant-elasticity approximation for computational efficiency, with adjustments for consumer heterogeneity. For policy comparisons, the qualitative conclusions (consumption increases, welfare trade-offs) are robust to the choice of surplus formula, though exact magnitudes should be interpreted with caution.

External Costs

Eexternal=($2.50+$1.50)Q=$4.00QE_{external} = (\text{\$}2.50 + \text{\$}1.50) \cdot Q = \text{\$}4.00 \cdot Q

See Background section for detailed derivation of the \2.50crimeand2.50 crime and \\1.50 health externality estimates.

Key Insight

Stadium maximizes PSPS (profit) which already accounts for internalized costs.

Society cares about SWSW which subtracts external costs NOT internalized by stadium.

Only the uninternalized external costs ($4.00/beer for crime and health) represent a potential market failure. For standard textbook treatment of sports economics pricing, see Leeds et al. (2022).

References
  1. Wolfe, J., Martinez, R., & Scott, W. A. (1998). Baseball and Beer: An Analysis of Alcohol Consumption Patterns Among Male Spectators at Major-League Sporting Events. Annals of Emergency Medicine, 31(5), 629–632. 10.1016/S0196-0644(98)70209-4
  2. Leeds, M. A., von Allmen, P., & Matheson, V. A. (2022). The Economics of Sports (7th ed.). Routledge. 10.4324/9781003317708