Statistics for Dynamic Pricing of Theatre | by Yaakov Bressler | Towards Data Science

By: Yaakov Bressler & Kelly Carmody
Summary: Dynamic pricing is the practice of adjusting a price to meet its demand, or market value. Given the difficulty of selling 100% of a performance’s tickets and that any unsold tickets immediately expire once a performance starts, dynamic pricing shows promise of lowering ticket prices while increasing revenue for shows. Included are several statistical simulations of pricing scenarios, along with implementable take-aways.
Capacity: The maximum output that a company can produce. In theater, it is measured by percentage of seats filled.
Stochasticity: Owing to random probability while independent of it, related to an underlying pattern or relationship. In this paper, the term is relevant for understanding the effect of scarcity on demand.
Mean Reservation Price: The average price that a group is willing to pay.
Mean Booking Time: The average amount of time before a performance when a group purchases their tickets.
PDF (Probability Density Function): The probability that x will occur. The area of this function is always equal to 1 since the sum of all events will equal 100%.
CDF (Cumulative Distribution Function): The probability that a variable taken at random will be less than or equal to x. Displayed graphically, the slope of a CDF will always move closer to 100% on the right, and closer to 0% on the left.
Lognormal Distribution: A distribution used to measure continuous random quantities when the distribution is believed to be skewed with extreme values in one direction, such as people’s income.
What influences the purchasing of a ticket to theatre?
The cost of a ticket is a serious consideration any potential attendee will consider.
In any microeconomic market, it is assumed that each potential customer has a reservation price of which they will pay below but not exceed. The distribution of reservation price is related to disposable income1, thus behaving in a lognormal fashion.
To demonstrate, assume that the mean reservation price (mrp) of an audience is $65 and the standard deviation is $25.
If pricing economics were normally distributed, customer reserve price would be symmetrically distributed as shown in the below PDF (left). Since customers will complete a purchase if the offered price is below their reserve price, the percentage of paying customers will be the reverse CDF, (below right).
Notably, there are equal number low price customers as there are high. Thus, as the CDF moves from high prices to low, the % of paying customers rises in a symmetrical pattern above and below the median — which is also the inflection point.
Profit can be calculated by multiplying the CDF by the x axis and is discussed further below.
Create this simulation yourself:Here we generate a sample normal distribution with a mean reserve price of 65 and a standard deviation of 25, and plot both a Probability Density Function (PDF) chart and a Cumulative Density Function (CDF) chart.
If pricing economics were log-normally distributed,(as they are) customer reserve price would be asymmetrically distributed as shown in the below PDF (left). As demonstrated, there are far more customers interested in lower prices, with a select minority interested in significantly high prices.
The CDF (below right) demonstrates this trend with an accelerating slope until it softens at its peak — customers want cheaper prices at an exponential rate of increase in demand.
The weight on lower values in a lognormal model will have significant implications in profit models, below.
Create this simulation yourself:Here we generate a sample lognormal distribution by beginning with a sample normal distribution, also with a mean reserve price of 65 and a standard deviation of 25, calculating log values for mu and sigma, and plotting both PDF and CDF charts.
Profit in each of these models is achieved by multiplying the cumulative probabilities (reverse CDF) by their respective prices (x axis) such that: profit = cum_prob * x. It’s worth noting that maximum profit is achieved below the mrp in each scenario, indicating that greater profits are achieved (in uniform scenarios) at lower prices.
Examining the juxtaposition of these profit models, it’s clear that the lognormal scenario is a poorer achiever in the case of uniform pricing.
Upon integration (using sklearn.metrics.auc), a lognormal profit model shows 20% increase in area — signifying that larger profits can be achieved when discriminating between high paying and low paying types.
Notwithstanding, in the lognormal case, profit it maximized nearly 1/2 a standard deviation below the mean — notably lower than the normal case. This is because a lognormal fit assumes that customers want cheaper, rather than more expensive, tickets.
To sum it up: customer reserve price behaves according to a lognormal distribution — meaning that there are significantly more customers who want cheaper prices rather than expensive ones. Profit is maximized at prices below the mrp (1/2 a standard deviation below it, to be exact).
The amount of time until a given performance is especially relevant to potential attendees, especially those planning a vacation.
The rate at which people purchase their tickets follows a stochastic arrival process, a random process which evolves over time while undergoing chance fluctuations in the form of a poisson distribution.
For more info, check out this neat article from the engineering team at Airbnb on this topic: Learning Market Dynamics for Optimal Pricing
To demonstrate, assume that the mean booking time (mbt) of an audience is 7 days (with a max lead time of 60 days) — the standard deviation is not taken into account since the rate is exponential.
According to an exponential fit, the likelihood of purchasing a ticket increases exponentially until the day of a performance, as demonstrated in the below PDF (left). Notably, the likelihood of a purchase occurring earlier than ~30 days is near zero. (Obviously, this can be manipulated through good marketing and decisive strategy, regular tactics used in Broadway.)
The total number of expected sales follows according to the reverse CDF of this distribution (below right). Naturally, gross ticket sales are highest the day of a performance. Notably, 50% of all sales occur after the mbt (7 days).
Create this simulation yourself:This code creates a sample exponential distribution from a mean booking time of 7 days, and plots PDF and CDF charts.
People want what everyone wants.
As a theatre fills up and there are fewer seats available, buzz is generated. The last remaining seats begin to have a much higher value, and so we roughly assume that demand for those seats is compounded thus grows exponentially. While the magnitude of this relationship has to be proven from “live data,” reverse fitting shouldn’t be difficult.
The concept behind the stochastic effect of capacity is related to the psychology of scarcity. Essentially, people want what there is less of. This is why gold and precious gems, amongst others, are valuable.
People want what there is less of.
Several factors that contribute to the scarcity effect are loss aversion, social proof, and anticipated regret (also known as FOMO: fear of missing out). When there are few instances of a product remaining, customers are aware that if they do not act soon, they will lose access to that product, and therefore act to minimize that loss. In a related fashion, the decisions of customers are also informed by anticipating the regret that will follow later if they do not purchase one of those last few tickets. Social proof is related to feelings of power, exclusivity, and unique access to what others cannot attain.
Importantly, customers must be aware of the current capacity in order for this stochastic effect of capacity to appear.
Here’s a great article titled Scarcity in UX: The psychological bias that became the norm about the psychological bias of scarcity and its use in marketing.
There are a variety of other factors that might influence customers to make a purchase. Fan engagement may be a primary motivator of whether a customer chooses to purchase a ticket or not, this can include how loyal they are to a particular performer, creator, or brand. Moreover, a fan’s profile can likely be defined, or rather related, to the number and magnitude of positive or negative experiences they have had with past performances.
The interplay of different factors affecting customer behavior is incredibly complex, and can even include factors such as the weather. For example customers may be more likely to purchase a theatre ticket on a sunny day.
Additional reasons customers might make purchases may include: their desire to display wealth or social status, gain a feeling of security or safety, feel a sense of adventure, attain the promise of health and physical wellness, or of growth or education.
There are certainly others which we won’t cover for the sake of brevity. (If you think of something compelling, leave it as a comment?!)
Each of these factors are intrinsically connected.
As prices rise, the number of people who can afford them decreases. Other factors aside, this results in a decrease in demand — at the rate of the reverse CDF of customer reserve price.
As time of a performance approaches, the number of people interested in making a purchase increases.
As more tickets are sold, available tickets grow scarce and have a compounding stochastic effect on demand. In effect, demand begins to rise.
Since more people want something there is less of (there is an increased demand, but no increase in supply), customers will be willing to pay higher prices.
The rate of this interaction is not as clear as others, since it’s dependent on an adjusted distribution of reservation prices.
The relationship between price and time is complex, being that there are more willing customers as time approaches while at the same time, a low projected capacity will deter ticket goers who will want to pay discount prices on the day of the performance.
The negative effect of low capacity is not discussed in this article.
Putting it all together, the positive effect of time and capacity are shown to greatly enhance demand.
What would happen if you gave away tickets?
Because we’re focusing on the effect capacity, we simplify the demand to be defined by the above mentioned exponential distribution related to booking time.
bookings = get_exp_dist(mbt=7)
Get the probability of n customers purchasing tickets per day. Then get the cumulative probability which represents demand.
probs, days = np.histogram(bookings, bins=range(0,int(bookings.max())), density=False)probs = np.divide(probs, probs.sum())days_prob = dict([(w,p) for w,p in zip(days, probs)])cum_probs = np.cumsum(probs[::-1])[::-1]days_cum_prob = dict([(w,p) for w,p in zip(days, cum_probs)])days_use = days[-2::-1]
Implement various scenarios where a percentage of available tickets are given away for free prior to any customers arriving. Measure the impact this has on daily demand.
# This list represents the percentage of seats given away for free at the start of the trialfor x in [0,0.05,0.1,0.2,0.3, 0.5]:days_dict = {x:{} for x in days_use}for day in days_use:    # A placeholder for when potential customers are affected by additional probabilities    n_potential = 1     demand_reg = days_prob[day]*n_potential# how many customers?    n_cust += demand_reg        # create stochasticity    stoch = (n_cust)**2        days_dict[day]['demand'] = demand_reg    days_dict[day]['stoch'] = stoch    days_dict[day]['demand_stoch'] = demand_reg*(1+stoch)
Measure the impact on cumulative demand — a show’s bottom line.
cum_demands = []cols_x =[]for x in [0,0.05,0.1,0.2,0.3, 0.5]:    values = []n_cust_curr = n_begin = xstoch = 0for day in days_use:        n_potential = 1        demand_rel = days_prob[day]*n_potential# how many customers?        n_cust_curr += demand_rel# create stochasticity        stoch = (n_cust_curr)**2values.append({            'Day':day,            'Stochasticity': stoch,            'Demand': demand_rel,            'Demand_Stoch': demand_rel*(1+stoch)            })values_df = pd.DataFrame(values[::-1])    values_df.set_index('Day', inplace=True)    values_df.sort_index(inplace=True)    values_df['Cum_Demand'] = values_df['Demand'][::-1].cumsum()    values_df['Cum_Demand_Stoch'] = values_df['Demand_Stoch'][::-1].cumsum()        cols_x.append(f'Cum_Demand_Stoch_at_{x}')    cum_demands.append(values_df.Cum_Demand_Stoch)    cum_demands.append(values_df.Cum_Demand)cols_x.append('Cum_Demand (No Stoch)')# ------------------------df_simulation = pd.concat(cum_demands,axis=1)df_simulation.columns = cols_xdf_simulation = df_simulation = df_simulation.reindex(sorted(df_simulation.columns), axis=1)df_simulation.index = df_simulation.index+1df_simulation.head(5)
The cumulative demand of each scenario is plotted. The x-axis is on a logarithmic scale to highlight the spread as time approaches 1.
Demand is not adjusted for profits in that free tickets are not accounted for. To accomplish this, subtract the initial giveaway tickets from the cumulative demand at time = 1.
While, these simulations are theoretical, they do offer the practical suggestion that the financial loss experienced by giving away free tickets for a performance is significantly less than the downstream profit, owing to the stochastic effect on scarcity.
There are a variety of common misconceptions about dynamic pricing.
“Dynamic ticket pricing will just make tickets more expensive and will earn producers more profit at the expense of the average theatre goer.” — Possible Upset Customer
With tickets growing drastically more expensive, nearly doubling in the past two decades, it’s easy to feel that dynamic pricing will force prices even higher and block out the average consumer.
However, dynamic pricing combats this exact effect! When prices become so expensive that they deter people from purchasing, demand is negatively effected — it lowers the number of potential customers. This especially applies to mega-hits like Hamilton, whose inaccessible prices are resulting in a 9% vacancy on its tour in some cities.
A proper pricing strategy should expect to create access for general audiences. Lower prices would compound the value of premium seats, which could be sold for incredible prices (that reflect their incredible value), and drive profits, overall.
“Broadway tickets should not be like the stock market, where everything is changing every second.” — Possible Upset Customer
The forces of supply and demand have a pronounced impact on all marketplaces, especially the stock market, and contribute to fluctuations in prices, the extent of which can sometimes be extreme — as in the case of these unfortunate airline customers, back in 2013.
These forces importantly permeate the secondary market — as in the case of Hamilton tickets being sold at the box office for $200 and resold for $800+.
This arbitrage can be combated by dynamically updating prices to reflect actual demand in a way that smooths reactions in the marketplace to eliminate extreme buying or selling. Further, dynamic pricing decreases the margin and forecast of profits in secondary markets (an essential part of ticket in that they offset projected demand) resulting in decreased buying volume thus stabilized prices.
In sum, prices should not expect to fluctuate in extremes. Further, it is always possible to set an upper limit to pricing or “lock people in” once they start an online purchase.
“It’ll become all about the money.” — Possible Upset Customer
The artistic excellence of live theatre is well known and cherished among theater goers. It’s not unreasonable to be concerned about wheeling capitalists who would in turn dilute their productions for their bottom lines.
This is, however, already happening! As in the case of SpongeBob the Musical whose tour will not provide union contracts or rates for their performers.
It’s only fair that those devoted to artistic excellence (especially the benevolent capitalists!) be enabled to earn profits from their work. Additionally, these profits would likely be reinvested in the product in the form of increased wages, more available work, and more top notch shows!
“I paid all this money to see this show and some schnook next to me got their ticket for pennies on the dollar.” — Possible Upset Customer
Nobody wants to be scammed, especially on a special night out at the theatre. A reasonable concern is that customers will find out the prices their seatmates paid and feel ripped off.
This potential scenario emphasizes the importance of relaying market value to customers. Famed behavioral economist Dan Ariely’s research into The Endowment Effect exemplifies the magnitude of value people will ascribe to their possessions in the case of changing market conditions.
To enhance the experience for both customers in the above scenario, it’s important for a production to communicate (perhaps indirectly) the value of a given seat. An optimistic assumption is that those who purchased their seats below market value will conduct themselves in a manner that will enthuse higher paying customers. (Imagine the excitement of being upgraded from economy to first class on a flight! This excitement is catchy and really fun to be around!)
“It’s a good idea, in theory. But it doesn’t work.” — Possible Upset Customer
Any new technology will be difficult to enact, at first. The productions willing to take risks and implement this tech will soon find themselves at an advantage — thus stimulating a reaction amongst the industry.
“How can you expect these small shows to use this fancy tech when they barely can afford the electric bill!” — Possible Upset Customer
It’s possible to implement very simple dynamic pricing strategies for smaller organizations without complex tools, even the smallest indie theatre company can implement a simple dynamic pricing strategy using two or three manual price brackets or effecting discounts or giveaways at proper timepoints.
Dynamic Pricing can be used to solve some of theatre’s more foundational issues.
Enhancing profitability in theatre would empower industry devotees, and encourage a wider audience reach.
Dynamic pricing could distribute prices more fairly so that price sensitive customers can purchase tickets early, while those willing to pay premium prices can purchase tickets closer to showtime in return for flexibility. This results in increased accessibility for price sensitive customers.
Additionally, ticket giveaways can welcome new audiences to theaters, such as underserved populations — while generating profit. The Ticket In, an organization devoted to just this, aims to provide Broadway tickets to low income NYC residents — a double win!
Parallel to the first aim, if new works could earn higher profits, theatre industry professionals could produce new works that also continuously support upcoming talent.
For a more in depth analysis of these goals, read Reflecting on 6 Months of Leveraging Tech & Data in Theater
From a purely technological and computational level...
The main difficulty in dynamic pricing is cross-market awareness — the capture of supply and demand of ticket prices across primary and secondary markets.
Blockchain backed ticketing promise of solving this difficulty.
Because demand can be described as a probability of purchasing, it’s important to capture all interactions with a ticket prior to and upon purchases.
Machine learning can be used on all these touch points to predict actual purchases thus actualized demand.
Given the time sensitivity of price changes, sophisticated and secure APIs (application programming interface) must exist which can speedily handle large amounts of data which would be transmitted between a ticketing company and pricing firm.
Similar to item 1, because the market is inter-related, it’s important to capture industry wide trends and behaviors. This can be achieved through anonymized and aggregated reports which, however, must be absolutely secure as to not minimize the position of any individual production.
Yijin Liu completed her MFA thesis at Columbia University on this exact topic.
If you’re only going to read one section in this article, let it be this!
Ticket scarcity (i.e. high capacity) has a powerful effect on profits. Rewarding customers for purchasing early (through lower prices, discounts, etc.) will stimulate this effect and generate revenue.
If you’re going to expect an empty seat, give it away for free —and do so as early as possible. This generates ticket scarcity, welcomes a new (or returning) fan, and raises the value for paid tickets.
Offer the best 5–10% of seats as premiums. There are customers who take great satisfaction in purchasing scarce products at high prices, especially when they get to walk past the envious on their way to their seat.
The trust of your customers is essential to transmitting information about market values. Be transparent about your pricing strategy to maintain that trust.
Yaakov: Putting together these simulations and the accompanying article has been a challenging yet satisfying experience — as well as a building block for the work I’m passionate about. I’m happy to share this with all others who might also find this beneficial.
Kelly: The experience of diving headfirst into the field of dynamic ticket pricing has been incredibly exciting for me. It has all felt quite novel, and I’m very enthusiastic about adapting this technological tool which has enormous potential to get theatre out there to more people.
Edited by Danielle van der Eijk.
Authors bios:
Yaakov Bressler is a theatre producer and data scientist focused on how people relate to content in marketing as well as entertainment.
Kelly Carmody is a data scientist with a background in neuroscience, epidemiology, and sociology. She currently translates data on HIV related needs into public policy at Columbia University, and is interested in emotional and behavioral predictive analytics.
Some rights reserved